[置顶] Husky数据分析——招聘信息背后的潜规则揭秘

每天新闻中都可以看到各种各样的排行,和数不尽的好玩的结论。可是有很多时候我们看到某些数据结论时,总会激发我们质疑精神,有时是对于数据取样的片面性的怀疑,有时也有不满足于数据的小众化的遗憾。恰好目前我们实验室正在开发下一代的更高效的husky分布式大数据计算平台,正好可以释放数据的洪荒之力。一来可以实现对数据全面性和真实性的追求以及挖掘隐藏在数据背后各类关系,二来可以验证husky强大的高效快速的数据分析能力。工具在手天下我有,不多说,我们进入正题吧!

今天想分析一下和大家都息息相关的职场那些事,那就从招聘信息开始吧。现在先介绍下几个问题:

  1. 数据从哪里来?通过husky同时开启20台机器,每个机器10个线程进行分布式爬取近20轮,经过数据清洗最后获得300多万条有用的招聘信息。这里husky充分调用机器资源并进行高效计算,使得快速获取大量爬虫数据得到实现,其中爬虫过程利用requests,xpath,bs4,re等抓取有用信息。
  2. 数据格式怎样?这300多万条信息以json格式分布式保存在hdfs中,其中每条json数据都包含招聘时间&职位&地点&工资&类别&公司行业&规模等10多个key:value对。
Husky内核是以C++编写的,其中也提供了scala 和 python 的接口,为了方便我们用python做数据分析,下面我们开启pyhusky:
import json
import bindings.frontend as ph
ph.env.pyhusky_start('master',14925,params={'disable_progress':True})
line= ph.env.load('/haipeng/test/zhilian_rm/w4').map(lambda x:json.loads(x)).cache()
不多说哈,直接看大图,我们最关心的工资在不同的城市的到底是怎么样的呢?依托上述300多万份数据,下图清晰地给出各大城市整体的平均工资啦,其中紫色的条形图对应的是平均工资的,绿色的曲线图每个转折点标注的是对应城市的招聘数量。
#按工作地点对平均工资排行,7000代表取招聘数量大于此数的城市比较。
show_salary_base_on_what('job_location',7000,2000)

由上图可以清楚地看出北上深占据了工资的前三甲并且较大幅度超过其它城市,其中北京上海的平均工资都超过8000元。从第四名杭州开始,平均工资缓慢下降,集中在6000元上下的水平。由曲线表示的招聘数量和蓝色的标注,我们可以清楚地看出每个数据的大小,可是不太容易看出其排序顺序。不过下图就清晰多了:
#按工作地点对招聘数量排行,7000代表取招聘数量大于此数的城市比较。
show_number_base_on_what('job_location',7000,2000)

常听说一线城市的工作多,到底多多少自己也没有个量化的概念。上图告诉了我们答案,北上深广四个一线城市无疑在工作机会上大于其他城市不少,而北京无论是在招聘数量还是平均工资都排在了首位。从数量上来看,成都、郑州、天津、杭州、南京、西安和武汉算是排在了第二梯队。济南到石家庄在第三梯队,其他城市就相对来说果然很少。
左上图是最低学历要求图表。可以看出,学历对工资水平具有重要影响,博士、硕士和学士的平均工资占据了前三甲,而中技排在了末位。数据告诉我们,若想工资上万,不妨考虑拿个硕士以上的文凭。而从右上图可知,民营企业的招聘数量占据了大半江山,是排在第二位的股份制企业的三倍有余。而保密机构和国家机关虽然招聘数量少,但工资领先于其他企事业单位。
#对于招聘数量大于8000的职位类别调用函数,分析结果如下,2000是图形宽度
show_salary_base_on_what('job_category',8000,2000)

由图得知,在前十的高薪工作类型中,除了常见的销售总监、市场经理和财务经理等管理者外,互联网行业的产品经理和高级软件工程师也位于前列。另外,船员水手也在其列并且薪水超万,不过这也和船员的长期漂泊和辛苦工作是分不开的。

以上都是对整体的分析,不过大多数情况下不同的人可能更关心某些相关领域的情况,这时可以加入一些限制条件。例如以下考虑的是作为一位老师,只想知道关于老师招聘的相关统计数据:

