作者 | ChuangXin Lin

译者 | 王强

策划 | 刘燕

本文最初发布于 Medium 网站,经原作者授权由 InfoQ 中文站翻译并分享。

我们身处一个数据无处不在的时代。过去几年来,劳动力市场上与数据相关的岗位一直是热门。数据科学家、数据分析师和数据工程师是与数据相关的三大职业类别。如果你有兴趣进入这个领域,或者已经身在其中,那么你应该了解一下数据领域的行业就业现状。当你踏上数据行业的职业生涯,相关岗位工作要求、薪水和满意度等信息可以帮助你做足准备。

在这篇文章中,我会以 StackOverflow 年度开发人员调查为基础来探索一些有趣的问题。文章包含一些数据分析和建模内容,分为三大部分:

第 1 部分:工资

  • 数据行业中哪些岗位的薪水最高?

  • 不同国家之间的工资对比;

  • 工资水平与工作年限的对应关系;

  • 不同性别之间的工资差异;

  • 工资 vs 工作满意度。

第 2 部分:数据行业的就业市场变化,对比 2020 年和 2019 年的数据

  • 数据行业岗位数量的变化;

  • 工资变化;

  • 工作满意度的变化。

第 3 部分:工作满意度

  • 使用 XGBoost 的多类分类来预测工作满意度;

  • 通过建模获得的洞察。

    本文所用数据的说明:

在呈现分析结果之前,有必要解释一些重要的数据处理步骤。读者可以先跳过本节,在后文遇到疑问时再回来细读。

这份调查的问题主要针对具有一般开发人员背景的受访者,包括软件开发和数据分析领域。2020 年的调查数据包含 64,461 份回复。我利用了“DevType”问题并对数据进行了预处理,因此只会分析身处数据相关岗位的受访者。问卷中的问题如下。

以下哪一项符合你的情况?请选择所有适用的选项。

  • 学术研究员

  • 数据或业务分析师(DA)

  • 数据科学家或机器学习专家(DS)

  • 数据库管理员

  • 设计师

  • 开发人员,后端

  • 开发人员,桌面或企业应用程序

  • 开发人员,嵌入式应用程序或设备

  • 开发人员,前端

  • 开发人员,全栈

  • 开发人员,游戏或图形开发人员,移动设备

  • 开发人员、QA 或测试人员

  • DevOps 专家

  • 教育家

  • 工程师,数据(DE)

  • 工程师,现场可靠性工程经理

  • 市场营销或销售专业产品经理

  • 科学家

  • 高级管理(CSuite、VP 等)学生

  • 系统管理员

  • 其他

请注意,受访者可以选择多个 DevType,甚至可以选择多个数据岗位(即 DA、DS、DE)。我只保留了与数据岗位关联的数据条目,并按不同类型的岗位做了分类。因此,两个新创建的实例可能来自具有多个数据岗位的同一个数据实例。

为了让分析结果更加一致可靠,我还过滤了“就业状态”,只保留当前有工作的受访者。经过这些数据准备工作,我们筛选出了 11,186 个数据岗位实例。2019 年调查数据也做了同样的数据准备,创建了 17,370 个实例,它们会与第 2 部分中的 2020 年数据进行比较。

第 1 部分:工资情况

我们先来看看这三种数据职业的分布情况。在这里我们可以看到它们的数字非常接近,DA 排名第一,然后是 DS、DE(图 1a)。就平均工资(美元)而言,我们可以看到 DS 和 DE 几乎相同,而 DA 的工资略低(图 1b)。

图 1(a):2020 年调查中的数据职业分布。(b):数据职业的薪水。

接着我们来看不同国家(受访者最多的前 9 个国家)的工资水平,我们可以在图 2 中看到一些有趣的细节:

  • 美国的数据行业工作收入最高。美国的平均工资远高于其他国家,甚至高于西方其他发达国家(即德国、英国、加拿大)。

  • 与 DA 相比,DS(和 DE)不一定是收入较高的工作。事实上,我们看到在加拿大和法国,DA 的薪水比 DS 高很多。这可能会让你想起一句话:数据科学家是 21 世纪最性感的工作。它可能不像你想象的那么性感,至少从收入调查数据来看不那么理想 然而,StackOverflow 调查数据并不一定准确反映了现实世界的总体情况。

