内容简介:在《考虑到招聘岗位的数据中含有城市信息(city变量),不妨再结合城市与省份的数据,在原有的数据基础上再添加省份字段,代码如下:
前言
在《 手把手带你抓取智联招聘的“数据分析师”岗位! 》一期中我们分享了如何抓取智联招聘中“数据分析师”岗位的数据信息(数据截止到2018年11月4日),在本期我们将基于已有的数据对其作进一步的分析和探索。在探索过程中,我们将围绕如下几个主题进行问题的回答:
- 哪些省份和城市对数据分析师的需求比较高?
- 数据分析师岗位在全国和TOP3城市的薪资差异是否显著?
- 企业在招聘数据分析师岗位时,对应聘者的工作经验和学历要求是怎样的?
- 不同的工作经验和学历在薪资上是否存在差异呢?
- 招聘数据分析师岗位的企业,都是哪些类型的企业?
实操
数据分析师在全国的需求分布
# 导入第三方模块 import pandas as pd import numpy as np import matplotlib.pyplot as plt # 读入招聘信息的数据 jobs = pd.read_excel('jobs.xlsx') # 数据预览 jobs.head(5)
考虑到招聘岗位的数据中含有城市信息(city变量),不妨再结合城市与省份的数据,在原有的数据基础上再添加省份字段,代码如下:
# 读取省份与城市的对应数据 Province_City = pd.read_excel('Province_City.xls') # 将省份信息加入到jobs表中 jobs = pd.merge(left = jobs, right = Province_City, left_on='city', right_on='City') # 删除jobs表中的City变量(该变量是多余的) jobs.drop(labels='City', axis = 1, inplace = True)
接下来,我们来探索一下数据分析师岗位在全国各省份和各城市的需求情况:
# 设置中文和负号正常显示 plt.rcParams['font.sans-serif'] = 'Microsoft YaHei' plt.rcParams['axes.unicode_minus'] = False # 近5000个数据分析的职位,在各省份的分布(Top10) jobs.Province.value_counts()[:10].plot(kind = 'bar', color = 'steelblue', alpha = 0.8) # 显示图形 plt.show()
如上图所示,这里显示了全国各省招聘数据分析师岗位数量的Top10,不难发现,前三甲都是国内非常发达的省份。但比较令我吃惊的是山东和安徽排在了江苏前面,所以,个人觉得数据相关的岗位在山东和安徽也有比较好的市场(可能大家还不知道哦,山东在全国的GDP排在了第三呢,绝对是低调的奢华)。在了解了各省份的需求情况,再从城市维度看一下Top10的分布:
# 近5000个数据分析的职位,在全国各城市的分布(Top10) jobs.city.value_counts()[:10].plot(kind = 'bar', color = 'steelblue', alpha = 0.8) # 显示图形 plt.show()
如上图所示,从城市级别来看,北京、上海和深圳对数据分析岗的需求最多,尤其是北京,她的需求量甚至超过了上海、深圳、合肥的总和。那么,可能会有网友非常关心数据分析师岗位的薪资情况,下面我们就针对薪资做一个探索和介绍。
薪资水平的探索
需要说明的是,由于原始数据中绝大多数的薪资都是一个范围,如“10K-15K”,当然还有其他形式的薪资,如“薪资面议”、“校招”和“1K一下”。对于这些非数值的薪资,我是这样处理的:
- 对于有范围的薪资,取范围中两个数的平均值,如“10K-15K”的平均值为12.5K;
- 对于“薪资面议”的情况,当作缺失值,后面将以整体薪资的中位数作为填充;
- 对于“校招”的情况,根据个人的经验,按3500元的待遇为填充(主要是发达城市,由于发达城市的需求超过了总需求的一半);
- 对于薪资为“1K以下”的情况,月薪设置为1000; 下面就通过具体的代码,对薪资数据进行处理和探索:
# 将未知薪资的特殊数据提取出来 salary1 = jobs.salary[jobs.salary.isin(['薪资面议','校招','1K以下'])] # 将有薪资范围的数据提取出来 other_salary = jobs.salary[~jobs.salary.isin(['薪资面议','校招','1K以下'])] # 提取出薪资的下界 salary_low = other_salary.str.replace('K','').str.split('-').apply(lambda x: float(x[0])) # 提取出薪资的上界 salary_high = other_salary.str.replace('K','').str.split('-').apply(lambda x: float(x[1])) # 对于薪资为面议的情况,将其转换为缺失值,并用整体水平的平均值代替 salary1[salary1 == '薪资面议'] = np.nan # 对于薪资为校招的情况,根据经验将月薪设置为3500 salary1[salary1 == '校招'] = 3500 # 对于薪资为1K以下的情况,月薪设置为1000 salary1[salary1 == '1K以下'] = 1000 # 将处理好的薪资水平作合并 salary2 = pd.concat([salary1,1000*(salary_low+salary_high)/2]) # 使用薪资的中位数填充缺失值 salary2.fillna(value = salary2.median(), inplace=True) # 绘制薪资数据的直方图(设置组距为3000) salary2.plot(kind = 'hist', bins = np.arange(salary2.min()-1000, salary2.max()+3000,3000), color = 'steelblue', edgecolor = 'black') plt.show()
如上结果所示,为全国薪资的直方图,从图中可知,绝大多数岗位的薪资落在3K-12K。如果只考虑北京、上海和深圳这三个城市(因为需求量大,经济发达),可以进一步得到该岗位的薪资范围,代码如下:
# 给salary2向量设置名称属性 salary2.name = 'salary2' # 将salary2字段加入到jobs数据集中 jobs = pd.concat([jobs, salary2], axis = 1) # 绘制北上深三个城市的薪资直方图 salary_subset = salary2[jobs.city.isin(['北京','上海','深圳'])] salary_subset.plot(kind = 'hist', bins = np.arange(salary2.min()-1000, salary2.max()+3000,3000), color = 'steelblue', edgecolor = 'black') plt.show()
如上图所示,对于一线城市的数据分析师岗位而言,绝大多数岗位的薪资在6K-15K,相比于全国的水平,要高一个阶段。所以,一线城市的薪资和全国比较,还是存在显著差异的。当然,读者如果感兴趣,也可以从定量的角度(采用t检验),验证一线城市和全国的薪资差异。
企业对工作经验和学历的要求
在聊完企业提供的薪资后,就该聊聊他们对应聘者学历和工作经的要求啦。由于学历变量的水平值过多,故考虑把几个相似的学历作合并处理,如将高中、中技、中专和大专设置为”本科以下”,其他的学历不调整:
# 将受教育水平划分为本科以下、本科、硕士、博士和不限五种 jobs.eduLevel[jobs.eduLevel.isin(['高中','中技','中专','大专'])] = '本科以下' # 设置图框,将横、纵坐标轴作标准化处理,保证饼图是一个正圆,否则为椭圆 plt.axes(aspect='equal') jobs.eduLevel.value_counts().plot(kind = 'pie', autopct='%.1f%%', explode = [0,0.1,0,0,0]) # 突出显示“本科以下”的学历 # 去除y轴标签 plt.ylabel('') plt.show()
如上饼图所示,本科学历的比重最多,占到43.8%;其次是本科以下的学历,占比为37%;排第三的是学历不限,个人觉得对于学历不限的情况,企业可能更看重应聘者的工作经验。很奇怪的是,对于硕士和博士这样的高学历,总共占比才3.8%(个人觉得可能是11月份属于招聘淡季,对高学历人才的需求比较低)。同理,在了解一下工作经验的分布情况:
plt.axes(aspect='equal') jobs.workingExp.value_counts().plot(kind = 'pie', autopct='%.1f%%') plt.ylabel('') plt.show()
如上图所示,企业对于工作年限不限的比例最高,其次是1~3年,紧接着是3~5年。这个分布比例其实还是非常特殊的,本人只能将其归咎于11月份时间节点不好,一是用人单位想招人招不到,故放低经验要求,二是有工作经验的人在此时不愿意跳槽。
前文的几个饼图全都是基于全国所有城市的数据绘制出来的,感兴趣的朋友也可以筛选出一线城市(如北京、上海、深圳、广州等),并对其探索用人单位对学历和工作经验的要求。
工作经验和学历对薪资的影响
接下来要探索的就是不同学历和工作经验在薪资上的差异,这里重点关注一线城市(以北京、上海、深圳和广州为例)的数据特征。
# 不同的工作年限,在薪资上的体现(限定在北京、上海、深圳和广州四个城市) # 筛选指定城市的数据 jobs_subset = jobs.loc[jobs.city.isin(['北京','上海','深圳','广州']),] # 按工作经验分组 grouped = jobs_subset.groupby(by = 'workingExp') # 计算各工作经验下的平均薪资 Exp_Salary = (grouped.aggregate('mean')['salary2']).sort_values(ascending = False) # 绘制条形图 Exp_Salary.plot(kind='bar', color = 'steelblue', alpha = 0.8) # 添加数值标签 for x,y in enumerate(Exp_Salary): plt.text(x,y+1000,'%s' %round(y,1),ha='center') # 限定y轴范围 plt.ylim(7000,90000) # 去除x轴标签 plt.xlabel('') plt.show()
如上图所示,工作年限越长的对应的薪资水平就越高(最为突出的是十年以上的工作经验,平均薪资在85000)。总体来说,数据分析的工种在各个工作年限上的平均薪资还是比较高的(相比于其他工种而言,如会计、销售、服务业等)。同理,也可以根据上面的代码,稍作修改,就可以绘制出不同学历在薪资上的差异条形图:
# 不同的学历,在薪资上的体现(限定在北京、上海、深圳和广州四个城市) grouped = jobs_subset.groupby(by = 'eduLevel') Edu_Salary = (grouped.aggregate('mean')['salary2']).sort_values(ascending = False) Edu_Salary.plot(kind='bar', color = 'steelblue', alpha = 0.8) for x,y in enumerate(Edu_Salary): plt.text(x,y+1000,'%s' %round(y,1),ha='center') plt.ylim(7000,20000) plt.xlabel('') plt.show()
如上图所示,硕士的平均薪资是最高的,其次是本科,而博士学历还是挺出乎预料的,尽然排在了第三。后来从数据中查询发现,博士学历的岗位只有三个,都属于北京的岗位,薪资分别是6K-12K、15K-25K和10K-20K。需要注意的是,这里探索得到的结论(博士学历薪资第三)并不代表普遍现象,可能还要归咎于爬出来的数据属于11月份的时间节点,如果是来年的3~4月份,也许数据会更加接近真实。
OK,横向对比工作经验和学历水平,不难发现,工作经验绝对能够影响到薪资水平,试想,如果站在企业的角度考虑,相信他们更看重的是应聘者的工作经验,而非学历。
企业的类型分布
最后,再来探索一个问题,招聘数据分析师岗位的企业,都属于哪些类型的企业呢?这里通过 Python 代码绘制企业类型的条形图:
# 各企业类型的分布比例 (jobs.type.value_counts()/jobs.shape[0]).plot(kind = 'bar', color = 'steelblue', alpha = 0.8) # 显示图形 plt.show()
如上图所示,在搜集的近5000个数据分析职位,民营企业占到一半以上;其次是股份制企业,占比为18%左右;排在第三的是合资企业,这三类企业占到所有企业的80%以上。
结语
OK,使用Python完成数据分析岗的探索和分析就分享到这里,如果你有任何问题,欢迎在公众号的留言区域表达你的疑问。同时,也欢迎各位朋友继续转发与分享文中的内容,让更多的人学习和进步。
关于Python的其他知识(包括数据的清洗、整理、运算、分析、可视化和建模),读者可以查阅我的新书《从零开始学Python数据分析与挖掘》,如果您对书中的内容有任何疑问,都可以联系我。
本文中的代码和数据可以从百度云盘中下载,只需关注“数据分析1480”公众号,并回复“智联招聘”即可。
版权声明: 作者保留权利。文章为作者独立观点,不代表数据人网立场。严禁修改,转载请注明原文链接:http://shujuren.org/article/784.html
数据人网: 数据人学习,交流和分享的平台,诚邀您创造和分享数据知识,共建和共享数据智库。
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- [译] 每位数据分析师应该要知道的基本数据分析技术
- 业务分析师可用哪些UML图?
- 如何写好数据分析师简历?
- 零基础入门数据分析师——你可以做到!
- 数据分析师之快速掌握 SQL 基础
- 大数据分析师入门(六):HIVE 进阶
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。