数据分析师挣多少钱?“黑”了招聘网站告诉你!

项目背景

从去年7月份开始学习优达学城 (Udacity) 的课程,到现在也算学了不少内容,接下来打算慢慢开始找工作了。在这之前,要花点时间把自己学习的知识复习回顾一遍,也要做一些实战项目多多练习,以增加熟练度。本项目打算着重复习 python 数据分析(进阶)相关的知识,主要包括 numpy, pandas 和 matplotlib 这几个库。


项目简介

既然想要从事数据分析这个岗位,那自然首先需要对这个岗位有所了解。最直接、最真实的方式就是从企业那里获得需求讯息,这样才最能够指导自己的学习方向和简历准备。
本次项目即是要利用爬虫爬取拉勾网上数据分析这一岗位的信息,然后进行一些探索和分析,以数据分析来了解‘数据分析’。

数据来源和数据集

本项目所使用的数据集全部来自拉勾网,是通过集搜客这一网络爬虫工具来爬取的。集搜客是一款简洁易用且功能强大的网络爬虫产品,通过鼠标点选和简单的命令操作即可实现爬虫的定制和运行,这里也推荐一下。

之所以选择拉勾网作为本项目的数据源,主要是因为相对于其他招聘网站,拉勾网上的岗位信息非常完整、整洁,极少存在信息的缺漏,并且几乎所有展现出来的信息都是非常规范化的,极大的减少了前期数据清理和数据整理的工作量。(笔者毕竟是工作之余完成,时间有限,能省则省)

本次爬取信息的时候,主要获得了以下信息:

内容字段岗位名称title、月薪month_salary、公司名称company、所属行业industry、公司规模scale、融资阶段phase、投资人investors、所在城市city、经验要求experience、学历要求qualification、全职/兼职full_or_part time、职位描述及任职要求description

目的

主要是希望通过实际的数据来解答针对数据分析岗位的一些疑惑,数据分析课程的童鞋一些参考性的意见。具体来说,主要针对以下几个问题:

  1. 数据分析师岗位需求的地域性分布;
  2. 整个群体中薪酬分布的情况;
  3. 不同城市数据分析师的薪酬情况是怎样的;
  4. 该岗位对于工作经验的要求是怎样的;
  5. 根据工作经验的不同,薪酬是怎样变化的;
  6. 从用人单位的角度看,数据分析师应当具备哪些技能?
  7. 掌握不同技能是否会对薪酬有影响?影响是怎样的?

技术和工具

本项目主要分为两大部分,第一部分是数据爬取,采用的是集搜客网络爬虫工具。第二部分是数据分析,以 Python 编程语言为基础。
数据分析部分主要使用 pandas 作为数据整理和统计分析的工具,matplotlib 用于图形的可视化,seaborn 库包用于图形美化。在进行技能需求分析的时候,使用了 jieba 作为分词工具包,并使用 wordcloud 包制作词云。

闲话不多说,下面切入正题。


数据整理

加载和清理


In [1]:

In [2]:
<class 'pandas.core.frame.DataFrame'>
Int64Index: 575 entries, 0 to 588
Data columns (total 13 columns):
_createdate         575 non-null object
title               575 non-null object
month_salary        575 non-null object
company             574 non-null object
industry            574 non-null object
scale               574 non-null object
phase               574 non-null object
investors           115 non-null object
city                575 non-null object
experience          575 non-null object
qualification       575 non-null object
full_or_parttime    575 non-null object
description         575 non-null object
dtypes: object(13)
memory usage: 62.9+ KB
None

可以看到,经过初步清理后,数据集中有效变量为13个,数据记录575条。除了投资人这一项之外,其他各字段的数据完整度非常好,几乎没有缺失值。这对于后面的分析来说是个大大的好消息。

地域性分布

In [12]:

Out[12]:
<matplotlib.text.Text at 0x1102e1f90>

在拉勾网上,全国有29个城市的企业邮数据分析师的人才需求,其中将近一半需求产生在北京市,需求量全国第一。排在前5的分别是:北京、上海、深圳、杭州、广州。

数据分析这一职业大量集中在北上广深四大一线城市,以及杭州这个互联网和电子商务企业的聚集地。北京市巨大的需求比重令我稍感意外,不过,考虑到拉勾网是一个偏重互联网相关行业的招聘平台,而我国大量互联网企业在北京聚集,这个结果倒也算合理。以后有时间,可以对全国互联网行业分布特点做个分析。

