你好,游客 登录
背景:
阅读新闻

数据分析实例:企业需要什么样的数据分析人才?

[日期:2018-04-03] 来源:知乎日报  作者:Joffy Zhong [字体: ]

项目背景

在学习数据分析的路上,少不了经常逛知乎,这也是我第一篇在知乎上的文章,写这篇文章的启发来源于@BigCarrey 的一篇文章《数据分析师挣多少钱?“黑”了招聘网站告诉你!》,该文章给了我一些帮助,让我了解了数据分析岗位相关的信息,但同样也留给我一些疑问,该文章分析的数据分析师所需技能的结果丝毫没有 R 的踪影,尽管是一年前的分析,我觉得应该不可能不存在。

因此,抱着证实 R 语言这款工具的想法,以及希望了解当前企业对数据分析岗位的需求,开始了一次针对招聘网站的数据分析岗位招聘数据的分析与挖掘实践,避免自己所学习的方向与企业实际需求脱轨。

此实例采用 R 语言作为分析工具,下面展现的是我整个分析过程。

目标

  1. 了解企业当前需要什么样的数据分析人才,以及应该具备的能力和素质。
  2. 分析的结果为今后的学习和求职提供指导,也为正在学习数据分析和找工作的朋友们提供一定的参考价值。

问题的分解

  1. 不同地区,数据分析岗位的需求分布以及对应的薪资分布
  2. 不同经验,数据分析岗位的需求分布以及对应的薪资分布
  3. 不同学历,数据分析岗位的需求分布以及对应的薪资分布
  4. 不同企业规模,数据分析岗位的需求分布以及对应的薪资分布
  5. 探索数据分析岗位对应的工具型技能与对应的薪资水平
  6. 探索数据分析岗位对应非工具型能力的需求

数据集的定义

表 1:数据分析岗位信息表表 2:数据分析岗位技能关键词表

数据获取

数据来源:拉勾网

数据范围:互联网行业、数据分析岗位

数据集:全国数据分析岗位招聘信息数据集(采集样本量:449)

工具:爬虫

时间:所有数据截止 2018 年 3 月 12 日

数据集下载地址:链接:pan.baidu.com/s/1Bz7mA_ 密码:layp

数据处理

步骤 1:加载原始数据

#readxl 包的 read_excel 函数
library(readxl)
#数据加载
CN.df 

步骤 2:识别缺失值

#VIM 包的 aggr 函数来识别
library(VIM)
aggr(CN.df,prop=TRUE,numbers=TRUE)

图 1. aggr 缺失值识别图

幸运的是该数据集不存在缺失值,这是很少遇到的情况

步骤 3:数据清洗

#zoo 包的 index 函数
library(zoo)
#定义数据清洗函数
cleaning 
  #删除重复值
  my.data 
  #计算平均月薪
  min_salary 
  max_salary 
  my.data$avg_salary 
  #清理字符串中的不需要的字符
  #并将需要分析的字符变量转化为因子,并对部分因子重新编码
  my.data$city 

  my.data$experience 
  my.data$experience[my.data$experience %in% c("不限","应届毕业生")] <- "1 年以下"
  my.data$experience 
                                levels=c("1 年以下","1-3 年","3-5 年","5-10 年","10 年以上"))

  #这里的学历:“大专”,“本科”,“硕士”都表明是要求该学历“及以上”
  my.data$education 
  my.data$education[my.data$education=="不限"] <- "大专"
  my.data$education 

  my.data$phase 
                        c("不需要融资","未融资","天使轮","A 轮",
                          "B 轮","C 轮","D 轮及以上","上市公司"))
  my.data$campany 
  my.data$scale 
                               "\\1",paste(my.data$scale,my.data$scale2)),
                          levels =c("少于 15 人","15-50 人","50-150 人",
                          "150-500 人","500-2000 人","2000 人以上")) 
  my.data$id 
  my.data 
  return(my.data)
}
#清洗数据,得到清洗后的数据
CN.clean 
str(CN.clean)

