数据分析师还是算法工程师|用数据多角度解读如何选择
疫情即将散去,又到了求职季。学习Python的各位该如何选择自己的职业方向,算法工程师还是数据分析师?跟随本文一起看看吧!
01
数据获取与处理
本次样本数据采集于拉勾网,因为本文的重点是招聘数据分析,而在之前的文章中我们讲解过很多次如何使用requests爬取网页数据,这里就不再赘述,来看下爬取网站部分代码
url_html = 'https://www.lagou.com/jobs/list_'+ job_position + '?labelWords=&fromSearch=true&suginput='
params = {
'city': job_address,
'first': 'true'ifi == 1else'false',
'pn': i,
'kd': job_position}
# 创建一个session对象
s = requests.Session()
# 发送请求,获得cookies
s.get(url_html, headers=headers, data=params, timeout=4)
cookie = s.cookies
res = s.post(url_request, data=params, headers=headers, cookies=cookie, timeout=4) # 注意分析网页数据获取格式
res.encoding = res.apparent_encoding
text = json.loads(res.text)
本文在拉勾网招聘信息中选择北京、上海、广州、深圳、杭州这五个城市下分别以数据分析师、算法工程师为筛选条件来采集样本,采集到的原始数据如下
当然我们在进行数据分析时不需要图中这么多变量,因此对数据进行清洗后最终样本数量为1979条,并选择以下几个变量进行分析
02
薪资水平
我们首先来看下数据分析师与算法工程师的薪资水平密度分布图,绘制出这两个岗位的薪资分布密度图并标记出薪资的均值(图中虚线)👇
图中红色部分为算法工程师的薪资分布密度,蓝色部分为数据分析师的薪资分布密度,可以看出不论是数据分析师还是算法工程师,其薪资水平都是比较高的,但是算法工程师的薪资会更高一点,从两条虚线的位置可以看出算法工程师的平均薪资以29619元超过数据分析师的18841元!值得注意的是这两个岗位薪资均呈现明显的多峰形态,说明存在一类薪资相当可观的精英职位。
03
企业所属行业分析
本节通过制作词云图来对发布招聘企业所属的领域/行业进行分析
上图为我们根据发布招聘信息的企业所属领域/行业的文本信息绘制的词云图,从图中可以看出数据分析师与算法工程师的行业有较大的交叉,主要都属于移动互联网、金融相关企业,但数据分析师的数据服务、电商、消费生活企业更多,而算法工程师的人工智能相关企业占比较高,所以想从事人工智能相关岗位的同学就往算法方向准备吧。
04
学历对的薪资影响
在本节,我们使用箱线图来分析学历对薪资的影响
每一个箱子的宽度代表该学历提供的工作数量,纵轴为薪资高低,从图中我们可以看出,不论是数据分析师还是算法工程师,大多数岗位面向的对象为本科生。并且可以明显看出算法工程师对学历的要求更高,数据分析师有33个岗位要求最低学历为硕士,而算法工程师要求硕士的岗位有389个,并且值得注意的是:
接近1000个数据分析师岗位均无博士学历要求,而算法工程师要求博士的岗位占比高于大专。所以想要从事算法工程师相关岗位还是先努力提升学历吧。
05
技能需求分析
我们提取数据分析师与算法工程师岗位所要求的技能/语言相关信息(仅为标签中需求并未提取详细要求中技能需求),对其进行可视化👇
可以看到对于数据分析师来说,需求最高的是SQL,其次是BI软件与SPSS以及Hive和Hadoop等大数据相关,虽然也有Java等,但是总体对于编程语言需求不高,值得注意的是只有一家公司需要应聘者会使用python(用女朋友担保真的只有一家需求中含有Python
)。
再看右边的算法工程师,对于NLP的需求最高,其次C/C++、Python、JAVA、GO等各种编程语言都有,值得注意的是有些企业还需要求职者懂一些Linux运维相关的知识。
06
回归建模
上面的分析仅是从一些描述性分析的角度,在本节我们对影响薪资水平的各个因素进行回归建模来量化分析,由于原始变量太多存在多重共线性,因此我们选择主成分回归模型:
先利用主成分分析对各个变量提取主成分,然后对变量进行中心化与薪资对数化,接着建立回归模型,最后将回归方程中的主成分转换为原始变量。
数据分析师影响因素的回归系数
算法工程师影响因素的回归系数
对比两个图可以发现,不论是数据分析师还是算法工程师都对工作经验有着较高的要求,其中算法工程师要有3-5年的工作经验才算能对薪资水平有一个“正向”的影响。
其次数据分析师对SQL和Hive较高的要求而算法工程师要求的语言则是Python和C/C++,当然这只是个人因素对薪资水平的影响分析,公司层面的因素就留给感兴趣的读者去做。
07
聚类分析
在这一节我们为了更加细致地了解两个行业内部岗位的分布,我们对数据分析师与算法工程师的影响因子进行了聚类分析,对聚类结果进行总结得出这两个岗位的三个典型职位
数据分析师的三个典型职位:
精英岗位:需要硕士及以上学历,工作经验5年以上,掌握多种编程语言,薪资较高
高级岗位:本科以上学历,有一定工作经验,熟练掌握一门编程语言
普通岗位:了解基本分析方法,了解基本软件
算法工程师的三个典型职位:
精英岗位:需要硕士及以上学历,工作经验5年以上,掌握NLP、Python、GO等,薪资较高
高级岗位:硕士以上学历,5年以上工作经验,熟练掌握NLP与一门编程语言
普通岗位:本科以上学历,一年以上工作经验,薪资较低
08
费希尔判别分析
上面做了那么多又是主成分回归建模又是聚类就是为了本节进行判别分析,我们可以利用费希尔判别法(之前文章有讲过哦)根据求职者的条件针对上一节的三个典型职位进行判别,并代入我们的模型就能预估求职者的薪资,例如
某位求职者:
想应聘数据分析师
应届本科生
会使用SPSS、Mysql并了解一些数据分析的方法
那么使用费希尔判别法就能判定该求职者属于数据分析师的普通岗位,并可以利用之前建立的模型预测薪资大约为5247元,但如果该求职者能学会Hive与Hadoop那么薪资将涨到7144元。
09
结束语
从结果来看数据分析师与算法工程师都属于比较高薪的岗位,这也解释了为什么这两个岗位火热的原因,虽然两个岗位有一定交叉,但还是有一定区别,比如这两个岗位所需要的编程语言不大一样。并且算法工程师需要的学历更高一点,但数据分析师对工作经验的要求没有算法工程师的要求高。所以求职者可以根据自身情况去综合考虑。
以上就是本文作者对爬取到的招聘数据进行的挖掘与分析,当然由于作者的能力有限,并且在之前的建模中可能忽略了一些关键的变量导致得到的模型并不是十分准确,感兴趣的读者可以后台回复招聘获取本文使用的数据进行更多的分析~