基于Python|“数据分析岗位”招聘情况分析!

统计与数据分析实战

共 7192字,需浏览 15分钟

 · 2020-09-12


◆ ◆ ◆  ◆ 


前言


数据分析岗位,的确是最近两年最火爆、话题度最高的岗位。


根据从业经验、技能要求的不同,可细分为数据分析工程师、数据分析师、数据专员。

小编我特别荣幸于2017年7月份开始逐步在工作中接触到数据分析,并且运用数据分析得到的结果来指导业务,增进业绩,实现了公司数据化运营的短期目标。

可以说,我转行转的特别轻松,我是幸运的;

也可以说,我转行转的着实被动,我是被迫的。嘿嘿,看到这里,有没有想打死我的冲动?!

不管怎么说,小编我现在非常热爱数据分析师这份职业,也希望尽自己的一份努力与辛苦,帮助更多仍在迷茫中前行的萌新。

今天,给大家带来的是:基于Python——“数据分析岗位”招聘情况分析!

数据分析实战


今天,我们将用网络爬虫爬取过来的1193847条数据进行深度数据分析,剖析一下到底值不值得放弃现有的工作、成就毅然决然地转行数据分析呢?!


  • 数据处理

          异常值处理
          重复值处理
          空值处理
          类型转换


  • 数据分析

          岗位数量、招聘人数
          所处行业、工作地点
          学历要求、薪资水平

  • 分析报告


一、导包、读取数据
import pandas as pd
import warningsimport numpy as npwarnings.simplefilter(action='ignore', category=FutureWarning)warnings.simplefilter(action='ignore', category=UserWarning)
import matplotlib as mltimport matplotlib.pyplot as plt
%matplotlib inline
# 读取txt格式的数据dataset = pd.read_table(r'C:/Users/Administrator/Desktop/recruits.txt',low_memory = False)
dataset.info()# 全览数据可以发现:数据缺少字段名
RangeIndex: 1193846 entries, 0 to 1193845Data columns (total 13 columns):940864 1193846 non-null int64UI 1193846 non-null object用户界面(UI)设计 1193846 non-null object8001-10000 1193846 non-null object3-5 1193846 non-null object本科 1193846 non-null object全职 1193846 non-null object2017-11-15 1193846 non-null object1 1193846 non-null object杭州****技术有限公司 1193846 non-null object计算机软件 1193690 non-null object20-99 1193669 non-null object杭州 1193801 non-null objectdtypes: int64(1), object(12)memory usage: 118.4+ MB
# 自定义字段名data = pd.read_table(r'C:/Users/Administrator/Desktop/recruits.txt',header = None,index_col = '序号',low_memory = False, names =['序号','岗位职责','岗位名称','薪资','工作时长','学历','职业类型','发布时间','招聘人数','公司名称','所处行业','公司规模','工作地点'])data.head()


# 自定义字段名添加成功data.info()
# resultInt64Index: 1193847 entries, 940864 to 926760Data columns (total 12 columns):岗位职责 1193847 non-null object岗位名称 1193847 non-null object薪资 1193847 non-null object工作时长 1193847 non-null object学历 1193847 non-null object职业类型 1193847 non-null object发布时间 1193847 non-null object招聘人数 1193847 non-null object公司名称 1193847 non-null object所处行业 1193691 non-null object公司规模 1193670 non-null object工作地点 1193802 non-null objectdtypes: object(12)memory usage: 118.4+ MBNone
# 重置索引data = data.reset_index()data.tail()


# 获取数据集的列名data.columns
# resultIndex(['岗位职责', '岗位名称', '薪资', '工作时长', '学历', '职业类型', '发布时间', '招聘人数', '所处行业', '公司规模', '工作地点'], dtype='object')
      
# 转换数据集,去掉序号,去掉公司名称(脱敏)data = data[['岗位职责', '岗位名称', '薪资', '工作时长', '学历', '职业类型', '发布时间', '招聘人数','所处行业', '公司规模', '工作地点']]data.info()
# resultdata = data[['岗位职责', '岗位名称', '薪资', '工作时长', '学历', '职业类型', '发布时间', '招聘人数','所处行业', '公司规模', '工作地点']]
data.info()
RangeIndex: 1193847 entries, 0 to 1193846Data columns (total 11 columns):岗位职责 1193847 non-null object岗位名称 1193847 non-null object薪资 1193847 non-null object工作时长 1193847 non-null object学历 1193847 non-null object职业类型 1193847 non-null object发布时间 1193847 non-null object招聘人数 1193847 non-null object所处行业 1193691 non-null object公司规模 1193670 non-null object工作地点 1193802 non-null objectdtypes: object(11)memory usage: 100.2+ MB
data.head(10)


二、数据处理
# 查看数据集是否存在异常值print('最早发布时间:',data['发布时间'].unique().min(),',最晚发布时间:',data['发布时间'].unique().max())
# 可以发现:发布时间异常最早发布时间:1970-01-01 ,最晚发布时间:2017-11-23
# 查看异常数据data[(data['发布时间']<'2017-01-01')]


