最近,我对数据分析师的职位颇感兴趣,仿佛找到一个新天地,也猛啃过一些书籍,逛过不少论坛。虽然我对该职位看涨,但因从事该职位的朋友极少,难以获取有价值的职业规划,也对该工作的职业生态缺乏深入的了解,也是举旗未定。
前几日,我突然想到,何不用数据分析的手段,来分析一下数据分析这一岗位。
于是有了此文。
首先,我确定以拉勾作为爬取网站。
为避免重复造轮子,我先于网上浏览一圈,发现类似的攻略贴不少,但没有发现一篇让我满意的分析,这些文章或多或少缺少以下这几类东西:
缺少对比和参照
大多数文章都是爬取某职业成百上千条的数据,然后进行城市分布、公司大小、薪水工资、福利待遇等的一维或者二维分析,缺乏职业与职业间的参考,和职业生态变化的微度窥测。
区域划分不明显
数据往往是全国的,很少有针对某一地区的分析文章。当然,也不乏有文章将区域和公司、薪水做二维三维分析,这算是写得不错的
未排除"脏"数据
比如,你了解一个基础岗位,那么该岗位的实习生、总监等数据应该排除;
再比如,你做词云,一些出现频次大的词汇应该作为停止词排除,比如进行、参与、工作等,你并不能找出该类词汇的关联关系,进行什么?参与什么?工作又是什么?像这样的广泛使用的名词和动词应当舍弃。
攻于技巧,弱于分析
很多文章侧重于爬取,而忽略了分析。分析也只是各种图形的堆砌,让人眼花杂乱。而一些技术向的文章,侧重到了代理池、账号池、反爬等内容,学习技术非常不错,但分析向不太明朗。
因此我首先制定了策略:
爬取网站:拉勾网
择业城市:成都市
选择职业:测试工程师、数据分析师(前后职业)
再开始分步执行:
一、数据抓取
01确定爬取的页面
一是职位信息的页面,包括公司、地区、薪水、经验、学历等,POST请求,响应是AJAX的XHR对象,以Json形式存储(https://www.lagou.com/jobs/list_测试?city=成都)


POST请求要传参,pn代表爬取的页码,kd代表爬取的职位,可以加上city,代表爬取的城市
二是职位的详情,即岗位职责和任职要求,GET请求,直接读网页源码就能获取(https://www.lagou.com/jobs/5342568.html)

02分析json和返回
对于职位信息,储存在json串['content']['positionResult']['result']节点下的,因此遍历读取结果即可。

职位的详情爬取更简单,直接xpath读取返回就行。

03表结构设计
一共设计了两张数据表,一份表存储基础信息,一份表存储职位详情信息,两张表通过positionID关联

04爬取及处理步骤
step1:遍历页码,爬取每一页的职位信息,并存入数据库,用于后续的图表分析
step2:通过上一步骤获取到的positionID(即https://www.lagou.com/jobs/5342568.html中的数字),访问该职位的详情页,用于制作工作职责和词云
05爬取代码(代码和设计,关注公众号,后台回复“ lagou_v1 ”即可获取)
step1:构造请求头

step2:获取职位信息

step3:遍历页面爬取(因拉勾不论多少职位,只显示前30页,故通过totalCount计算出页数后做特殊处理)

step4:通过前面爬取到的positionID,爬取职位详情

step5:运行代码,爬取成都的测试岗和数据分析岗
大功告成


以上代码和设计,关注公众号,后台回复“ lagou_v1 ”即可获取
二、数据分析
此时,数据已爬完。但你得静下来仔细想想,这样的数据我们能拿来直接分析吗?
其次,到底要分析些什么内容,是先把各类图表堆砌出来,再做分析,还是有的放矢,先确定分析的点,再制作相应的可视化作为参考?
数据分析并非你想象的画几张图,写几段描述文字,出一份报告,而是得注入分析人员的思想。
数据爬取、可视化是工于技巧,对数据的感知、知道什么时候用什么图表才是工于分析。
说白了,重要的是有idea。
因此,分析阶段,我们得预备做三件事。
01清理数据与分析准备
step1:我们只做测试和数据分析岗的发展趋势对比,所需的数据值要稳定。因此某些特殊的岗位需要抛开,如对应的测试开发、性能测试、数据算法、DBA、主管、经理、组长、总监、实习生等。
一条sql搞定,简简单单

step2:我们需要些什么
两种职业的市场需求
两种职业的待遇
两种职业的岗位职责、岗位要求
step3:大的分析方向定好之后,再细化之
02实战分析
Analyze1:职位需求(职位供求关系、学历要求)
我一共爬取了成都的547条数据。其中测试岗468条,数据分析岗79条,以数据体量上看,在成都做数据分析的大环境不佳。
公司规模与招聘职位数
而之前众多文章所说的:公司越大,数据分析岗越多。似乎并没有一定的关联性(至少在成都如此)

城市与招聘职位数
同时,我也关注了其他一线城市的岗位数据,不得不说,帝都的实力鹤立于众市,也为我以后的数据参考提供了另一种选择。

公司规模与学历
另外,数据分析岗对于学历的要求确实比较明显:


数据分析岗主要招聘本科学历,大专及学历不限的招聘很少;
公司规模越大,招聘数据分析岗越多,这也符合商业规律;
公司规模越大,招聘测试岗越少,这一类公司要么在校招新人,要么走内推方式社招,故发布的职位明显降低;
中小规模公司,测试岗对于学历的要求不高,但大型公司,有明显的学历倾向;
Analyze2:职业待遇(薪资水平、经验、职位福利)
薪资水平与职位
数据分析岗的数据量较少,确实不能看出薪资水平。
不过发现了一个有意思的点,7k和9k的下限工资,不论是测试岗还是数据分析岗,都有明显的断档,至于断档原因,读者不妨从税费的角度考虑考虑。


薪水区间图
横坐标为薪水值(k),上横标为薪水下限,下横标为薪水对应的薪水上(eg:4k-7k,4k-8k);纵坐标为计数
工作年限与薪资水平
再来看看工作年限与薪资水平的箱型展示图:

应届生和工作经验较少(1年以下),数据分析岗并不友好,招聘数极少乃至没有
1-3年工作经验,测试的薪资水平波动比较大,看了下数据,大抵是美团这一大厂招聘的高级测试,拉高了分布图。从中位数看,和数据分析区别并不大
3-5年工作经验,对于测试岗,中位数稳定,而数据分析岗中位数趋于Q1,说明数据分析岗有更多的高薪选择
5-10年工作经验,两种岗位大体差不多,数据分析略好于测试岗
职位福利&公司福利
两种职业的职位福利和公司福利,这个看看就好,福利不论好坏,实打实地落地才是真·好公司。
职位福利(左测试,右数据分析)
公司福利(左测试,右数据分析)

Analyze3:职业要求(岗位职责,岗位要求)
说实话,这块的数据是我主要关心的,因此下了很多功夫,不仅一遍遍的排除无效关键词,还具体分析了关键词背后的内容。
岗位职责 测试岗(左)和数据分析岗(右)

测试岗(词汇top10)
('负责', 255), ('产品', 227), ('项目', 135), ('流程', 124), ('自动化', 107), ('游戏', 91), ('编写', 82), ('系统', 82), ('经验', 80), ('开发', 78)
数据分析岗(词汇top10)
('业务', 103), ('负责', 78), ('需求', 67), ('产品', 63), ('项目', 60), ('运营', 58), ('报告', 45), ('管理', 32), ('优化', 29), ('用户', 28)
通过词云和top10数据,我们可以看出,无论哪一岗位,都要求独立负责的经历,这也是职场人孜孜努力的目标。
测试岗更看重产品/项目经历,看来大多数测试岗还是以功能测试为主。但另一方对测试流程、自动化的需求也较高,开发的频次不少,这不得不引起tester的重视。
数据分析岗,最看重业务,了解需求和产品。而前top10中,却很少看到技术类的词汇,证明此岗位业务优先,技术次之。
岗位要求 测试岗(左)和数据分析岗(右)

测试岗词汇(top10)
('经验', 308), ('熟练 使用', 93), ('能力', 89), ('自动化', 83), ('沟通能力', 80), ('团队 合作', 70), ('计算机相关 专业', 69), ('技术', 68), ('流程', 67), ('web', 66)
数据分析岗词汇(top10)
('经验', 118), ('能力', 55), ('熟练掌握', 32), ('Python', 32), ('熟练使用', 32), ('沟通能力', 31), ('数据库', 28), ('统计', 28), ('专业', 24), ('行业', 23)
经验!经验!经验!重要的事情说三遍!这是其一。
测试岗,软技能方面要求个人能力和沟通协作技巧,硬技能方面要求自动化等技术;
数据分析岗软技能方面亦要求个人能力和沟通协作技巧,硬技能方面要求Python和数据库;
而"熟练使用"和"熟练掌握"的词频如此之高,主要是要熟练些什么?于是,我回到数据库(能用数据库解决的业务问题,绝对不用代码解决),继续下一层次的分析:
sql实例如下:

经过更进一层的分析,我们能看到:
测试岗最top的熟练,是需要熟练使用Linux、测试管理工具、编程语言(java/python)
编程语言占比如此之高,真是被吓到了,和两年前我刚入职时的大环境相比,测试的技术要求越来越高。
数据分析岗,要求最多的,是Excel办公软件,毕竟大多数分析,都能用Excel进行初筛和看出部分可分析点,其他的如Python、R、SQL,已是老生常谈,不做赘述。
三、总结不足
经过这次实操,我大概了解到两份职业的差别与侧重点,但整体来说,我也认识到了此次分析明显的不足
1、数据分析岗太少,数据不够全
可能受地域或者公司战略规划布局(成都近几年一般是某些中大型公司设立分公司的考虑城市)等方面的影响,成都的数据分析岗很少,难以窥测成都市场的整体环境,并没有达到我此前对市场的乐观预估。
针对数据分析岗,以后我再分析分析北京的数据,以此作为行业风向标吧!
2、缺少长远的规划分析
这个版本,我只爬取了拉勾的数据,而拉勾的岗位招聘初中级工程师较多,很少放出高级和负责人一类的职位,毕竟这一类高级工程师,走内推流程居多。
下个版本,我可以考虑一些猎头网站,或者只选择高职位头衔的数据,来做一次行业远景规划分析。
至于选择什么行业,路如何走,我一直喜欢一个成语:厚积薄发!
不忘初心,坚持向前,砥砺而为,喝完这碗鸡汤,继续吧!