图 2:不同国家数据行业工作的薪水。

与薪水相关的一个重要因素是工作年限。在调查数据中,我们用“专业编程年数”来评价工作经验,将受访者按“专业编程年数”分为四组。在图 3 中,从“0-3 年”到“6-13 年”,我们可以看到工资逐渐缓慢增加,而“13+ 年”组的工资有大幅上涨。

图 3:各个“专业编程年数”组中数据岗位的薪水。这样的分组是为了让各组中的样本数尽量相当。

另一个有趣且重要的观察角度是该领域的性别分布。开发人员的性别差异是一个受长期关注的问题。我们在这个行业中也看到了这个问题(图 4)。

图 4:数据行业工作中的性别分布。为了方便做图,所有非二元性别都被分到了“其他”组中。

在工资方面,我们可以看到男性和女性之间没有实质性差异(图 5a),但女性的工资波动范围更大(高方差,图 5b)。

图 5:按性别划分的数据行业工作薪资。(a)条形图。(b)小提琴图。

最后,让我们看看工作满意度与薪水之间的关系。正如你所料,工作满意度并不总是与薪水呈正相关,这也是图 6a 中的数据显示的结果。这也可能表明,有一群数据工程师对自己的工作非常不满意,但他们的薪水却很高(见图 6b 最右侧的绿色高条)。当然,还有许多因素会影响我们在现实世界中的工作满意度。在第 3 部分中,我将应用机器学习建模来预测工作满意度并寻找更多见解。

图 6:薪水 vs. 工作满意度。

第 2 部分:数据行业工作的变化

对比 2020 年和 2019 年的数据

在这一部分中,我们来看看数据领域的一些趋势。由于我们的分析基于 StackOverflow 的调查数据,而他们 2018 年的调查形式与 2019 年和 2020 年有较大差异,因此我们只使用 2019 年、2020 年的数据来做对比。

我们首先注意到,2020 年从原始数据中筛选出的有效调查回复总数为 53,159,也就是说 15.69% 的受访者从事与数据相关的工作。相比之下,2019 年的调查数据有 77,420 份有效调查回复,16.71% 的回复者从事数据相关工作。

图 7:数据岗位和分布的数量,2019 年对比 2020 年。请注意,由于我们创建数据实例的方式,这里的总数大于调查回复的数量。

首先,数据显示这三个岗位之间的分布几乎没有变化(图 7)。2019 年的统计数字更大,因为 2019 年的调查有更多的回复,这并不一定意味着 2020 年与数据相关的工作数量有所减少。

图 8:2019 年和 2020 年之间的工资比较。

谈到薪水的变化,也许这是我遇到的最令人惊讶的结果。我们可以看到所有三个数据岗位的薪水都减少了,总体平均减少了约 16,000 美元(图 8)。

图 9:2019 年和 2020 年的工资对比,仅美国数据。

为了进一步验证这一变化,我只使用美国的数据做了图,并且观察到了类似的工资下降情况(图 9)。这次我们看到 DS 的薪水只是略有下降,而 DA 和 DE 的下降幅度更大。如果能使用其他数据源来交叉验证这种下降趋势是否属实,会很有趣的。如果事实的确如此,那么原因是什么?这又会产生什么影响?附带说明一下,我首先认为工资的这种下降趋势可能是由于 Covid-19 以及市场低迷造成的。但 2020 年的调查数据实际上是在 2020 年 2 月收集的,那时疫情尚未产生影响。

最后,我们来看看工作满意度,这是帮助深入了解就业市场的另一个重要因素。问卷中关于工作满意度的问题如下:

你对目前的工作满意吗?(如果你从事多项工作,请回答你花费最多时间的工作。)

  • 非常不满意 Very dissatisfied(-2)

  • 有点不满意 Slightly dissatisfied(-1)

  • 一般水平 Neither satisfied nor dissatisfied(0)

  • 略满意 Slightly satisfied(1)

  • 非常满意 Very satisfied(2)