#这里我们想知道不同城市的情况,故依然选'job_location'作为横坐标;另外只想知道职位是'老师'的数据。若想知道其他数据的话,以任意其他职位取代'老师'即可。
show_salary_base_on_what('job_location',250,1000,'position','老师')

意料之中,北京作为首都集中了很大一部分优质的教育资源,其教师招聘数量及其平均薪酬都占据首位。可以看到上图薪水前五名中,除了北京上海两大城市外,就是广东省的深圳、佛山、广州三大城市。这一方面也体现了北京上海和广东珠三角地区对教育重视,较高的工资容易吸引到更优秀的人才,这可以为老师和学生择校提供一些参考。

#论工作经验的重要性,选职位为'C++'相关的测试如下
show_number_base_on_what('job_experience',50,800,'position','C++')

如图所示,工作经验为1-3年时平均工资为9432,3-5年时增长为13095,而到5-10年时则达到17368元/月。可见随着工作经验的增长,工资近似线性增加,所以只要好好努力,最终都会成为老司机。

#我们想知道不同城市的企业类型分布,由于篇幅关系,我们这里只展示北京和上海两地的比较:
show_number_base_on_what('company_industry',500,2000,'job_location','北京')
show_number_base_on_what('company_industry',450,2000,'job_location','上海')

#上海

图上可见,互联网/电子商务是北京上海两地从业人员最多的行业,基金/证券/期货/投资相关的则排在了第二位。另外,对于北京来说,计算机软件、教育/培训/院校、媒体出版/影视/文化传播和IT服务(系统数据维护)等方面要强于上海。而上海在房地产/建筑/建材/工程、专业服务/咨询(财会/法律/人力资源等)和贸易/进出口方面更加突出。

#我们想知道某些情况下工资分布在不同范围的比例,例如,以下可以看到老师、医生和律师在招聘中的各自工资分布的比例:
show_proportion_of_salary_range_by_key('position',['老师','医生','律师'])

总体而言,三者的工资分布在 3000-6000元这一范围的比例都是最大的,其中老师在这一区间的比例更是达到了50%。另外,在高薪领域 ,医生所占比例最大,律师居中,老师较低。

#工程师的情况怎么样呢?
show_proportion_of_salary_range_by_key('position',['软件工程师','硬件工程师','建筑工程师','设计工程师'])

与第一组不同,这组工程师的薪水主要是分布在6000-9000这个范围,其中建筑工程师过半位于这一区间。而关于我们常谈论的软件工程师和硬件工程师,在6000元以下和9000元以上两个区域,硬件工程师的比例都要高于软件工程师。可见软件工程师薪水更加集中,而硬件工程师的贫富差距更加明显。另外,在27000以上的高新领域,建筑工程师表现突出。

#不同编程语言的表现如何呢?可见以下图表
show_proportion_of_salary_range_by_key('position',['C++','Java','Scala','Python','PHP'])

由图可见,Scala和Python的表现突出,薪水在大于12000的范围中占有较大的比例,这可能得益于在的大数据分析领域这两种语言的广泛运用。而Java、C++和PHP则表现的相对正常,主要集中在6000-9000这一范围。
#取企业性质分析
show_proportion_of_salary_range_by_key('company_nature',['民营','国企','合资','国家机关'])

怎么说呢?数据告诉我们国家机关最好,民营企业最艰难。


由于时间篇幅的关系,还有很多数不尽的有趣的结论有待开发,这里就不继续展示。以下提供这次分析工具Husky的网址和这次分析的数据源。欢迎大家一起研究讨论!

我们的网站:http://www.husky-project.com/

数据链接: http://pan.baidu.com/s/1gfn32dt 密码: tb14

Husky: 新世代大數據平台


正在进行:我的博客专栏《Husky大数据分析》被推荐评选年度十佳专栏,欢迎大家投票支持。投倒数第三个《Husky大数据分析》(网址:https://wj.qq.com/s/1375474/9b8e


你可能感兴趣的:(爬虫,大数据,招聘,分布式计算,可视化)