拉勾网数据分析师职位分析
项目背景:
'positionName':职位名称
'salary':工资水平
'address':地区
'workYear':工作年限
'education':学历要求
'companyName':公司名称
'industryField':行业领域
'financeStage':融资情况
'companySize':公司规模
明确分析目标
1 import pandas as pd 2 import numpy as np 3 import re 4 #导入数据 5 df=pd.DataFrame(pd.read_excel(r'E:\siren\找工作互联网招聘求职网拉勾网1.xlsx'))
1 #查看数据 2 df.head() 3 #查看数据各字段的名称 4 df.columns 5 #查看数据维度 6 df.shape
df['industryField']
可以看到行业名称之间有顿号分割,有的是逗号分隔,所以先将所有的分隔符统一为逗号,然后对数据进行分列,并将分列后的数据重新拼接回原数据表中:
1 1 industry=[] 2 2 #将顿号分隔符替换为逗号 3 3 for x in df['industryField']: 4 4 a=x.replace("、",",") 5 5 industry.append(a) 6 6 #将替换后的行业数据设置为DataFrame格式 7 7 industry=pd.DataFrame(industry,columns=['industry']) 8 8 #对行业数据进行分列 9 9 industry_s=pd.DataFrame((x.split(',') for x in industry['industry']),columns=['industry_1','industry_2']) 10 10 df=pd.merge(df,industry_s,right_index=True,left_index=True) 11 11 df['industry_1']=df['industry_1'].map(str.strip) 12 12 13 13 #将industry_1数据保留并赋值给industryField字段 14 14 df['industryField']=df['industry_1'] 15 15 df=df.drop(['industry_1','industry_2'],axis=1)
1 #去除字段中'k'或'K'字符 2 salary=[] 3 for x in df['salary']: 4 k=re.sub('[k|K]','',x) 5 salary.append(k) 6 #将salary数据转换为DataFrame格式 7 salary=pd.DataFrame(salary,columns=['salary']) 8 salary_s=pd.DataFrame((x.split('-') for x in salary['salary']),columns=['bottomSalary','topSalary']) 9 #更改字段格式 10 salary_s['bottomSalary']=salary_s['bottomSalary'].astype(np.int) 11 salary_s['topSalary']=salary_s['topSalary'].astype(np.int) 12 #计算平均值 13 avg=[] 14 for i in range(len(salary_s)): 15 avg.append((salary_s['bottomSalary'][i]+salary_s['topSalary'][i])/2) 16 salary_s['avgSalary']=avg 17 #将salary_s表与原表进行拼接 18 df=pd.merge(df,salary_s,right_index=True,left_index=True)
由图可以看出:在16个细分领域中数据分析职位需求最高的是移动互联网行业,其次是金融和电子商务行业。需求最少的是生活服务和文化娱乐行业。下面是具体的数据处理和可视化过程。
1 #首先对industryField字段进行汇总统计 2 df['industryField'].value_counts() 3 4 #可以看到行业领域共分为16个细分行业,具体分析过程 5 industry_count=df['industryField'].value_counts() 6 plt.rc('font', family='STXihei', size=10) 7 a=np.arange(16) 8 plt.figure(figsize=(8,6)) 9 plt.barh(range(16),industry_count,color='skyblue') 10 plt.xlabel('职位数量') 11 plt.ylabel('职位名称') 12 plt.title('不同行业领域数据分析职位数量') 13 plt.legend(['职位数量'],loc='upper right') 14 plt.grid(color='#95a5a6',linestyle='--',linewidth=1,axis='x',alpha=0.4) 15 plt.yticks(range(16),('移动互联网','金融','电子商务','数据服务','企业服务','O2O','教育','医疗健康','游戏','其他','信息安全','旅游','社交网络','硬件','文化娱乐','生活服务'))
不同城市数据分析职位需求情况
从城市维度来看,北京数据分析职位的需求量为最多,其次其次是上海,杭州,深圳的数量不如杭州多。在TOP10城市中,对数据分析人才需求最大少的是郑州、合肥,职位数量仅仅4个。所以想要从事数据分析一职,基本上要选择留在北上广深,或者杭州,才能拥有更好的发展。下面是具体的数据处理过程。
1 city_count=df['city'].value_counts() 2 plt.rc('font', family='STXihei', size=10) 3 a=np.arange(10) 4 plt.figure(figsize=(8,6)) 5 plt.bar(range(10),city_count[:10],color='skyblue') 6 plt.xlabel('城市') 7 plt.ylabel('职位数量') 8 plt.title('不同城市数据分析职位数量') 9 plt.legend(['职位数量'],loc='upper right') 10 plt.grid(color='#95a5a6',linestyle='--',linewidth=1,axis='y',alpha=0.4) 11 plt.xticks(a,('北京','上海','杭州','深圳','广州','武汉','长沙','南京','郑州','合肥'))
1 df['companySize']=df['companySize'].map(str.strip) 2 company_count=df['companySize'].value_counts() 3 plt.rc('font', family='STXihei', size=10) 4 a=np.arange(6) 5 plt.figure(figsize=(6,4)) 6 plt.barh(range(6),company_count,color='skyblue') 7 plt.xlabel('职位数量') 8 plt.ylabel('规模') 9 plt.title('不同规模公司数据分析职位数量') 10 plt.legend(['职位数量'],loc='upper right') 11 plt.grid(color='#95a5a6',linestyle='--',linewidth=1,axis='x',alpha=0.4) 12 plt.yticks(a,company_count.index)
不同融资阶段数据分析职位需求分布
天使轮需求最少,上市公司和不需要融资的公司需求量最多。结合前面公司规模的分析,可以理解,天使轮人少钱也少,数据分析人才需求不大,但是上市公司规模较大,数据分析需求也就大。从A轮到D轮,数据分析需求较天使轮,数据分析需求有明显增长。
1 finance_count=df['financeStage'].value_counts() 2 3 plt.rc('font', family='STXihei', size=10) 4 a=np.arange(8) 5 plt.figure(figsize=(6,4)) 6 plt.barh(range(8),finance_count,color='skyblue') 7 plt.xlabel('职位数量') 8 plt.ylabel('融资阶段') 9 plt.title('不同融资公司数据分析职位数量') 10 plt.legend(['职位数量'],loc='upper right') 11 plt.grid(color='#95a5a6',linestyle='--',linewidth=1,axis='x',alpha=0.4) 12 plt.yticks(a,finance_count.index)
从工作年限来看,大部分公司的需求都在1-3年和3-5年这两个阶段。这两个阶段的人较工作5-10年的人年轻,精力旺盛,对工资要求不是特别高,学习能力也较强。
1 df['workYear']=df['workYear'].map(str.strip) 2 #将经验不限、经验一年以下、经验应届毕业生合并 3 for i in range(len(df['workYear'])): 4 if df['workYear'][i] in ['经验应届毕业生','经验不限']: 5 df['workYear'][i]='经验1年以下' 6 work_count=df['workYear'].value_counts() 7 8 plt.rc('font', family='STXihei', size=10) 9 a=np.arange(4) 10 plt.figure(figsize=(6,4)) 11 plt.barh(range(4),work_count,color='skyblue') 12 plt.xlabel('职位数量') 13 plt.ylabel('工作经验') 14 plt.title('数据分析职位对工作经验的要求') 15 plt.legend(['职位数量'],loc='upper right') 16 plt.grid(color='#95a5a6',linestyle='--',linewidth=1,axis='x',alpha=0.4) 17 plt.yticks(a,work_count.index)
数据分析对学历的要求
从学历维度看,本科学历的数据分析人才需求量最高,占比85.3%,也就是说大多数数据分析职位对学历要求不是很高,仅仅3.7%的公司要求学历在硕士以上。
1 education_count=df['education'].value_counts() 2 3 plt.rc('font', family='STXihei', size=10) 4 labels='本科及以上','大专及以上','学历不限','硕士及以上' 5 colors=[ 'lightskyblue', 'gold','yellowgreen', 'lightcoral'] 6 explode=(0.1,0.1,0.1,0.1) 7 plt.axis('equal') 8 plt.title('数据分析对学历的要求') 9 plt.pie(education_count,explode=explode,labels=labels,colors=colors,autopct='%1.1f%%',shadow=True,startangle=60,radius=1.2)
1 plt.rc('font', family='STXihei', size=10) 2 plt.figure(figsize=(8,6)) 3 plt.hist(df['avgSalary'],bins=30,color='skyblue') 4 plt.grid(color='#95a5a6',linestyle='--',linewidth=0.8,axis='y',alpha=0.4) 5 plt.axis('tight') 6 plt.title('薪酬分布') 7 plt.xlabel('每月薪酬(单位:K/月)') 8 plt.legend(loc=0)
行业对平均薪资的影响
从行业平均工资来看,社交网络、信息安全、企业服务领域工资最高,旅游、医疗健康、生活服务行业工资最低。
1 industry_avg=df.groupby(by=['industryField'])['avgSalary'].mean().sort_values() 2 3 plt.rc('font', family='STXihei', size=10) 4 a=np.arange(16) 5 plt.figure(figsize=(8,6)) 6 plt.barh(range(16),industry_avg,color='skyblue') 7 plt.xlabel('行业平均工资') 8 plt.ylabel('行业') 9 plt.title('不同行业领域数据分析职位平均工资') 10 plt.legend(['平均工资'],loc='upper right') 11 plt.grid(color='#95a5a6',linestyle='--',linewidth=0.8,axis='x',alpha=0.4) 12 plt.yticks(a,industry_avg.index)
在提取筛选数据时,发现因为city字段数据中有空格的存在,总是匹配不到数据,因此先对city字段进行处理,清除数据中的空格符
1 #取岗位需求前10名的城市 2 df.groupby(['city'])['avgSalary'].count().sort_values() 3 4 #先利用语句判断出字段数据中是否有空格符的存在 5 df['city'].values #发现数据中存在空格符 6 #进行处理空格符 7 df['city']=df['city'].map(str.strip) 8 9 #提取数据 10 city1=df.loc[df['city']=='北京',['city','avgSalary']] 11 city2=df.loc[df['city']=='上海',['city','avgSalary']] 12 city3=df.loc[df['city']=='成都',['city','avgSalary']] 13 city4=df.loc[df['city']=='杭州',['city','avgSalary']] 14 city5=df.loc[df['city']=='深圳',['city','avgSalary']] 15 city6=df.loc[df['city']=='广州',['city','avgSalary']] 16 city7=df.loc[df['city']=='武汉',['city','avgSalary']] 17 city8=df.loc[df['city']=='长沙',['city','avgSalary']] 18 city9=df.loc[df['city']=='南京',['city','avgSalary']] 19 city10=df.loc[df['city']=='郑州',['city','avgSalary']] 20 21 #绘图 22 plt.rc('font', family='STXihei', size=10) 23 plt.xlabel('城市') 24 plt.ylabel('薪资') 25 plt.title('城市与平均薪资') 26 plt.grid(color='#95a5a6',linestyle='--',linewidth=0.8,axis='x',alpha=0.4) 27 28 plt.boxplot((city1['avgSalary'],city2['avgSalary'],city3['avgSalary'],city4['avgSalary'],city5['avgSalary'],city6['avgSalary'],city7['avgSalary'],city8['avgSalary'],city9['avgSalary'],city10['avgSalary']),labels=('北京','上海','成都','杭州','深圳','广州','武汉','长沙','南京','郑州'))
1 df['companySize']=df['companySize'].map(str.strip) 2 df.groupby(['companySize']).count() 3 4 size1=df.loc[df['companySize']=='少于15人',['companySize','avgSalary']] 5 size2=df.loc[df['companySize']=='15-50人',['companySize','avgSalary']] 6 size3=df.loc[df['companySize']=='50-150人',['companySize','avgSalary']] 7 size4=df.loc[df['companySize']=='150-500人',['companySize','avgSalary']] 8 size5=df.loc[df['companySize']=='500-2000人',['companySize','avgSalary']] 9 size6=df.loc[df['companySize']=='2000人以上',['companySize','avgSalary']] 10 11 plt.rc('font', family='STXihei', size=10) 12 plt.figure(figsize=(6,4)) 13 plt.xlabel('规模') 14 plt.ylabel('薪资') 15 plt.title('公司规模与平均薪资') 16 plt.boxplot((size1['avgSalary'],size2['avgSalary'],size3['avgSalary'],size4['avgSalary'],size5['avgSalary'],size6['avgSalary']),labels=('少于15人','15-50人','50-150人','150-500人','500-2000人','2000人以上')) 17 plt.grid(color='#95a5a6',linestyle='--',linewidth=0.8,axis='y',alpha=0.4)
1 df['financeStage']=df['financeStage'].map(str.strip) 2 3 finance1=df.loc[df['financeStage']=='未融资',['financeStage','avgSalary']] 4 finance2=df.loc[df['financeStage']=='天使轮',['financeStage','avgSalary']] 5 finance3=df.loc[df['financeStage']=='A轮',['financeStage','avgSalary']] 6 finance4=df.loc[df['financeStage']=='B轮',['financeStage','avgSalary']] 7 finance5=df.loc[df['financeStage']=='C轮',['financeStage','avgSalary']] 8 finance6=df.loc[df['financeStage']=='D轮及以上',['financeStage','avgSalary']] 9 finance7=df.loc[df['financeStage']=='不需要融资',['financeStage','avgSalary']] 10 finance8=df.loc[df['financeStage']=='上市公司',['financeStage','avgSalary']] 11 12 plt.rc('font', family='STXihei', size=12) 13 plt.figure(figsize=(8,5)) 14 plt.xlabel('融资') 15 plt.ylabel('薪资') 16 plt.title('融资阶段与平均薪资') 17 plt.grid(color='#95a5a6',linestyle='--',linewidth=0.8,axis='y',alpha=0.4) 18 plt.boxplot((finance1['avgSalary'],finance2['avgSalary'],finance3['avgSalary'],finance4['avgSalary'],finance5['avgSalary'],finance6['avgSalary'],finance7['avgSalary'],finance8['avgSalary']),labels=('未融资','天使轮','A轮','B轮','C轮','D轮及以上','不需要融资','上市公司'))
1 df['workYear']=df['workYear'].map(str.strip) 2 3 for i in range(len(df['workYear'])): 4 if df['workYear'][i] in ['经验应届毕业生','经验不限']: 5 df['workYear'][i]='经验1年以下' 6 df['workYear']=df['workYear'] 7 df['workYear'] 8 9 year1=df.loc[df['workYear']=='经验1年以下',['workYear','avgSalary']] 10 year2=df.loc[df['workYear']=='经验1-3年',['workYear','avgSalary']] 11 year3=df.loc[df['workYear']=='经验3-5年',['workYear','avgSalary']] 12 year4=df.loc[df['workYear']=='经验5-10年',['workYear','avgSalary']] 13 14 plt.rc('font', family='STXihei', size=10) 15 plt.figure(figsize=(4,4)) 16 plt.xlabel('工作年限') 17 plt.ylabel('薪资') 18 plt.title('工作年限与平均薪资') 19 plt.grid(color='#95a5a6',linestyle='--',linewidth=0.8,axis='y',alpha=0.4) 20 plt.boxplot((year1['avgSalary'],year2['avgSalary'],year3['avgSalary'],year4['avgSalary']),labels=('经验1年以下','经验1-3年','经验3-5年','经验5-10年'))
1 df['education']=df['education'].map(str.strip) 2 3 edu1=df.loc[df['education']=='大专及以上',['education','avgSalary']] 4 edu2=df.loc[df['education']=='学历不限',['education','avgSalary']] 5 edu3=df.loc[df['education']=='本科及以上',['education','avgSalary']] 6 edu4=df.loc[df['education']=='硕士及以上',['education','avgSalary']] 7 8 plt.rc('font', family='STXihei', size=10) 9 plt.figure(figsize=(6,6)) 10 plt.xlabel('学历') 11 plt.ylabel('薪资') 12 plt.title('学历与平均薪资') 13 plt.grid(color='#95a5a6',linestyle='--',linewidth=0.8,axis='y',alpha=0.4) 14 plt.boxplot((edu1['avgSalary'],edu2['avgSalary'],edu3['avgSalary'],edu4['avgSalary']),labels=('大专及以上','学历不限','本科及以上','硕士及以上'))
转载于:https://www.cnblogs.com/dataAnalysis/p/9406501.html
拉勾网数据分析师职位分析相关推荐
- 某招聘网站的数据分析师岗位分析
数据采集于拉钩上的数据分析师岗位,要对数据分析师这个岗位有所了解,最直观的方式就是获取企业那里获得数据分析师的岗位信息,然后进行一些探索和分析,以此来加深自己对数据分析师这个岗位的认识 简要介绍一下本 ...
- python基于大数据的boss直聘数据招聘职位分析系统django
本项目主要利用python技术爬取BOSS直聘网站上的岗位信息,进行对比分析UI设计师与产品经理两个职位的趋势.爬取字段:工作地点,薪资范围,学历要求,工作经验,公司性质等. 模拟登陆BOSS直聘网站 ...
- 数据分析师—岗位分析(峰池)
经常觉得很奇怪怎么辣么多数据分析师的广告,字节的峰池大佬是觉得未来该岗位可能消亡(康康大佬怎么说的同时了解下这个岗位,本文不代表本人观点,请客观理性看待=.=). 突然想起拿了京东算法岗ssp的上财学 ...
- python高级数据分析师_python分析各大城市对数据分析师的招聘情况
分析目的: 1.分析招聘对于学历的要求 2.分析招聘对于工作经验的要求 3.分析各城市对数据分析师的岗位需求 4.分析数据分析师的发展方向 5.分析数据分析师在全国的薪资情况
- 2014阿里巴巴校园招聘数据分析师职位笔试题目(答案版)
选择题10道,问答题三道,分析题2道 一.选择题 1. 一下哪个属于离散变量(汽车变量) 水稻亩产量 家庭收入 商品价格 汽车产量 2. 卡方分布的样本方差分别是(2n) n 1 2n 4n ...
- python源码剖析 豆瓣_在数据分析师的分析中豆瓣的书那些值得读
最近总是有人问我有什么书好推荐看看,特烦.但是看到那么多人问,看来挺多人有这个需求,便想了一下,如何通过数据分析找到值得看的书.通过爬取某个标签例如产品,运营获取对应已经打了标签的书,获取书对应的评分 ...
- python数据分析岗位_python拉勾数据职位分析
简介:试着,做了一个拉勾网数据分析师职位的数据分析. 其实,虽然很想做数据分析师,但是是跨行,心里相当忐忑,做这个分析就相当于加深自己对数据分析这个行业的了解了. 思路 大致思路 起始 数据来源 本来 ...
- python数据分析职位_python代写拉勾数据职位分析
简介:试着,做了一个拉勾网数据分析师职位的数据分析. 其实,虽然很想做数据分析师,但是是跨行,心里相当忐忑,做这个分析就相当于加深自己对数据分析这个行业的了解了. 思路 大致思路 起始 数据来源 本来 ...
- python数据分析在北京基本薪资_数据分析师薪酬如何?爬虫拉勾网告诉你
首先说明这篇文章的数据来源,是爬虫拉勾网"数据分析师"这一职位信息所得来的.并且主要分析了数据分析师总体薪酬情况.不同城市薪酬分布.不同学历薪酬分布.北京上海工作经验薪酬分布情况. ...
最新文章
- 深刻揭示Python 与C/C++互动
- OAuth2.0学习(1-6)授权方式3-密码模式(Resource Owner Password Credentials Grant)
- 什么叫“碳达峰、碳中和”?一副漫画看明白
- js判断ipad还是安卓_最近iPad做电子笔记很流行?综合分析你知道的所有笔记方式。...
- dbcp连接池配置参数
- php充值奖励部分,BLUE引擎充值角本多充多送脚本累计充值奖励教程
- python编程软件开发_Python编程-绑定方法、软件开发
- 腾讯云云服务器的地域和可用区有哪些?已购买的腾讯云服务器可以更换地域吗?
- 与朋友分享的生活日记
- 编译coccinelle-1.0.0-rc24时的错误Error: Unbound module Parmap以及解决方法
- 【求职经历】四川移动暑期实习面试经历
- android OTA更新
- 打开软件显示乱码的解决方法
- 国际标准化组织(Iso)对质量(Quality)的定义
- Docker一键安装RocketMQ(All in one Docker)
- 对接奇门ASCP通过该接口通知商家仓成交订单对应的物流订单信息接口
- 全面封顶 南通地铁2号线最新进展曝光 何时才能通车
- 如何作天猫、淘宝7月某类目销量分析
- 通告(公告),消息(站内短信),提醒的设计
- 沉浸式状态栏设置的几种方式