我将不同等级的满意度转换为范围从 -2 到 2 的值。平均分数如图 10 所示。我们可以观察到,在 2019 年和 2020 年,DS 的满意度得分最高,其次是 DE 和 DA。此外,从 2019 年到 2020 年,所有三个数据岗位的满意度都有所下降,这与工资的变化趋势是一致的。

图 10:2019 年和 2020 年工作满意度对比。

第 3 部分:工作满意度预测

在本文的最后一部分,我想构建机器学习模型来预测工作满意度。正如我们之前看到的,工作满意度问题有五个答案选项。因此这里的预测将是一个多分类问题。

为避免不同年份的数据分布不一致,这里仅使用 2020 年调查数据进行建模。另外,请注意数据是不平衡的。“非常满意”和“比较满意”占总数据的 60% 以上,“非常不满意”不到 10%。

一些重要的数据处理步骤包括:1)数据清洗;2)缺失数据插补;3)分类数据编码;4)特征选择 / 工程。这里我会跳过这些技术细节,你可以参考 GitHub 存储库 中的笔记本和代码以了解更多细节。对于建模,我使用 XGBoost 算法和 oneVsRest 方法来解决这个多分类问题。

3.1:探索性数据分析(EDA)

在展示建模结果之前,我将展示一些 EDA 作为数据科学项目的例程,让你快速了解工作满意度。如 第 1 部分 所示,工资和工作满意度不一定相互关联(图 6)。那么其他可能影响工作满意度的重要因素都有哪些呢?

如图 11 所示,公司规模和工作满意度之间肯定存在某种模式,但我们很难得出一般性结论。合理的猜测是,在小公司中,“非常满意”的比例往往高于“比较满意”。

图 11:不同规模公司的工作满意度分布。

加班是另一个与一般意义上的工作满意度相关的因素。然而这种关联就算存在也是模糊的(图 12)。的确,在从不加班的组中,“非常满意”的比例并非最大。

图 12:不同加班时间组之间的工作满意度分布。

最后让我们检查一下不同国家的工作满意度分布。一个观察结果很显眼:在印度和巴西等发展中国家,“非常满意”的比例相对较低。尽管如此,我们不能就此断定这是数据领域独有的特殊现象。相反,无论哪个领域,发展中国家“非常满意”的比例都可能较低。

图 13:不同国家的工作满意度分布。请注意,为简单起见,我们没有在建模步骤中使用国家(Country)作为特征。国家是一个高基数特征,应该使用更高级的编码技术,而不是简单的单热编码(one-hot-encoding)。

3.2:使用 XGBoost 处理多分类问题

这里我们来关注模型性能,所以检查混淆矩阵。我们的模型有两个观察结果:

  • 模型存在过拟合问题,尽管在建模步骤中已经应用了多种技术来解决过拟合问题;

  • 该模型可以在合理的水平上正确预测次要类别,尽管将实例预测为“非常满意”和“略满意”会出很多错误。

  • 该模型被“非常满意”和“略满意”混淆(图 14,右)。

图 14:混淆矩阵的模型性能。左:训练数据的混淆矩阵。右:测试数据的混淆矩阵。

当然,模型还有改进的余地,但与使用朴素贝叶斯的基线模型(这里没展示)相比,模型性能相当不错。此外,数据集本身可能也存在挑战,因此无论如何都难以学习一般模式(即过拟合问题)。

3.3:模型可解释性和见解

为了理解模型并获得更多见解,我们来检查在树构建过程中计算的顶级特征(图 15)。

使用单热编码给解释带来了一些不便,因为原来的特征现在被分解成多个二值特征。两个最重要的特征是关于“NEWOnboardGood”的:“NEWOnboardGood_1”表示对“你认为贵公司的入职流程是否良好”的回答为“是”,“NEWOnboardGood_2”表示“否”。很明显,良好的入职流程通常与高工作满意度相关。