步骤 4:文本挖掘

文本挖掘工具:jiebaR 包

说明:

在进行正式挖掘之前测试了一下 jiebaR 的关键词(keywords)分词器,测试的结果发现 SQL,Python 等词在 jiebaR 词典中的 IDF 值均为 11.7392,但“R”这个字符无论如何(即使自定义了用户字典,或者在 idf 字典中添加 R 的 idf 值)都无法被分词器识别为关键词,猜测可能是默认 R 的词性标注或者算法实现方法的原因。但因为 R 是数据分析师的重要工具,识别不出来是不可容忍的,因此要另求出路。

测试代码如下:

> library(jiebaR)
> library(jiebaRD)
> engine  keywords("我在用 R,R,R,R 语言,SQL,PYTHON,EXCEL 等工具,了解 MySQL 会更有好处",engine)

结果如下:

# 11.7392  11.7392  11.7392  11.7392  6.87603   6.1635  6.11745  5.09665 
# "EXCEL"  "MySQL" "PYTHON"    "SQL"   "好处"   "语言"   "工具"   "了解"

解决办法:

关键词算法的实现原理是 TF-IDF 算法,TF 为词频,IDF 为逆文档率(词的权重),因此 TF-IDF=TF*IDF 为衡量是否关键词的指标,若控制 IDF,则 TF-IDF 的值与 TF 值成正比关系,简单来说 TF 值可以代替 TF-IDF 值。

由于此次分析的是数据分析师的工具和技能,因此只考虑 SQL,PYTHON,R,SAS 等常用且类似的词的分析,又因为该类词在 jiebaR 分词器识别出来的 IDF 值均是同级别的(即使可能存在有差异也在此假设其等值),因此这部分词汇的关键指标的衡量可以简化为出现的词频,即 TF 值,这个可以通过 jiebaR 的默认分词器(不是关键词分词器)来处理即可,最终解决 R 关键词识别的问题。

文本挖掘思路:

1、工具型技能的关键词:采用默认分词器的词频 TF 值

2、非工具型能力或素质的关键词:采用关键词分词器的 TF-IDF 值

代码如下:

library(jiebaR)
library(jiebaRD)
library(zoo)
library(plyr)
source("myfun.R")
#提取技能型关键词
#采用默认 jiebaR 分词器
engine 
#分词,并删除无关的词汇
word.lis 
  v 
  v 
  return(v)
})
#将所有分出来的词转化为大写,消除大小写差异
segWords 
stopwords 
#过滤停词,由于文本可能会存在其他高频的词汇,把不需要的词去除,如(and,of…)
#此处确保我要得到的前 20 个关键技能是正确的数据分析技能
segWords<-filter_segment(segWords,stopwords)

#形成词频表(数据框格式),获取前 15 个技能关键词
top15.df 

#生成有 id 和 keyword 构建的数据框,id 对应 cleandata 数据集的 id(即数据字典表 1 和表 2 的关系)
id 
keyword 
for (i in index(word.lis)) {
  id 
  keyword 
}
keyword.df 
keyword.df 

str(keyword.df)
#合并两个数据集(表之间的内连接,类似 sql 语句的 inner jion)
merge.df 
#该数据集用于工具型技能关键词的分析
str(merge.df)

#提取非技能型关键词,停词可以自行定义
keys 
keyword.lis 
  v 
  v 
  return(v)
})
keyword.lis 
#形成非工具型技能关键词词频表
not.tool.keyword 
str(not.tool.keyword)

到此数据处理的过程基本完成,处理后干净的数据如下:

分析的结果

数据分析代码:

具体代码可以前往该链接查看整个过程:RPubs - 分析实例:企业需要什么样的数据分析人才

描述统计信息:

##       city        phase           scale     education    experience 
##  北京   :222   不需要融资:94   15-50 人   : 15   大专: 33   1 年以下: 34  
##  杭州   : 48   上市公司  :88   50-150 人  : 36   本科:389   1-3 年  :156  
##  上海   : 48   D 轮及以上 :80   150-500 人 :104   硕士: 20   3-5 年  :206  
##  广州   : 38   C 轮      :73   500-2000 人:116             5-10 年 : 46  
##  深圳   : 38   B 轮      :49   2000 人以上 :171                           
##  长沙   : 11   A 轮      :42                                            
##  (Other): 37  (Other)   :16                                            
##    avg_salary   
##  Min.   : 2.50  
##  1st Qu.:12.50  
##  Median :17.50  
##  Mean   :18.22  
##  3rd Qu.:22.50  
##  Max.   :75.00

问题一:不同地区,数据分析岗位的需求分布以及对应的薪资分布

  • 总的来说数据分析师的平均薪资比较好,工作 1 年以上拿到 10k 月薪的机会还是比较大
  • 在需求量前 5 的城市中,北京和深圳的平均薪资是最高的,广州的平均薪资最低
  • 需求量在第二梯度的城市中,长沙和成都的平均薪资较低,但武汉、厦门、郑州也有不错的薪资表现,二线城市也是一个可以考虑的选择
  • 需要注意的是苏州的需求量相对于其他城市是非常低的,但其平均薪酬接近深圳,是可以值得关注的城市

问题二:不同经验,数据分析岗位的需求分布以及对应的薪资分布

  • 跟预想的差不多,薪资随工作经验的增加而有一个稳定的增长
  • 但企业对最大的数据求集中在 3-5 年经验的数据分析师,这对于转型进入数据分析的人来说不是一个好的消息
  • 转行需要更有充足的准备,且要不断寻找能够积累经验的项目来做。

问题三:不同学历,数据分析岗位的需求分布以及对应的薪资分布

  • 企业似乎更加注重分析师的实践经验,而不是学历的高低,但至少需要具备本科以上的学历,数据分析还是需要具备一定的理论基础
  • 在薪资方面,相对与本科来说,硕士及以上学历在获取高薪方面并没有太大的优势,能够解决实际问题才是数据分析师拿高薪的关键,而非深奥的理论知识
  • 大专学历的分析师还是有机会,重点在于增加自己的工作经验才是本质上与其他分析师拉开距离的关键,当然,理论知识也不能落下

问题四:不同企业规模,数据分析岗位的需求分布以及对应的薪资分布

  • 150 人规模以下的企业需求量较少,但给出的薪资较高(甚至有异常的高薪),该类企业可能处于快速融资且高速的发展阶段,需要有丰富经验的数据分析专家来建设整个数据体系
  • 50~150 人规模的企业适合有足够经验的分析师且想要创业的人,对自己职位以及薪酬均会有明显的提升,但最大的风险就是该类企业容易失败,特别在互联网行业,因此更不建议作为转型新人的首选
  • 对于转型的新人,尽可能往大企业走,越大规模的企业,整个体系越成熟,因此可以在 150 人以上的规模从上往下选择自己合适的企业才是比较科学的方式,且需求量巨大

问题五:数据分析岗位对应的工具型技能与对应的薪资水平

  • SQL 和 Excel 几乎是每个数据分析师要掌握的基础技能,大多数企业都有自己的数据库体系或者系统平台,因此企业工作人员读取和处理数据还是以数据库和 Excel 为主
  • R,Python 是两个最热门的开源数据分析工具,且当前 R 语言在需求仍然不低,因此核心掌握两门语言的其中一门都会让数据分析师具备有力的竞争优势
  • 除此之外工作经验较低的数据分析师还需要掌握一些 BI 可视化分析工具
  • 工作经验较高的数据分析师需要掌握主流的关系型数据库系统和 NoSQL,以及 hadoop,Hive,Spark 等大数据工具
  • 掌握 Hadoop,Hive,Spark,R,Python 等技能是获取高薪必备条件