# 仅保留17年及以后的招聘信息data = data[(data['发布时间']>='2017-01-01')]
# 重复值统计data.duplicated().sum()
# result35950
# 去重data.drop_duplicates(inplace=True)
# 再次查看数据集情况,发现存在空值data.info()
# resultInt64Index: 1157827 entries, 0 to 1193846Data columns (total 11 columns):岗位职责 1157827 non-null object岗位名称 1157827 non-null object薪资 1157827 non-null object工作时长 1157827 non-null object学历 1157827 non-null object职业类型 1157827 non-null object发布时间 1157827 non-null object招聘人数 1157827 non-null object所处行业 1157674 non-null object公司规模 1157667 non-null object工作地点 1157796 non-null objectdtypes: object(11)memory usage: 106.0+ MB
# 空值处理:统计空值数量data.isnull().sum()
# result岗位职责 0岗位名称 0薪资 0工作时长 0学历 0职业类型 0发布时间 0招聘人数 0所处行业 153公司规模 160工作地点 31dtype: int64
# 公司规模列空值较多,可具体查看data[data['公司规模'].isnull()]



# 删除空值data.dropna(inplace=True)
# 再次查看,发现所有数据都处理完毕data.info()
# resultInt64Index: 1157647 entries, 0 to 1193846Data columns (total 11 columns):岗位职责 1157647 non-null object岗位名称 1157647 non-null object薪资 1157647 non-null object工作时长 1157647 non-null object学历 1157647 non-null object职业类型 1157647 non-null object发布时间 1157647 non-null object招聘人数 1157647 non-null object所处行业 1157647 non-null object公司规模 1157647 non-null object工作地点 1157647 non-null objectdtypes: object(11)memory usage: 106.0+ MB

三、数据分析
# 仅选择数据分析师岗位进行分析,大家还可以进行数据分析专员等分析data_da = data[data['岗位名称']=='数据分析师'].copy() # 不加copy()容易警告:SettingWithCopyWarningdata_da[ data_da['招聘人数']=='若干'] # 为了分析的方便,去掉“若干”情况


# 数据处理,重新赋值data_da.loc[ data_da['招聘人数']=='若干','招聘人数'] = 0data_da['招聘人数'].value_counts()
# result1 35313 9575 9492 9346 7224 4328 2427 16210 14512 7830 719 2920 1518 1415 760 40 225 116 113 1Name: 招聘人数, dtype: int64
# 查看招聘人数data_da['招聘人数'] = data_da['招聘人数'].astype(int)grb = data_da.groupby(['工作地点']).agg({'岗位名称':'count','招聘人数':sum}).sort_values(by = '岗位名称',ascending = False).head(10)grb



四、可视化
# 绘图说明不同城市对数据分析师的需求数量grb.plot(kind = 'bar',figsize=(10,5),fontsize=12)
plt.legend(['岗位数量','招聘人数'])
plt.xlabel('工作地点',fontsize=15)plt.show()


# 查看所处行业情况data['所处行业'].value_counts().head(10)
# result互联网/电子商务 267519计算机软件 261188IT服务(系统/数据/维护) 95320教育/培训/院校 94988专业服务/咨询(财会/法律/力资源等) 52931媒体/出版/影视/文化传播 49300基金/证券/期货/投资 32005电子技术/半导体/集成电路 28652房地产/建筑/建材/工程 25118通信/电信/网络设备 24828Name: 所处行业, dtype: int64
# 筛选出北京地区互联网公司数据分析师招聘数据subdata = data[data['所处行业'].isin(['互联网/电子商务'])][(data['岗位名称']=='数据分析师')&(data['工作地点']=='北京')]subdata.iloc[:20,:]



# 学历因素subdata['学历'].value_counts(normalize = True)
# result本科 0.568910硕士 0.174679大专 0.142628不限 0.113782Name: 学历, dtype: float64
# 其他城市可能会用到-- subdata[subdata['学历'].isin(['中专','中技'])]-- subdata.loc[(subdata['学历']=='中专')|(subdata['学历']=='中技'),'学历'] = '不限'
# 绘图说明数据分析师对学历的要求subdata['学历'].value_counts(normalize = True)plt.pie(subdata['学历'].value_counts(normalize = True),labels = ['本科','硕士','大专','不限'],autopct='%.1f%%',startangle=180)plt.show()plt.close()


# 薪资情况subdata.groupby(['学历','工作时长'])[['薪资']].describe()



分析报告


1.本次共计处理元数据1193847条,来源于某著名求职类APP,可用于分析的数据为1157647条,所有数据发布时间均在17年,所以此分析报告代表17年数据分析师岗位情况,不过对19年、甚至20年求职的萌新具有现实指导意义。

2.由文中条形图可以看出,数据分析师岗位集中在一线城市,如北京、上海、深圳、广州;另外,西安对数据分析师的需求量是事先没有预料到的。

3.北京地区互联网行业对数据分析师的需求量最为旺盛,其次为计算机软件、IT服务业等。

4.北京地区互联网行业对数据分析师的学历要求本科占五成多,说明学历依然是筛选人才的门槛,不过大专学历也可以从事数据分析,需要更多的技能加持,良好的机遇。

5.北京地区互联网行业的数据分析师,相同工作年限本科、专科学历的薪资水平相差不大,对于刚转行的薪资水平基本处于8k-12k。


-------------------------------- END ----------------------------------


读者朋友,如果您能认认真真地将文章看完,记得一定要帮严小样儿点点在看,就在文章右下角。

记得扫描二维码关注我哦,“转行数据分析,关注我就会特别简单”!

对您有帮助的话,记得转发、分享朋友圈,转行更顺利~







在看”的永远18岁~
浏览 68
点赞
评论
收藏
分享

手机扫一扫分享

举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

举报