1. 整体说明
数据来源:https://insights.stackoverflow.com/survey
数据清洗,预处理和部分绘图工具:Juypter Notebook (Python 3)
BI 画图显示工具:Tableau 2018
2. 问题假设
数据集来自Stack Overflow 2018年的10万条用户问卷数据,根据已有的数据,提取一些相应的问题用于分析。
3. 一维数据分析
3.1 性别
结论:男女比例 92:6,接近15:1.这个比例还是挺失衡的。
备注:因为空数据较多,有30%的数据因为NA而被清洗,所以应该是存在误差的。
3.2 年龄结论:34岁以下占据3/4,还是比较偏壮年劳动力。
备注:18岁以下还有2.5%, 长江后浪拍前浪。
3.3. 编程年数
结论:50%在8年以内,5年左右是个峰值,10年以上的老鸟在逐级减少。
备注:30年+的意思是有些老人家1989年之前就已经是程序员了,可谓扫地僧级别。
3.4 国家分布
结论:欧美印占据主流,中国的码农吃亏在语言上。
备注:也可能闷声发大财,我们就是不爱填问卷。
3.5 工作时长
结论:工作9小时以上的有65%,不负程序猿之名。
备注:联系年龄图,对身体的负担主要在脑力部分。
3.6 废寝忘食
结论:
- 有40%会每周至少有1次忙的顾不上吃饭;
- 考虑1周工作5天的话,3-4次和每天都有的加起来就占了10%
备注:如果说1周工作7天的话,那就还好啦。
3.7 上次跳槽
结论:50%+2年内换过工作,只有20%不到能工作4年以上。
备注:把握机会的能力还是比较强的。
4. 二维数据分析
4.1 使用语言
结论:JS,SQL,JAVA,Net等老牌语言仍然占据主流位置。
备注:为了更好的说明变化趋势,将2017年的数据也拿出来做对比如下。
结论:
- 绝大多数语言的比例都上升了,考虑到17年样本量较小,统计量较少等因素,因而比例和相对变化率并不能用于说明绝对问题,比如这一年上涨最快的是HTML,CSS,Bash,是因为17年并没有统计这些语言,而非语言本身的增长;
- 考虑到这个问卷填写方式,本空属于多选,所以普遍增多的趋势可以说明大部分填写问卷的人掌握的编程语言变多了; - 考虑到这个问卷填写方式,本空属于多选,所以普遍增多的趋势可以说明大部分填写问卷的人掌握的编程语言变多了;
- 问卷中除了当前使用语言,还有未来想使用的语言,因此将这两项数据拿来作对比如下。 - 问卷中除了当前使用语言,还有未来想使用的语言,因此将这两项数据拿来作对比如下。
结论:在未来学习倾向上,大家还是倾向于喜新厌旧的,越是主流的语言,“抛弃”的概率就越大,小众的语言反而更具有吸引力。
备注:为了量化“喜新厌旧”的程度,根据(吸引度-使用度)生成下表。
结论:
- 第1类以HTML,CSS,SQL等一众老牌主流为代表,被“抛弃”度最高;
- 第2类以Go,Kotlin,Rust等为代表,小众里的热点网红;
- Python是唯一兼具使用度前10和网红度前5的语言,可谓大势所趋,前途无量。
4.2 使用平台
按语言的分析思路,我们同样可以类比到使用平台上。
结论:
- 在当前使用度较高的平台中,Windows和Wordpress是明显“被抛弃度”比较高的;
- 较小众的平台,比如GoogleHome,Gaming Console同样未来被看好程度比较高;
- 为了量化(追求度-使用度),生成下图
结论:
- Windows和Wordpress是唯二“被抛弃度”超过1%的平台,而且是大幅度超过,这说明在程序猿领域,大家对他们两的趋势并不看好;
- Google(Google Cloud,Android,Google Home)和Amazon(Amazon Echo,AWS)都在比较被看好的前列,说明程序猿对这两家公司的产品还是比较认可的;
- 苹果(IOS,Apple Watch,Mac)虽然比不过上述两家,但仍然处在相对比较看好的位置;
- Raspberry Pi的大幅领先反映了程序猿对开源硬件及相关物联网领域的未来看好趋势。
4.3 工资报酬
工资报酬数据在清洗的过程中有很多的坑,比如无效数据,多性别认知,不同国家货币单位(比如157条以比特币为单位的样本)和薪资水平,为了避免一概而论,下图首先探讨的范围是,欧美程序猿工资与性别关系(总样本数量为23705条 )。
结论:
- 从平均数和中位数来看,程序猿收入平均要略高于程序媛;
- 大部分人年收入在$15万以下,特别是$4万-$8万是最为密集的区间,呈现典型的正态分布;
- $15万以上的程序媛比例急剧减少,说明超级程序猿中女生的稀缺状态;
- 考虑虽然程序猿的平均收入比程序媛要高$10000,但中位数就只差$1000,以及$15万以上程序媛的绝迹状态。可以说在普通程序猿的水平里,男女性别差异并没有显著影响;在越高的水平中,女生比例越低。
结论:
- 和欧美相比,其他地区平均收入和中位数都要低$3万;
- 男女之间的收入差距也比欧美要更大(中位数差距增加1倍);
- 不论男女,低收入比例均有增加,在0-$2万最为聚集(前期已经排除了0数据),假定技术水平相当的话,提升收入最为有效的方式是去欧美…
4.4 相关性分析
from scipy import stats
stats.pearsonr(dfSalaryAnalysisYears['ConvertedSalary'], dfSalaryAnalysisYears['YearsCodingProf'])
#(0.14506311111766515, 4.156305080722434e-216)
stats.spearmanr(dfSalaryAnalysisYears['ConvertedSalary'], dfSalaryAnalysisYears['YearsCodingProf'])
#correlation=0.47444795632558934, pvalue=0.0
stats.kendalltau(dfSalaryAnalysisYears['ConvertedSalary'], dfSalaryAnalysisYears['YearsCodingProf'])
#KendalltauResult(correlation=0.35444457842824967, pvalue=0.0)
结论:
- 以上面代码为例,虽然用pearsonr,spearmanr,kendalltau3种方法计算了相关程度,2种呈现中度相关,一种呈现低度相关,p-检验值也都小于0.5;
- 但从如上图所示的数据图来看(以其中1张为例),这种相关性是有疑问的,并不足以作为证据使用;
- 因为考虑可能是数据处理有瑕疵的原因,因而重新选取其中欧美部分有工资的数据(16864条)进行相关性分析,如下图所示。
结论:
- 有3对数据呈现某种程度的正相关,年龄和编程职业长度较为明显,也容易理解。工作满意度和职业发展满意度呈现中等相关,其中一种态度对另一种态度有中等程度正面影响。工作满意度和当前跳槽意愿呈现弱相关,也即当前工作比较满意的话,更换工作意愿就低;
- 工资发放形式(年薪,月薪,周薪)和货币类型(欧元,美金)的强负相关属于干扰因素,可以排除;
- 最为希望看到的和工资的强相关性并没有出现,潜在原因有2种可能性:1是确实这些因素中不存在强相关,而在别的因素中,比如编程语言(但这种思路也有相应的问题);2是原始数据和数据处理依然存在改进的余地,比如工作年限从定性的分组改为连续的数值,可能与工资的相关性就会加强。