我们还看到“UndergradeMajor”是“NEWOnboardGood”之后的另一个重要特征。事实上,模型从数据中学到的是:

  • 如果受访者是自然科学(如生物、化学、物理等)本科专业,则更有可能表示“非常满意”;

  • 对于拥有另一工程学科(如土木、电气、机械等)本科专业的受访者来说结果类似

“Bash/Shell/PowerShell”特征很有趣,使用“Bash/Shell/PowerShell”作为其编程语言之一的受访者比不使用它们的受访者更有可能“非常满意”。至少这是模型从数据中学到的结果。

图 16:XGBoost 树构建过程中通过增益计算出的特征重要程度。

我们可以使用 SHAP(一种非常通用的模型可解释性工具)来更好地理解模型行为。我们鼓励你在笔记本中探索更多见解。在这里,我将向你展示基于 SHAP 值的顶级特征,并展示两个关于 Salary(薪资)和 Company Size(公司规模)的依赖图示例。

首先,我们将看到 SHAP 值给出的顶级特征(图 17)与节点分裂期间根据信息增益计算的特征不同(图 16)。SHAP 值方法被认为能更一致地评估特征重要性(请参阅 SHAP 论文以供参考)。在这里,排名靠前的特征是“Salary”“NEWOnboardGood_1”“Age”“YeasCode”“OrgSize”,在我看来更符合常识。

图 17:来自 SHAP 值的主要特征,与图 16 中来自信息增益的特征对比。从 0 级到 4 级:“一般水平”“有点不满意”“略满意”“非常不满意”“非常满意”。

图 18:薪水的 SHAP 依赖图。

图 19. 公司规模的 SHAP 依赖图。OrgSize 的映射是:{1: ‘Just me — I am a freelancer, sole proprietor, etc.’, 2: ‘2 to 9 employees’, 3: ’10 to 19 employees’, 4: ’20 to 99 employees’, 5: ‘100 to 499 employees’, 6: ‘500 to 999 employees’, 7: ‘1,000 to 4,999 employees’, 8: ‘5,000 to 9,999 employees’, 9: ‘10,000 or more employees’, -1: ‘Missing’}

图 18 中的 SHAP 依赖图告诉我们如何使用薪水来预测实例是否“非常满意”。我们可以看到,总体而言,更高的薪水意味着实例更有可能“非常满意”,正如增长趋势所表明的那样。

对于公司规模,较小的规模倾向于对“非常满意”的预测结果做出积极贡献(图 19)。

结    论

在这篇文章中,我们使用 StackOverflow 调查数据进行了一些探索性分析,并对数据行业就业市场有了一些了解。

  1. 我们分析了不同数据岗位的薪资分布,同时也考虑了其他因素,如国家、工作年限、性别。

  2. 我们将 2019 年的调查数据与 2020 年的数据进行了比较。令人惊讶的是,数据相关工作的薪水和工作满意度都下降了。

  3. 最后,我们构建了一个 XGBoost 多分类模型,通过检查特征重要性和依赖关系来预测工作满意度,并获得了对工作满意度的一些洞察。

这篇文章中的分析和建模更多是出于实践目的,而没有进一步调查就无法得出可靠的结论。最重要的是,StackOverflow 调查数据本身就可能存在偏差,不一定代表真实世界的群体情况。我希望你读完这篇文章能得到一些乐趣。要查看更多技术细节,请访问 GitHub 存储库。

原文链接:

https://towardsdatascience.com/salary-satisfaction-trend-of-data-jobs-f47bdf72afa3

扫码加好友,加入海归Python编程和人工智能群

你也「在看」吗?????