总而言之,可以得出一个清晰的结论:数据分析这一岗位,有大量的工作机会集中在北上广深以及杭州,期待往这个方向发展的同学还是要到这些城市去多多尝试。当然,从另一个方面说,这些城市也都集中了大量的各行业人才,竞争压力想必也是很大的。

总体薪酬情况

In [25]:


/Users/carrey/anaconda/lib/python2.7/site-packages/ipykernel/__main__.py:16: 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: Indexing and Selecting Data


Out[25]:
([<matplotlib.axis.XTick at 0x11ccaa290>,
  <matplotlib.axis.XTick at 0x11d478210>,
  <matplotlib.axis.XTick at 0x11d5652d0>,
  <matplotlib.axis.XTick at 0x11d602f10>,
  <matplotlib.axis.XTick at 0x11d6116d0>,
  <matplotlib.axis.XTick at 0x11d528290>,
  <matplotlib.axis.XTick at 0x126eb4c10>,
  <matplotlib.axis.XTick at 0x11d441e90>,
  <matplotlib.axis.XTick at 0x11d611bd0>,
  <matplotlib.axis.XTick at 0x11d618390>,
  <matplotlib.axis.XTick at 0x11d618b10>,
  <matplotlib.axis.XTick at 0x11d6242d0>,
  <matplotlib.axis.XTick at 0x11d624a50>,
  <matplotlib.axis.XTick at 0x11d62d210>,
  <matplotlib.axis.XTick at 0x11d62d990>,
  <matplotlib.axis.XTick at 0x11d637150>,
  <matplotlib.axis.XTick at 0x11d6378d0>,
  <matplotlib.axis.XTick at 0x11d642090>,
  <matplotlib.axis.XTick at 0x11d642810>],
 <a list of 19 Text xticklabel objects>)

如同大多数其他工作一样,数据分析师的薪酬也是一个右偏分布。大多数人的收入集中在5k-20k每月,只有少数人能够获得更高的薪酬,但有极少数人薪酬极高,让人充满期待。需要说明的是,拉勾网上的薪酬值是一个区间值,并且相互之间互有重叠,为了便于分析,我取区间的中值作为代表值进行的分析。因此,实际的薪酬分布情况可能会比图中的情况更好一些。总是有人能够拿到薪酬的上限。

综合来看,数据分析师的薪酬收入整体还是可观的,从这方面说,选择这个职业还是不错的。


不同城市薪酬分布情况

In [22]:

Out[22]:

<matplotlib.text.Text at 0x115796650>

忽略掉那些人才需求量比较小的城市,我重点关注排名前六的城市。从图上看,这六大城市的薪酬分布情况总体来说都比较集中,这和我们前面看到的全国的薪酬总体情况分布是一致的。深圳市薪酬分布中位数大约在15k,居全国首位。其次是北京,约12.5k,之后是上海和杭州。

深圳确实是个创造奇迹的城市,在这里也给了我一个小小的惊喜。从待遇上看,数据分析师留在深圳发展是个不错的选择。


工作经验需求

In [16]:
/Users/carrey/anaconda/lib/python2.7/site-packages/ipykernel/__main__.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
/Users/carrey/anaconda/lib/python2.7/site-packages/pandas/core/indexing.py:132: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame

See the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy
  self._setitem_with_indexer(indexer, value)
/Users/carrey/anaconda/lib/python2.7/site-packages/ipykernel/__main__.py:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame

See the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy
/Users/carrey/anaconda/lib/python2.7/site-packages/ipykernel/__main__.py:25: FutureWarning: sort(columns=....) is deprecated, use sort_values(by=.....)
Out[16]:
<matplotlib.text.Text at 0x110577dd0>

不出所料的,工作经验的需求分布近似于正态分布。工作1-3年经验的熟手需求量最大,其次是3-5年工作经验的资深分析师。工作经验不足1年的新人,市场需求量比较少。另外,工作经验要5-10年的需求量非常稀少,而10年以上的更是凤毛麟角。

从这个分布我们大致可以猜测出:

  1. 数据分析是个年轻的职业方向,大量的工作经验需求集中在1-3年;
  2. 对于数据分析师来说,5年是个瓶颈期,如果在5年之内没有转型或者质的提升,大概以后的竞争压力会比较大。

不同工作经验的薪酬分布

In [21]:
Out[21]:
<matplotlib.text.Text at 0x11cc58f50>

毫无疑问的,随着经验的提升,数据分析师的薪酬也在不断提高。另外,从现有数据来看,数据分析师似乎是个常青的职业方向,在10年内大概不会因为年龄的增长导致收入下降。


