拉勾网数据分析¶
在拉勾求职网,以 机器学习 关键字,分别对北京,上海,广州,深圳,杭州五个城市进行搜索,得到的数据如下,现在做个简单分析。
In [41]: train = pd.read_csv('./lagou/all.csv') In [42]: train.head() Out[42]:| businessZones | city | companyFullName | companyId | companyLabelList | companyLogo | companyShortName | companySize | createTime | deliver | ... | promotionScoreExplain | publisherId | resumeProcessDay | resumeProcessRate | salary | score | secondType | stationname | subwayline | workYear | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 西直门,动物园,官园 | 北京 | 北京沃丰时代数据科技有限公司 | 25439 | 股票期权,高成长,云服务,高并发 | i/image/M00/5A/F5/CgpFT1mNZfWAXLGYAAAM0qJze1U9... | Udesk-企业级智能客服平台 | 150-500人 | 2018-06-22 09:40:29 | 0 | ... | NaN | 2674637 | 1 | 100 | 30k-50k | 0 | 数据开发 | 车公庄西 | 2号线 | 3-5年 |
| 1 | 团结湖,三里屯,工体 | 北京 | 北京瓴岳信息技术有限公司 | 110502 | 14薪,弹性工作,零食水果,午餐晚餐 | i/image/M00/8A/D7/Cgp3O1h3K6OAKU4FAACWYn0eTvU4... | 洋钱罐 | 150-500人 | 2018-06-21 10:32:16 | 0 | ... | NaN | 6722010 | 1 | 87 | 15k-30k | 0 | 数据开发 | 团结湖 | 10号线 | 1-3年 |
| 2 | NaN | 北京 | 北京飞拓互联科技有限公司 | 21732 | 绩效奖金,岗位晋升,股票期权,扁平管理 | i/image2/M00/2E/FE/CgotOVo4jPCAY3gDAAAOOITNEpw... | FitTime睿健时代 | 150-500人 | 2018-06-22 13:17:47 | 0 | ... | NaN | 248588 | 0 | 0 | 30k-50k | 0 | 数据开发 | 望京东 | 15号线 | 3-5年 |
| 3 | NaN | 北京 | 北京京东世纪贸易有限公司 | 18139 | 五险一金,带薪年假,免费班车,定期体检 | i/image2/M00/13/95/CgotOVnwNqeAFbmnAABaH5Q_vVE... | 京东集团 | 2000人以上 | 2018-06-20 09:47:02 | 0 | ... | NaN | 8643437 | 1 | 84 | 30k-60k | 0 | 数据开发 | NaN | NaN | 3-5年 |
| 4 | 望京,来广营 | 北京 | 北京数美时代科技有限公司 | 82991 | 年底双薪,大数据,带薪年假,通讯津贴 | i/image/M00/76/C2/CgqKkVg2fVCASEreAABS01Upo_A2... | 数美 | 150-500人 | 2018-06-22 14:45:02 | 0 | ... | NaN | 2117266 | 1 | 100 | 25k-50k | 0 | 数据开发 | 来广营 | 14号线东段 | 1-3年 |
5 rows × 43 columns
In [43]: train.describe() Out[43]:| companyId | deliver | explain | gradeDescription | isSchoolJob | lastLogin | latitude | longitude | pcShow | plus | positionId | promotionScoreExplain | publisherId | resumeProcessDay | resumeProcessRate | score | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| count | 708.000000 | 708.0 | 0.0 | 0.0 | 708.000000 | 7.080000e+02 | 699.000000 | 699.000000 | 708.0 | 0.0 | 7.080000e+02 | 0.0 | 7.080000e+02 | 708.000000 | 708.000000 | 708.0 |
| mean | 90401.190678 | 0.0 | NaN | NaN | 0.087571 | 1.529481e+12 | 32.676793 | 106.300014 | 0.0 | NaN | 4.109046e+06 | NaN | 5.169087e+06 | 0.823446 | 41.016949 | 0.0 |
| std | 98254.746476 | 0.0 | NaN | NaN | 0.282869 | 1.353363e+09 | 14.779712 | 33.127943 | 0.0 | NaN | 5.797704e+05 | NaN | 3.432063e+06 | 0.789724 | 42.285515 | 0.0 |
| min | 38.000000 | 0.0 | NaN | NaN | 0.000000 | 1.498810e+12 | 0.000000 | 0.000000 | 0.0 | NaN | 9.294060e+05 | NaN | 2.081000e+03 | 0.000000 | 0.000000 | 0.0 |
| 25% | 7004.250000 | 0.0 | NaN | NaN | 0.000000 | 1.529638e+12 | 30.183515 | 114.033168 | 0.0 | NaN | 3.846509e+06 | NaN | 1.979568e+06 | 0.000000 | 0.000000 | 0.0 |
| 50% | 50702.000000 | 0.0 | NaN | NaN | 0.000000 | 1.529657e+12 | 39.904592 | 116.344462 | 0.0 | NaN | 4.256552e+06 | NaN | 5.726660e+06 | 1.000000 | 20.500000 | 0.0 |
| 75% | 144037.000000 | 0.0 | NaN | NaN | 0.000000 | 1.529669e+12 | 39.994260 | 116.522870 | 0.0 | NaN | 4.567062e+06 | NaN | 8.264044e+06 | 1.000000 | 94.250000 | 0.0 |
| max | 401537.000000 | 0.0 | NaN | NaN | 1.000000 | 1.529690e+12 | 116.331398 | 121.993410 | 0.0 | NaN | 4.760709e+06 | NaN | 1.108768e+07 | 8.000000 | 100.000000 | 0.0 |
如上信息,共计有708个招聘职位,每个职位有43个属性,其中有缺失值。下面对其中比较重要的信息进行可视化分析。
不同城市的职位数目¶
In [44]: job_num = train['city'].value_counts() In [45]: job_num Out[45]:北京 394 上海 125 深圳 103 杭州 65 广州 21 Name: city, dtype: int64In [46]: job_num.plot.bar() Out[46]:
<matplotlib.axes._subplots.AxesSubplot at 0x1a16eb5ba8>
对照上图,可以看到五个城市的职位数目区别,其中北京比其他四个城市的机器学习岗位加起来都多,如果想从事机器学习方面的工作,那么北京的机会会更多,同时能学到的东西也会更多。
学历要求¶
In [47]: education = train['education'].value_counts() In [48]: education Out[48]:本科 455 硕士 219 不限 20 博士 9 大专 5 Name: education, dtype: int64In [49]: education.plot.bar() Out[49]:
<matplotlib.axes._subplots.AxesSubplot at 0x1a150d6748>
如上,大部分要求的还是本科生,比其他学历加起来的总和还要多,说明本科也可以从事机器学习工作,取决于自身的知识和努力,当然,读个研究生最好。毕竟本科生毕业后直接从事机器学习的人不多,有大部分是转行的,因此也需要在工作中付出更多的努力。
In [13]: train.groupby(['city','education']).size() Out[13]:city education
上海 不限 3
博士 2
大专 3
本科 74
硕士 43
北京 不限 10
博士 3
本科 269
硕士 112
广州 本科 12
硕士 9
杭州 不限 5
博士 2
本科 39
硕士 19
深圳 不限 2
博士 2
大专 2
本科 61
硕士 36
dtype: int64 In [60]: # 不同城市对学历的要求 g = sns.FacetGrid(train, col='city', size=4, aspect=1) g.map(plt.hist, 'education') Out[60]:
<seaborn.axisgrid.FacetGrid at 0x1a1e5dcda0>
工作经验的要求¶
In [61]: work_year = train['workYear'].value_counts() In [62]: work_year.plot.bar() Out[62]:<matplotlib.axes._subplots.AxesSubplot at 0x1a1e9d46d8>
工作3-5年的人,有比较丰富的经验,确实是各公司青睐的工作人员。其中1年以下, 10年以上机会没有,侧面说明不呆满一年跳槽也比较难找工作,10年以上也基本没有合适的岗位。
In [75]: train.groupby(['city','workYear']).size() Out[75]:city workYear
上海 1-3年 28
3-5年 56
5-10年 11
不限 22
应届毕业生 8
北京 1-3年 105
10年以上 1
1年以下 2
3-5年 153
5-10年 35
不限 66
应届毕业生 32
广州 1-3年 8
3-5年 8
5-10年 1
不限 3
应届毕业生 1
杭州 1-3年 14
1年以下 1
3-5年 18
5-10年 4
不限 24
应届毕业生 4
深圳 1-3年 36
1年以下 1
3-5年 43
5-10年 5
不限 15
应届毕业生 3
dtype: int64
薪资水平及各因素的影响¶
In [80]: salary = train['salary'].value_counts()因为薪水范围太多,所以这里做个简单处理,只取最低薪资
In [92]: train['salary_simple'] = [i[:2] for i in train['salary']] In [93]: # 简单进行四舍五入 salary_simple = [] for s in train['salary_simple']: if 'k' in s or 'K' in s: salary_simple.append(0) else: salary_simple.append(round(int(s))) # train.loc[index, 'city'] # train['salary_simple'] = salary_simple In [96]: for i, value in enumerate(salary_simple): if value < 10: salary_simple[i] = 0 elif 10 <= value < 20: salary_simple[i] = 15 elif 20 <= value < 30: salary_simple[i] = 25 elif 30 <= value < 40: salary_simple[i] = 35 else: salary_simple[i] = 45 In [98]: train['salary_simple'] = salary_simple In [99]: salary_simple = train['salary_simple'].value_counts() In [100]: salary_simple Out[100]:25 301 15 220 35 113 0 48 45 26 Name: salary_simple, dtype: int64
不同的城市与薪资的关系
In [102]: # 不同城市对学历的要求 g = sns.FacetGrid(train, col='city', size=4, aspect=1) g.map(plt.hist, 'salary_simple') Out[102]:<seaborn.axisgrid.FacetGrid at 0x1a2063fac8>
公司情况¶
In [103]: companyFullName = train['companyShortName'].value_counts() In [104]: companyFullName Out[104]:美团点评 31
百度 28
蚂蚁金服集团 18
新浪微博 18
腾讯 17
数美 15
滴滴出行 11
京东集团 10
Gridsum 国双 9
小米 9
同盾科技 9
好大夫在线 7
GFT 6
云脑科技 6
晶泰科技 6
永洪科技 5
顺丰科技有限公司 5
快手 5
洋钱罐 5
普林科技 5
Udesk-企业级智能客服平台 5
七牛云 5
叽里呱啦 4
云之梦科技 4
Trusfort芯盾时代 4
马上金融 4
人人车 4
创新工场AI工程院 4
追一科技 4
丁香园 4
..
顺网科技 1
脉景 1
八分量 1
乐逗游戏 1
安恒信息 1
大唐移动 1
皇包车 1
中兴软创 1
嘉华丽康 1
小象科技 1
Face++ 1
掌众集团 1
杭州默安科技有限公司 1
考拉阅读 1
挖财 1
GrowingIO 1
嘉德 1
OMAHA 开放医疗与健康联盟 1
摩若普利 1
涂鸦智能 1
上元教育集团 1
INK 银客集团 1
软件系统开发 测试平台运维服务 1
阿拉丁 1
达内集团 1
群友科技 1
真格基金 1
梅卡曼德 1
弘金地体育 1
虎博科技 1
Name: companyShortName, Length: 316, dtype: int64 In [105]: companySize = train['companySize'].value_counts() In [106]: companySize Out[106]:
2000人以上 243 500-2000人 134 150-500人 134 50-150人 113 15-50人 72 少于15人 12 Name: companySize, dtype: int64In [107]: financeStage = train['financeStage'].value_counts() In [108]: financeStage Out[108]:
上市公司 130 不需要融资 124 B轮 116 D轮及以上 103 A轮 94 C轮 70 天使轮 41 未融资 30 Name: financeStage, dtype: int64
职位情况¶
In [111]: positionName = train['positionName'].value_counts() positionName.head(10) Out[111]:机器学习工程师 83 机器学习算法工程师 63 机器学习 21 高级机器学习工程师 10 高级机器学习算法工程师 7 机器学习研究员 7 机器学习专家 6 机器学习研发工程师 6 机器学习实习生 6 机器学习平台开发工程师 6 Name: positionName, dtype: int64In [113]: secondType = train['secondType'].value_counts() secondType.head(10) Out[113]:
数据开发 585 后端开发 70 软件开发 21 风控 5 [后端开发] 4 产品设计/需求分析 4 证券/期货 4 高端技术职位 3 前端开发/移动开发 3 数据分析 2 Name: secondType, dtype: int64
在机器学习方面的应用¶
In [124]: labels = [] for label in train['industryLables']: if type(label) == str: labels.extend(label.split(',')) pd.Series(labels).value_counts().head(20) Out[124]:算法 100 数据挖掘 95 深度学习 73 金融 68 广告营销 62 大数据 59 人工智能 31 数据分析 27 医疗健康 26 Java 18 云计算 18 NLP 15 视频 15 python 15 自然语言处理 13 高级 13 模式识别 11 推荐 10 征信 9 信息安全 9 dtype: int64
boss直聘数据分析¶
In [190]: train = pd.read_csv('./boss/all.csv') In [191]: train # 共计1425条数据,其中有一部分不相关的工作 Out[191]:| company | education | experience | location | position | salary | |
|---|---|---|---|---|---|---|
| 0 | 高德地图 | 本科 | 3-5年 | 北京 | Android | 20k-35k |
| 1 | 优信集团 | 本科 | 1-3年 | 北京 | 数据分析师 | 10k-12k |
| 2 | 腾讯 | 硕士 | 1-3年 | 北京 | 微信推荐机器学习算法工程师 | 18k-36k |
| 3 | 百度在线 | 本科 | 5-10年 | 北京 | Java工程师 | 15k-30k |
| 4 | KuickDeal | 本科 | 5-10年 | 北京 | 高级Java开发工程师 | 16k-24k |
| 5 | 医渡云 | 硕士 | 不限 | 北京 | 数据挖掘实习生 | 4k-5k |
| 6 | 百度 | 本科 | 不限 | 北京 | 高级算法工程师 | 20k-40k |
| 7 | 蚂蚁金服 | 本科 | 3-5年 | 北京 | 高级算法工程师/专家 上海、杭州、北京 | 15k-30k |
| 8 | 赋华同创 | 本科 | 3-5年 | 北京 | 人脸识别\\目标识别算法工程师 | 25k-50k |
| 9 | 汉云信通技术 | 本科 | 3-5年 | 北京 | 自然语言处理 | 17k-25k |
| 10 | 搜狗 | 硕士 | 3-5年 | 北京 | 购物搜索-搜索排序研究员-北京-04013 | 25k-50k |
| 11 | 软通动力 | 大专 | 1-3年 | 北京 | 高级java开发工程师 | 13k-16k |
| 12 | 知乎 | 本科 | 应届生 | 北京 | 算法实习生 | 5k-6k |
| 13 | 中科院自动化所 | 硕士 | 不限 | 北京 | 数据解析与深度学习工程师-海外专场 | 8k-10k |
| 14 | hydsoft | 本科 | 1-3年 | 北京 | AI项目前端开发工程师 | 10k-18k |
| 15 | 万物超体 | 硕士 | 应届生 | 北京 | 人工智能实习生 | 3k-4k |
| 16 | 赋华同创 | 本科 | 3-5年 | 北京 | 语音识别算法工程师 | 20k-40k |
| 17 | 车晓科技 | 本科 | 3-5年 | 北京 | 数据建模算法工程师 | 13k-23k |
| 18 | 万物超体 | 硕士 | 应届生 | 北京 | Python 数据工程师 实习 | 3k-4k |
| 19 | DataVisor | 硕士 | 3-5年 | 北京 | 数据模型工程师 | 23k-45k |
| 20 | 精准沟通传媒 | 本科 | 1-3年 | 北京 | 大数据开发 | 8k-16k |
| 21 | 北京国翼天德 | 本科 | 3-5年 | 北京 | 图像算法工程师 | 20k-40k |
| 22 | 芒果电单车 | 硕士 | 1-3年 | 北京 | 图像算法工程师 | 15k-25k |
| 23 | VIPKID | 本科 | 不限 | 北京 | 机器学习工程师 | 20k-40k |
| 24 | 北京联达动力股份公司 | 本科 | 3-5年 | 北京 | 深度学习~医疗图像筛查ai应用研发工程师 | 20k-40k |
| 25 | 玖富 | 本科 | 3-5年 | 北京 | 机器学习算法工程师 | 25k-45k |
| 26 | 小红书 | 本科 | 3-5年 | 北京 | 高级算法工程师 | 30k-50k |
| 27 | 慧博融信 | 本科 | 3-5年 | 北京 | AI前端开发工程师 | 12k-20k |
| 28 | 芯智引擎 | 本科 | 不限 | 北京 | nlp实习生 | 15k-30k |
| 29 | 滴滴出行 | 本科 | 3-5年 | 北京 | 数据运营分析专家 | 20k-40k |
| ... | ... | ... | ... | ... | ... | ... |
| 1395 | 阿里巴巴集团 | 本科 | 3-5年 | 杭州 | 美术设计师(2D/3D) | 15k-30k |
| 1396 | Tiki | 不限 | 不限 | 杭州 | 3D与视觉算法工程师 | 15k-30k |
| 1397 | 垒亿资管 | 硕士 | 应届生 | 杭州 | 数量金融工程师 | 9k-17k |
| 1398 | 盈盈理财 | 硕士 | 5-10年 | 杭州 | 算法专家 | 25k-40k |
| 1399 | 盈盈理财 | 硕士 | 3-5年 | 杭州 | 自然语言处理 | 15k-25k |
| 1400 | 盈盈理财 | 本科 | 3-5年 | 杭州 | 数据挖掘 | 15k-30k |
| 1401 | 阿里巴巴集团 | 硕士 | 不限 | 杭州 | 算法专家 | 15k-30k |
| 1402 | 阿里巴巴集团 | 本科 | 3-5年 | 杭州 | P7 C++技术专家 | 15k-30k |
| 1403 | 菜鸟网络 | 本科 | 应届生 | 杭州 | 19届校招内推(数据) | 5k-6k |
| 1404 | 蚂蚁金服 | 本科 | 3-5年 | 杭州 | 高级java开发工程师 | 20k-40k |
| 1405 | 阿里巴巴集团 | 本科 | 3-5年 | 杭州 | 算法工程师 | 20k-40k |
| 1406 | 杭州数空科技有限公司 | 本科 | 不限 | 杭州 | 算法工程师 | 10k-20k |
| 1407 | 蚂蚁金服 | 本科 | 1-3年 | 杭州 | JAVA 高级开发工程师 | 20k-30k |
| 1408 | 麦歌算法 | 硕士 | 1-3年 | 杭州 | 算法研究员 | 20k-30k |
| 1409 | 杭州明霖 | 本科 | 3-5年 | 杭州 | 高级数据挖掘工程师 | 20k-40k |
| 1410 | 歌特网络科技 | 硕士 | 5-10年 | 杭州 | 数据科学家 | 50k-51k |
| 1411 | 阿里巴巴集团 | 本科 | 3-5年 | 杭州 | Java技术专家 | 20k-30k |
| 1412 | 阿里巴巴集团 | 本科 | 1年以内 | 杭州 | 高级java研发工程师 | 20k-21k |
| 1413 | 菜鸟网络 | 本科 | 1-3年 | 杭州 | 机器学习 | 20k-40k |
| 1414 | 天壤智能 | 本科 | 1-3年 | 杭州 | 人工智能研发工程师 | 15k-30k |
| 1415 | 蚂蚁金服 | 本科 | 3-5年 | 杭州 | 高级测试开发工程师 / 测试专家 | 20k-40k |
| 1416 | 盈盈理财 | 本科 | 3-5年 | 杭州 | 数据挖掘 | 15k-25k |
| 1417 | 酷家乐 | 本科 | 不限 | 杭州 | Java工程师(渲染方向) | 15k-30k |
| 1418 | 析牛科技 | 本科 | 3-5年 | 杭州 | 量化投资策略研发 | 20k-40k |
| 1419 | 天猫 | 本科 | 3-5年 | 杭州 | web前端工程师 | 20k-40k |
| 1420 | 东经科技 | 本科 | 1-3年 | 杭州 | Java开发工程师 | 7k-14k |
| 1421 | 杭州数澜科技有限公司 | 本科 | 不限 | 杭州 | 大数据平台研发工程师 | 15k-25k |
| 1422 | 酷家乐 | 本科 | 1-3年 | 杭州 | 智能算法工程师 | 25k-40k |
| 1423 | 酷家乐 | 本科 | 1-3年 | 杭州 | 机器学习算法工程师 | 18k-35k |
| 1424 | 歌特网络科技 | 本科 | 3-5年 | 杭州 | 算法工程师 | 35k-70k |
1425 rows × 6 columns
因为数据属性不多,还是按照上述的方式简单统计一下
boss直聘的搜索范围比较广,以机器学习为关键字,会搜索到一些相关的职位。下面简单做下统计:
In [192]: key = ['机器','学习','算法'] #留下包含这3个词的职位 In [194]: # 删除包含某些指定字符的行 train = train[train['position'].str.contains('算法|学习|机器',regex=True)] train Out[194]:| company | education | experience | location | position | salary | |
|---|---|---|---|---|---|---|
| 2 | 腾讯 | 硕士 | 1-3年 | 北京 | 微信推荐机器学习算法工程师 | 18k-36k |
| 6 | 百度 | 本科 | 不限 | 北京 | 高级算法工程师 | 20k-40k |
| 7 | 蚂蚁金服 | 本科 | 3-5年 | 北京 | 高级算法工程师/专家 上海、杭州、北京 | 15k-30k |
| 8 | 赋华同创 | 本科 | 3-5年 | 北京 | 人脸识别\\目标识别算法工程师 | 25k-50k |
| 12 | 知乎 | 本科 | 应届生 | 北京 | 算法实习生 | 5k-6k |
| 13 | 中科院自动化所 | 硕士 | 不限 | 北京 | 数据解析与深度学习工程师-海外专场 | 8k-10k |
| 16 | 赋华同创 | 本科 | 3-5年 | 北京 | 语音识别算法工程师 | 20k-40k |
| 17 | 车晓科技 | 本科 | 3-5年 | 北京 | 数据建模算法工程师 | 13k-23k |
| 21 | 北京国翼天德 | 本科 | 3-5年 | 北京 | 图像算法工程师 | 20k-40k |
| 22 | 芒果电单车 | 硕士 | 1-3年 | 北京 | 图像算法工程师 | 15k-25k |
| 23 | VIPKID | 本科 | 不限 | 北京 | 机器学习工程师 | 20k-40k |
| 24 | 北京联达动力股份公司 | 本科 | 3-5年 | 北京 | 深度学习~医疗图像筛查ai应用研发工程师 | 20k-40k |
| 25 | 玖富 | 本科 | 3-5年 | 北京 | 机器学习算法工程师 | 25k-45k |
| 26 | 小红书 | 本科 | 3-5年 | 北京 | 高级算法工程师 | 30k-50k |
| 30 | 金数信息科技 | 本科 | 3-5年 | 北京 | 推荐算法工程师(北京) | 20k-40k |
| 35 | 中国软件 | 本科 | 3-5年 | 北京 | python大数据平台/机器学习算法系统架构师 | 20k-30k |
| 38 | 阅文集团 | 本科 | 3-5年 | 北京 | 算法/业务研发工程师 | 25k-50k |
| 39 | 同程艺龙 | 硕士 | 应届生 | 北京 | 算法工程师 | 10k-20k |
| 43 | 爱语吧 | 硕士 | 1-3年 | 北京 | 机器学习 | 15k-20k |
| 46 | 滴滴出行 | 本科 | 3-5年 | 北京 | 算法工程师(生态方向) (J171124015) | 20k-40k |
| 52 | DataVisor | 硕士 | 3-5年 | 北京 | 数据挖掘算法工程师 | 28k-43k |
| 55 | 趣店 | 本科 | 3-5年 | 北京 | 风控高级算法工程师 | 30k-60k |
| 56 | 趣店 | 本科 | 3-5年 | 北京 | 高级算法策略工程师/算法策略架构师 | 30k-60k |
| 57 | 武汉佰钧成 | 大专 | 3-5年 | 北京 | 算法工程师 | 15k-25k |
| 58 | 今日头条 | 本科 | 不限 | 北京 | 算法实习生 - 核心广告系统 | 4k-8k |
| 59 | 杉数科技 | 硕士 | 不限 | 北京 | 算法工程师(运筹优化或机器学习方向) | 15k-30k |
| 60 | 百度 | 本科 | 1年以内 | 北京 | 推荐算法工程师 | 15k-30k |
| 62 | 微店 | 硕士 | 1-3年 | 北京 | 风控算法工程师 | 25k-50k |
| 63 | 百度 | 本科 | 3-5年 | 北京 | 机器学习算法高级工程师 | 30k-60k |
| 73 | 小觅智能 | 不限 | 1-3年 | 北京 | FPGA图像算法 | 18k-36k |
| ... | ... | ... | ... | ... | ... | ... |
| 1345 | 天猫 | 本科 | 3-5年 | 杭州 | 智能算法工程师 | 20k-40k |
| 1346 | 天猫 | 本科 | 3-5年 | 杭州 | 图像算法工程师 | 20k-40k |
| 1347 | 51信用卡管家 | 本科 | 1-3年 | 杭州 | 深度学习 | 25k-50k |
| 1350 | 翼米网络 | 本科 | 1年以内 | 杭州 | 风控算法工程师 | 3k-6k |
| 1351 | 翼米网络 | 本科 | 1年以内 | 杭州 | 算法工程师 | 3k-6k |
| 1356 | 安脉盛 | 本科 | 不限 | 杭州 | 自然语言处理算法工程师 | 15k-25k |
| 1357 | 安脉盛 | 本科 | 不限 | 杭州 | 人工智能算法工程师 | 15k-25k |
| 1358 | 杭州蒲公英数据科技 | 大专 | 1-3年 | 杭州 | 风控建模(机器学习方向) | 13k-25k |
| 1363 | 华云科技 | 本科 | 1-3年 | 杭州 | 数据挖掘算法工程师 | 8k-16k |
| 1365 | 阿里集团 | 本科 | 1-3年 | 杭州 | 推荐算法 | 30k-60k |
| 1366 | 网易游戏 | 硕士 | 3-5年 | 杭州 | 资深计算机视觉算法工程师 | 25k-35k |
| 1367 | 会友科技 | 硕士 | 3-5年 | 杭州 | 图像算法 | 20k-30k |
| 1368 | 橙鹰 | 硕士 | 3-5年 | 杭州 | NLP算法专家 | 25k-50k |
| 1373 | 酷家乐 | 本科 | 3-5年 | 杭州 | 智能算法工程师 | 25k-40k |
| 1376 | 数美 | 硕士 | 不限 | 杭州 | 机器学习(实习/校招) | 4k-6k |
| 1377 | 数为科技 | 硕士 | 3-5年 | 杭州 | 图像算法 | 25k-40k |
| 1385 | 网易 | 硕士 | 不限 | 杭州 | 高级/资深广告算法工程师 | 20k-35k |
| 1386 | 51信用卡管家 | 本科 | 1-3年 | 杭州 | 算法工程师 | 15k-30k |
| 1391 | 桃树科技 | 硕士 | 1-3年 | 杭州 | 资深算法工程师(杭州) | 20k-40k |
| 1393 | 结构洞 | 硕士 | 不限 | 杭州 | AI 算法师 | 15k-25k |
| 1396 | Tiki | 不限 | 不限 | 杭州 | 3D与视觉算法工程师 | 15k-30k |
| 1398 | 盈盈理财 | 硕士 | 5-10年 | 杭州 | 算法专家 | 25k-40k |
| 1401 | 阿里巴巴集团 | 硕士 | 不限 | 杭州 | 算法专家 | 15k-30k |
| 1405 | 阿里巴巴集团 | 本科 | 3-5年 | 杭州 | 算法工程师 | 20k-40k |
| 1406 | 杭州数空科技有限公司 | 本科 | 不限 | 杭州 | 算法工程师 | 10k-20k |
| 1408 | 麦歌算法 | 硕士 | 1-3年 | 杭州 | 算法研究员 | 20k-30k |
| 1413 | 菜鸟网络 | 本科 | 1-3年 | 杭州 | 机器学习 | 20k-40k |
| 1422 | 酷家乐 | 本科 | 1-3年 | 杭州 | 智能算法工程师 | 25k-40k |
| 1423 | 酷家乐 | 本科 | 1-3年 | 杭州 | 机器学习算法工程师 | 18k-35k |
| 1424 | 歌特网络科技 | 本科 | 3-5年 | 杭州 | 算法工程师 | 35k-70k |
554 rows × 6 columns
去掉三分之二数据之后,剩下的基本上是机器学习相关的工作了。
哪些公司在招聘¶
In [195]: company = train['company'].value_counts() In [197]: company.head(20) Out[197]:腾讯 23 华为 11 阿里巴巴集团 11 滴滴出行 11 华为技术有限公司 11 网易 10 百度 8 爱奇艺 7 PonyAI小马智行 6 京东集团 5 至真信息 5 LinkDoc 5 欢聚时代 5 图普科技 5 视源股份(CVTE) 4 虎彩 4 蚂蚁金服 4 瑞思咨询 4 北风网 4 暄暄科技 4 Name: company, dtype: int64
学历要求¶
In [198]: education = train['education'].value_counts() education Out[198]:本科 312 硕士 196 博士 18 不限 18 大专 10 Name: education, dtype: int64
工作经验¶
In [199]: experience = train['experience'].value_counts() experience Out[199]:3-5年 214 1-3年 167 不限 97 5-10年 48 应届生 14 1年以内 11 10年以上 3 Name: experience, dtype: int64
城市情况¶
In [202]: location = train['location'].value_counts() location Out[202]:广州 144 北京 114 杭州 111 上海 99 深圳 86 Name: location, dtype: int64
薪水情况¶
这里计算最低值加上间隔的四分之一,大部分拿到offer的应该在这附近。
In [210]: salary_s = [] for salary in train['salary']: l = salary.split('-') first = int(l[0][:-1]) second = int(l[1][:-1]) salary_s.append(round(first + (second - first) / 4)) train['salary_simple'] = salary_s/anaconda3/lib/python3.6/site-packages/ipykernel_launcher.py:7: SettingWithCopyWarning: A value is trying to be set on a copy of a slice from a DataFrame. Try using .loc[row_indexer,col_indexer] = value instead See the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy import sysIn [235]: salary = train['salary_simple'].value_counts() salary.head(10) Out[235]:
25 90 19 62 31 43 38 39 18 37 22 31 12 28 29 22 24 20 16 19 Name: salary_simple, dtype: int64
去掉大于50k的值
In [236]: train = train[train['salary_simple'] < 50]薪水与其他属性的关系¶
In [238]: # 地区 train[['location', 'salary_simple']].groupby(['location'], as_index=False).mean().sort_values(by='salary_simple', ascending=False) Out[238]:| location | salary_simple | |
|---|---|---|
| 1 | 北京 | 25.509259 |
| 4 | 深圳 | 24.617284 |
| 0 | 上海 | 23.408163 |
| 2 | 广州 | 22.292857 |
| 3 | 杭州 | 20.271028 |
| education | salary_simple | |
|---|---|---|
| 1 | 博士 | 29.357143 |
| 4 | 硕士 | 24.319149 |
| 3 | 本科 | 22.667763 |
| 2 | 大专 | 17.000000 |
| 0 | 不限 | 16.055556 |
| experience | salary_simple | |
|---|---|---|
| 1 | 10年以上 | 38.000000 |
| 4 | 5-10年 | 31.682927 |
| 3 | 3-5年 | 26.214634 |
| 0 | 1-3年 | 20.884848 |
| 5 | 不限 | 19.381443 |
| 2 | 1年以内 | 12.909091 |
| 6 | 应届生 | 11.000000 |
<matplotlib.axes._subplots.AxesSubplot at 0x1a20cdbbe0>
<matplotlib.axes._subplots.AxesSubplot at 0x1a217939b0>
<matplotlib.axes._subplots.AxesSubplot at 0x1a20bd9550>
总结¶
从两个招聘APp来说,给我的感觉是boss直聘稍微混乱一些,拉勾在数据上的规范性和真实性上感觉更大,至于方便程度来说,还得不用人去体验。
从机器学习这个岗位来说,北京的需求确实比其他四市要多,跟环境,人才的聚集也有很大的关系。目前的普遍印象是研究生从事机器学习的人数要多,但从招聘情况看,侧面反映本科从事机器学习的人更多。1-5年经验的人才需求比较大,跳槽的话,工作经验在这个范围内比较合适。