薪酬与工作满意度大调查:数据科学家还是21世纪最性感的职业吗?相关推荐

  1. 数据科学家:21世纪最性感的职业

    他们是数据骇客,分析师,沟通高手,值得信任的咨询师,这些东西组合到一起极具威力,也极其少见. 数据科学家:21世纪最性感的职业 8350阅读 译者:谈和译 数据科学家:21世纪最性感的职业 Thoma ...

  2. 数据科学家:21世纪最脏的工作

    全文共2311字,预计学习时长7分钟 来源:cfzyjsxy 在大数据世界里,数据科学家受到人们的尊敬,他们采用人工智能或深度学习的方法,提出宝贵的商业见解,造福社会. <哈佛商业评论>曾 ...

  3. 二十一世纪最性感的职业:数据科学家

    性感事物方面的权威<哈佛商业评论>宣布,"数据科学家"是二十一世纪最性感的职业.所谓性感,既代表着难以名状的诱惑,又说明了大家都不知道它干的是什么. 不管老板懂不懂数据 ...

  4. 中国的数据科学家阶层正在形成

    有人给予了大数据专家许多美好的称号,比如"数据开采者"."数据建筑师"等,但其中最时髦的当属"数据科学家".当记者在互联网上搜索" ...

  5. 数据科学家是个性感的工作?我信你个鬼!

    数据科学家40%是个吸尘器,40%是个清洁工,剩下20%是个算命的. 作者 | Jingles 译者 | 香槟超新星,责编 | 夕颜 出品 | CSDN(ID:CSDNnews) 根据<哈佛商业 ...

  6. 走在“辞职”路上的数据科学家们!

    [CSDN 编者按]很多文章都说,数据科学是21世纪"最性感"的工作,数据科学家可以赚得盆满钵满,以至于数据科学看起来是完全梦幻般的美妙工作.但事实表示,数据科学家们通常每周都会花 ...

  7. 计算机科学家 收入,你离年薪100万的数据科学家还差10个“码农”

    <哈佛商业评论>曾评价,"数据科学家"是21世纪最"性感"的工作.性感不性感不知道,但是"有钱"是真的.在某求职网站随便输入&q ...

  8. 数据科学家:为什么我要离职……

    导读:根据英国<金融时报>的报道,数据科学家通常"每周会花1到2个小时寻找新工作".此外,文章还指出:"在声称寻找新工作的开发者中,机器学习专家位居第一占比达 ...

  9. 大咖 | “大数据之父”达文波特:成功的数据科学家不一定要有研究生学位

    大数据文摘作品 作者:托马斯·H·达文波特 2006年6月,乔纳森•高德曼(Jonathan Goldman)进入商务社交网站LinkedIn工作.作为斯坦福大学物理学博士,他醉心于无处不在的链接和丰 ...

最新文章

  1. Linux常用命令学习(shell 脚本)
  2. [HEOI2014]平衡(整数划分数)
  3. mysql 过程 的函数的区别是什么意思_Mysql中存储过程和函数的区别是什么
  4. Express + mongoDB + nodejs
  5. 为什么在极端恶劣环境下不能使用商用以太网交换机?
  6. c语言错误re,c语言malloc之后再realloc的有关问题
  7. 软件_crontab任务配置失败原因总结和技巧
  8. ZooKeeper(3.4.5) - 配置伪集群模式
  9. ASP程序部署在IIS上的步骤
  10. 写作技巧 - Markdown常用Emoji表情符号
  11. WEB前端 -- onfocus=quot;this.blur()quot;
  12. 伽码值(灰度系数)相关
  13. epub文件格式揭秘
  14. 漏刻有时数据可视化Echarts组件开发(27):盒须图(箱线图)前后端php交互的实战案例
  15. 宝塔linux面板和centOS的区别,关于 Linux Centos7 宝塔面板的问题
  16. 密码找回,验证码绕过漏洞详解
  17. idea 拉取gitlab上面的项目
  18. 【MATLAB】高塔观测数据波文比法计算感热及潜热通量
  19. 年薪30w还是白菜价?大数据工程师凭什么?
  20. How to Flash a ROM to Your Android Phone

热门文章

  1. js计算字典的个数_JS数据结构与算法_集合字典
  2. Anaconda下安装tensorflow-gpu踩坑日记
  3. JDK 8 十大新特性详解
  4. selenium与python自动化测试模拟登录百度
  5. Python collections的使用
  6. 手掌手指分割算法(源码)
  7. TortoiseSVN的安装和使用
  8. arcgis engine 获取高亮Feature、element
  9. 学习nodejs+express+angular+socket.io ,投票demo
  10. 我的Java之路(7)