职业技能关键词

In [19]:
Building prefix dict from the default dictionary ...
Loading model from cache /var/folders/p7/6s6n_sw53dq_w9j52wlzyl800000gn/T/jieba.cache
Loading model cost 0.417 seconds.
Prefix dict has been built succesfully.
/Users/carrey/anaconda/lib/python2.7/site-packages/ipykernel/__main__.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

词云显示出的情况,有点超出了我的预料。对于数据分析师这一岗位,企业需求频率最高的技能并不是 Python 语言和R语言等如今非常时髦的数据分析语言,而是传统的结构化查询语言SQL和表格神器Excel。这一点需要各位小伙伴注意,要想从事数据分析师岗位,SQL和Excel看起来是必备技能。

从词云上看出,数据分析师技能需求频率排在前列的有:SQL,Excel, SAS,SPSS, Python, Hadoop和MySQL等。另外,Java, PPT, BI软件等属于第二梯队。


掌握不同技能


我对需求频率最高的前15个技能进行统计计算,得出每一个技能对应的平均薪酬水平,如上图。点的大小代表该技能需求量的多少。

在前15项技能中,shell,Hive, Spark这三者的平均薪酬水平最高,并且相对其他技能来说有比较大的差异。对数据分析师工作有所了解的人应该都知道,这三个工具中,Hive和Spark都是应用于分布式数据处理,而shell脚本则是Linux系统下工作的必须技能。这三者共同指向了一个方向,那就是海量数据的分布式处理!

所以,想要拿高薪的小伙伴注意了,海量数据处理、分布式处理框架是走向高薪的正确方向。

另外值得注意的是,在数据分析领域,Python语言的平均薪酬水平要高于目前如日中天的Java语言。而SQL语言和传统的SAS,SPSS两大数据分析软件,则能够让你在保证中等收入的条件下,能够适应更多企业的要求,也就意味着更多的工作机会。

分析结论

通过上面的分析,我们可以得到的结论有这些:

  1. 数据分析这一岗位,有大量的工作机会集中在北上广深以及杭州。
  2. 大多数据分析师的收入集中在5k-20k每月,只有少数人能够获得更高的薪酬,但有极少数人薪酬极高,让人充满期待。
  3. 从待遇上看,数据分析师留在深圳发展是个不错的选择,其次是北京、上海。
  4. 数据分析是个年轻的职业方向,大量的工作经验需求集中在1-3年。
  5. 对于数据分析师来说,5年似乎是个瓶颈期,如果在5年之内没有转型或者质的提升,大概以后的竞争压力会比较大。
  6. 随着经验的提升,数据分析师的薪酬也在不断提高,10年以上工作经验的人,能获得相当丰厚的薪酬。
  7. 数据分析师需求频率排在前列的技能有:SQL,Excel, SAS,SPSS, Python, Hadoop和MySQL等,其中SQL和Excel简直可以说是必备技能。
  8. 海量数据、分布式处理框架是走向高薪的正确方向。
  9. SQL语言和传统的SAS,SPSS两大数据分析软件,能够让你在保证中等收入的条件下,能够适应更多企业的要求,也就意味着更多的工作机会。

思考和总结

对于数据分析师技能的分析是比较简陋的,在本次分析过程中,仅针对工具型的技能进行了分析。但其实,数据分析师所需要具备的素质远不止这些,还需要有扎实的数学、统计学基础,良好的数据敏感度,开拓但严谨的思维等。如果要对这些内容进行深入挖掘的话,应该会更加有趣。不过,要进行这项内容的话,需要掌握大量中文分词、关键字提取等方面的知识和技能,难度也会更高。时间所限,在这里不再进一步展开了,希望以后有时间再做一个专项分析吧。

让人忍不住吐槽的是,Python2.X环境对中文编码的支持着实不够好,在处理数据的时候消耗了大量的时间和精力,也犯了不少错,走了很多弯路。以后这一块的内容要找时间专门攻坚一下,也可以考虑换到python3平台去。


特别说明


本次数据源完全来自拉勾网,但拉勾网是专注于互联网相关行业的招聘平台,所以本次分析出的结论更加适用于互联网行业的相关企业,对于其他行业的企业,未必合适。

作者

@BigCarrey, Udacity数据分析纳米学位项目学员。

文章可以转载,但必须注明作者和出处。

编辑于 2017-03-14

文章被以下专栏收录