问题六:数据分析岗位对应非工具型能力的需求

声明:此处数据涉及到岗位细分和难以衡量的原因,并没有进行深入分析,词云本身不具备太高的数据分析价值,仅作为可视化关键词的分布情况的工具;阅读者需要根据自身岗位以及所处的工作定位查看关键词的情况,这里的大小表示关键词出现的频次。

通过资料的收集,了解到数据分析岗位主要有偏工程方向和偏业务方向两个类型,透过词云可以大概了解到如下信息:

  • 偏工程方向的数据分析师对“数据挖掘”、“数据建模”、“模型分析”等能力要求较高
  • 偏业务方向的数据分析师对“业务分析”、“运营分析”、“产品分析”、“用户分析”等能力要求较高
  • 两个类型共同需要“逻辑思维”、“沟通”、“分析报告”、“统计分析”、“团队合作”等关键能力

总结

  1. 从地域来看,北京、深圳、上海、杭州、广州应该是数据分析师的首选城市,苏州是一个值得关注的城市,外部数据了解到苏州的 GDP 仅次于一线城市,此处结果平均薪资接近北京和深圳,但需求量较低,想要苏州发展的朋友可以关注其动态。
  2. 从总体需求来看,企业更加需要具备多年工作经验,且动手能力强、解决实际问题的分析人才,随着工作经验的增加,其对应的薪资也有可观的增长。
  3. 从大环境看,外部资料了解到,自助式分析工具的逐步完善与人工智能技术的突破,也可能使得企业现有业务人员能够上手基础的分析工作,导致企业对经验较低的分析师需求减少。
  4. 从企业规模看,150 人以上规模的企业更加适合新人进去锻炼,一方面企业已经完成了基本的数据体系架构,且越大的企业数据量级越大,另一方面,企业需要逐步培养强大的数据分析团队来支撑业务的增长。
  5. 从分析师个人的角度,则需要更加关注自身成功项目经验的积累,这是升职加薪的必备条件,且需要思考未来自身的发展路径,提前做好准备,相对于业务方向,大数据工程师方向会有更可观的薪资。
  6. 从能力的角度,数据分析师需要掌握 SQL,Excel,R,Python 四个必备的工具(R 和 Python 可以选择其一为主要工具),新人可以注重 BI,PPT 等 office 工具的技能,如果是大数据挖掘,越往后则需要更加关注 hadoop,Hive,Spark 等工具;
  7. 数据分析师个人还需要注重逻辑思维、表达沟通、分析报告等关键能力

建议

  1. 对于想要转型的数据分析师新人,转型之前尽可能做好项目经验的积累,尽量做到跨岗不跨行,在自己熟悉的领域学习数据分析
  2. 企业比较看重经验和动手能力,面试的时候尽可能展示你的作品或者案例,如果当前没有,则需要在日常学习,练习,积累
  3. 可以掌握一些可视化工具和数据可视化的思维,熟练掌握报告和表达的技巧,数据分析的工具多样,方式多样,只有能够正确解读数据且让对方看懂听懂才是有价值的

不足

本次分析并没有按照分析报告的方式来呈现,文章中以个人的整个分析过程来撰写,希望能够与各位朋友一起交流学习,如果你不同意我文章中的观点,欢迎指正交流。

文章中我附上了我的数据集以及分析的代码链接,有兴趣的朋友可以重复我的过程,甚至做更加深入有趣的分析,如果有新的发现和观点,希望也能让我知道,向你们学习。

局限

数据仅采集到 449 份样本,数据量相对少一点,因此数据分析的结果需要大家用怀疑的心态来看待,且仅局限在互联网行业,相对于其他行业,本文章的分析结果只能作为一个参考。





收藏 推荐 打印 | 录入:Cstor | 阅读:
本文评论   查看全部评论 (0)
表情: 表情 姓名: 字数
点评:
       
评论声明
  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款