深圳市“数据分析”岗位招聘分析—基于拉勾网
项目说明
该项目的数据来源于2021年9月11日在拉勾网搜索“数据分析”,爬取的岗位信息。通过这些数据,主要回答以下几个问题:
1、各区对数据分析岗位的需求情况
2、各行业对数据分析岗位的需求情况
3、数据分析岗位的薪资状况
4、工作年限/学历与薪资的关系
5、不同规模的公司对工作经验的要求以及提供的薪资水平
各区需求情况
岗位需求绝大部分集中在南山区与福田区,这也于这些地区企业数量多有关
各行业的需求情况
排名前4的行业依次为:科技金融、数据服务、游戏、工具类产品,约占总需求的53%
排名前10的公司约占30%的岗位需求
由于头部公司需求大,且有跨行业的属性,如腾讯虽划位游戏行业,但还涉及其他行业,但不可否认这些行业确实比其他行业更需要数据分析
岗位薪资整体状况
绝大部分的工资分布在15k到30k间
从3个薪酬的中位数看,超过一半的工资在15K以上
从5%分位数看,大致只有5%的岗位开出工资低于10K
薪资的个数(count),平均值(mean),标准差(std),最小值(min),最大值(max),各百分位上的薪资大小
工作年限/学历与薪资的关系
绝大部分学历要本科
绝大部分有工作经历的要求
工作经历要求3-5年接近一半
不限的数据不明不做查看
本科学历需求多 学历越高起始工资越多
本科和硕士工作经历越长工资提升幅度在5年内差别不大
工作年限越长,薪资增长越多
公司规模与工作年限、薪资关系
对小公司(50人及以下)而言,大部分公司开出的薪资不会超过30k,规模更大的公司开的起更高的薪水
对工作年限小于3年的,公司规模与薪资关系不大;对工作年限超过3年,大公司开出的薪资更高
另一方面,从图中可以看到,当薪水超过30k时,公司对数据分析师的经验要求大多是3年以上,此时经验成为了较大的门槛。
其他
通过对职位标签的分析,可以看出
电商、金融、数据服务是数据分析岗位热门的领域
sql,python是数据分析岗位看重的工具
结论
各区需求情况
- 南山、福田几乎囊括的深圳数据分析岗位的绝大部分需求
各行业需求情况
- 电商、金融、数据服务是数据分析岗位需求的热门行业
薪资整体状况
- 绝大部分岗位工资集中在15k-30k
学历/工作经验情况
- 学历绝大部分要求是本科,约43%要求有3年以上的工作经验
- 学历越高起始工资越多,本科和硕士在5年内工资提升幅度差别不大
- 工作年限越长,薪资增长越多;
不同规模的公司对工作经验的要求以及提供的薪资水平
- 小公司很少有超过30k的岗位
- 对工作年限小于3年的岗位,公司规模与薪资关系不大;对工作年限超过3年,大公司开出的薪资更高
其他
- sql,python是数据分析岗位看重的工具
python代码
import pandas as pd
import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt
from matplotlib.ticker import FuncFormatter
import wordcloud
from PIL import Image#解决中文乱码问题
sns.set_style('white',{'font.sans-serif':['simhei','Arial']})
#导入数据
df = pd.read_excel('lagou.xlsx')
# df.shape #(402, 10)
#df.columns #(Index(['岗位名称', '公司名称', '发布时间', '薪资', '经验', '学历', '城市', '地区', '公司信息', '职位标签'], dtype='object')
df.head()
数据预处理
# 去掉岗位名称含有'实习'或'工作地点'的岗位
df=df[(~df['岗位名称'].str.contains('实习')) & (~df['岗位名称'].str.contains('工作地点'))]
#df.shape
#经验是[在校/应届生]或[1年以下]的改为[应届生]
df.replace(to_replace='在校/应届',value='应届生',inplace=True)
df.replace(to_replace='1年以下',value='应届生',inplace=True)
#运用正则表达式提取出薪资区间的中位数(作为薪资的平均值)、最小值、最大值
df['平均薪资'] = df['薪资'].str.extract(r'(\d+)[k]-(\d+)k')\.applymap(lambda x:int(x))\.mean(axis=1)
df['最小薪资'] = df['薪资'].str.extract(r'(\d+)[k]-(\d+)k')\.applymap(lambda x:int(x))[0]
df['最大薪资'] = df['薪资'].str.extract(r'(\d+)[k]-(\d+)k')\.applymap(lambda x:int(x))[1]#对公司信息进行拆分
df['融资情况'] = df['公司信息'].str.split(' | ').str[0]
df.replace(to_replace='未融资',value='不需要融资',inplace=True)df['公司规模'] = df['公司信息'].str.split(' | ').str[2]
# df['公司信息'].str.split(' | ').str[2].value_counts()#处理行业信息
#只取公司信息行业的第一个行业(以符合,|、为分割取第一),并对某些描述相差不大的进行合并
def clean_industry(industry):industry = industry.split(",")industry =industry[0].split('|')[0].split("、")[0]if '电商' in industry:return '电商'elif '人工智能服务' in industry:return '人工智能'elif '物流' in industry:return '物流'elif '服务' in industry and '企业服务' not in industry:return '数据服务'elif '金融' in industry:return '科技金融'else:return industrydf['行业'] = df['公司信息'].str.split(' | ').str[4].map(clean_industry)
#df['行业'].unique().shape 共有32个行业#最终游戏数据 387条
df.shape
#各区岗位需求情况
fig, ax = plt.subplots(figsize=(10,6))
sns.countplot(y='地区',order= df['地区'].value_counts().index,data=df,color='#3c7f99')
plt.box(False) #去掉图边框
fig.text(x=0, y=0.90, s=' 各区数据分析岗位的需求量 ', fontsize=28, weight='bold', color='white', backgroundcolor='#c5b783')
plt.tick_params(axis='both', which='major', labelsize=16)
ax.xaxis.grid(which='both', linewidth=0.5, color='#3c7f99')
plt.xlabel('')
plt.ylabel('')
#各行业岗位需求情况
industry_index = df['行业'].value_counts()[:10].index
industry =df.loc[df['行业'].isin(industry_index),'行业']
ind_rate = df['行业'].value_counts(normalize = True)
ind_rate = ind_rate[:10].append(pd.Series({'其他':1-ind_rate[:10].sum()}))fig, ax = plt.subplots(1,2,figsize=(15,6))ax1=plt.subplot(121)
sns.countplot(y=industry.values,order = industry_index,color='#3c7f99',ax=ax1)
plt.box(False)
fig.text(x=0, y=0.90, s=' 细分领域数据分析岗位的需求量(取前十) ', fontsize=32, weight='bold', color='white', backgroundcolor='#c5b783')
ax1.tick_params(axis='both', which='major', labelsize=10)
ax1.xaxis.grid(which='both', linewidth=0.5, color='#3c7f99')
plt.xlabel('')
plt.ylabel('')ax2=plt.subplot(122)
sns.set_palette(sns.color_palette("PuBu_r"))
plt.pie(ind_rate, labels = ind_rate.index, autopct = '%.1f%%', startangle = 90,textprops={'fontsize': 10},counterclock = False)
plt.axis('square')#防止被覆盖,最后加
ax1.xaxis.grid(which='both', linewidth=0.5, color='#3c7f99')
#前10的公司
com_index = df['公司名称'].value_counts()[:10].index
com =df.loc[df['公司名称'].isin(com_index),'公司名称']
com_rate = df['公司名称'].value_counts(normalize = True)
com_rate = com_rate[:10].append(pd.Series({'其他':1-com_rate[:10].sum()}))fig, ax = plt.subplots(1,2,figsize=(15,6))ax1=plt.subplot(121)
sns.countplot(y=com.values,order = com_index,color='#3c7f99',ax=ax1)
plt.box(False)
fig.text(x=0, y=0.90, s=' 公司数据分析岗位的需求量(取前十) ', fontsize=32, weight='bold', color='white', backgroundcolor='#c5b783')
ax1.tick_params(axis='both', which='major', labelsize=10)
ax1.xaxis.grid(which='both', linewidth=0.5, color='#3c7f99')
plt.xlabel('')
plt.ylabel('')ax2=plt.subplot(122)
sns.set_palette(sns.color_palette("PuBu"))
plt.pie(com_rate, labels = com_rate.index, autopct = '%.1f%%', startangle = 90,textprops={'fontsize': 10},counterclock = False)
plt.axis('square')#防止被覆盖,最后加
ax1.xaxis.grid(which='both', linewidth=0.5, color='#3c7f99')
#前十名公司所属行业
top_com=pd.DataFrame(df['公司名称'].value_counts()[:10]).\reset_index().rename(columns = {'index': '公司名称','公司名称': '岗位数'})
df1=df[['公司名称','行业']].drop_duplicates()
df1=pd.merge(top_com,df1,how='left',on='公司名称')[['公司名称','行业','岗位数']]
df1
#岗位的薪资状况
df[['最小薪资','平均薪资','最大薪资']].describe([0.01,0.05,0.1,0.25,0.5,0.75,0.9,0.99]).T
# 薪资分布状况
fig,ax = plt.subplots(figsize=(12,8))
fig.text(x=0.04, y=0.90, s=' 薪资分布对比 ', fontsize=32, weight='bold', color='white', backgroundcolor='#c5b783')
sns.kdeplot(df['最大薪资'],shade=True,label='最大薪资',color='r')
sns.kdeplot(df['平均薪资'],shade=True,label='平均薪资',color='b')
sns.kdeplot(df['最小薪资'],shade=True,label='最小薪资',color='g')plt.tick_params(axis='both', which='major', labelsize=16)
plt.box(False)
plt.xticks(np.arange(0,160,10), [str(i)+"k" for i in range(0,160,10)])
plt.yticks([])
plt.legend(fontsize = 'xx-large',fancybox=None) #是否将图例框的边角设为圆形
plt.grid(axis='x')
#岗位的学历/工作经验的要求高吗
job_edu = df['学历'].value_counts()
job_exp = df['经验'].value_counts()fig, ax = plt.subplots(1,2,figsize=(12,8))ax1=plt.subplot(121)
sns.set_palette(sns.color_palette("PuBu_r"))
plt.pie(job_edu, labels = job_edu.index, autopct = '%.1f%%', startangle = 90,textprops={'fontsize': 10},counterclock = False)
plt.axis('square')
fig.text(x=0, y=0.90, s=' 学历/工作经验的需求情况 ', fontsize=32, weight='bold', color='white', backgroundcolor='#c5b783')ax2=plt.subplot(122)
sns.set_palette(sns.color_palette("PuBu_r"))
plt.pie(job_exp,labels = job_exp.index, autopct = '%.1f%%', startangle = 90,textprops={'fontsize': 10},counterclock = False)
plt.axis('square')
#工作经验与薪水的关系
#以平均工资为基准
corr = df.pivot_table(index='学历',columns='经验',values='平均薪资') #df.pivot_table(index="city",columns="workYear",values="salary")
corr = corr[['不限', '应届生', '1-3年','3-5年', '5-10年', '10年以上']]fig,ax = plt.subplots(figsize=(10,8))
sns.heatmap(corr,cmap="RdBu",center=20,annot=True,annot_kws={'fontsize':14})
plt.tick_params(axis='x', which='major', labelsize=16)
plt.tick_params(axis='y', which='major', labelsize=16,labelrotation=0)
plt.xlabel(""),plt.ylabel("")
#不同规模的公司在招人要求上的差异
company_size_map = {"2000人以上": 6,"500-2000人": 5,"150-500人": 4,"50-150人": 3,"15-50人": 2,"少于15人": 1
}
workYear_map = {"10年以上": 6,"5-10年": 5,"3-5年": 4,"1-3年": 3,"应届生": 2,"不限": 1
}
df["company_size"] = df["公司规模"].map(company_size_map)
df["work_year"] = df["经验"].map(workYear_map)df_plot = df.sort_values(by="company_size",ascending=True)
# df_plot = df.loc[~df.work_year.isna()]color_map = {6:"#ff0000",5:"#0000cd",4:"#ffa500",3:"#3c7f99",2:"#c5b783",1:"#d5fad3"
}
df_plot["color"] = df_plot.work_year.map(color_map)
df_plot.reset_index(drop=True,inplace=True)def seed_scale_plot():seeds=np.arange(6)+1y=np.zeros(len(seeds),dtype=int)s=seeds*100colors=['#ff0000','#0000cd', '#ffa500','#3c7f99','#c5b783', '#d5fad3'][::-1] fig,ax=plt.subplots(figsize=(12,1))plt.scatter(seeds,y,s=s,c=colors,alpha=0.3)plt.scatter(seeds,y,c=colors)plt.box(False)plt.grid(False)plt.xticks(ticks=seeds,labels=list(workYear_map.keys())[::-1],fontsize=14)plt.yticks(np.arange(1),labels=[' 经验:'],fontsize=16)fig, ax = plt.subplots(figsize=(12, 8))
fig.text(x=0.03, y=0.92, s=' 不同规模公司的用人需求差异 ', fontsize=32, weight='bold', color='white', backgroundcolor='#3c7f99')
plt.scatter(df_plot.平均薪资, df_plot["公司规模"], s=df_plot["work_year"]*100 ,alpha=0.35,c=df_plot["color"])
plt.scatter(df_plot.平均薪资, df_plot["公司规模"], c=df_plot["color"].values.tolist())
plt.tick_params(axis='both', which='both', length=0)
plt.tick_params(axis='both', which='major', labelsize=16)
ax.xaxis.grid(which='both', linewidth=0.75)
# plt.xticks(np.arange(0,61,10), [str(i)+"k" for i in range(0,150,10)])
plt.xlabel('平均薪资', fontsize=18)
plt.box(False)
seed_scale_plot()
b=[]
a=df['职位标签'].str.split('[').str[1].str.replace(']','').str.lower().str.replace("'",'').str.replace("/",',').str.strip()
for i in a:if i !='':c=i.split(',')for j in c:b.append(j.strip())
s=pd.Series(b)
tags=s.value_counts().to_dict()#定义词云样式
wc = wordcloud.WordCloud(background_color='white',width=800,height=400,font_path='C:/Windows/Fonts/simhei.ttf', # 设置字体max_words=200, # 最多显示词数max_font_size=200) # 字号最大值
#生成词云图
wc.generate_from_frequencies(tags)
plt.imshow(wc) # 显示词云
plt.axis('off') # 关闭坐标轴
深圳市“数据分析”岗位招聘分析—基于拉勾网相关推荐
- 如何看待2020校招数据分析岗位招聘情况?
今天就之前看到的一个话题"如何看待2020校招数据分析岗位招聘爆炸难度"写一点想法.内容目录大概几个部分: 你看到的数据分析岗位 参加过2020校招的朋友说有神仙打架的感觉,数据分 ...
- excel-拉勾网上海数据运营岗位招聘分析
本文原始数据来自于拉勾网以上海区域数据运营岗为关键字搜索爬虫而来,为保证数据时效性,筛选了20200508-20200606期间的数据,分析的目的主要是在后续求职时给自己一个市场预期以及个人决策上的指 ...
- python数据分析岗位_数据分析岗位招聘情况
本次主要围绕数据分析岗位的招聘情况, 进行一个简单的数据分析 环境 win8, python3.7, pycharm, jupyter notebook 正文 1. 明确分析目的 了解数据分析岗位的最 ...
- 大数据分析-NBA球员分析-基于pandas、numpy等-期末大作业
目录 一.导入库并读取球员数据 二.查看前五条信息 三.查看后五条信息 四. 统计国家的数量 五.非空的列筛选 六.创建左表 七.创建右表 八.连接表 1.左连接表 2.右连接表 3.全连接表 九.对 ...
- Python 分析近2000条“数据分析”相关岗位招聘信息
文章目录 准备阶段 数据获取 数据清洗 数据可视化 (1)岗位名称 (2)工作地点 (3)公司所属行业 (4)工作经验要求 (5)公司规模情况 (7)学历要求 (8)公司类型 (9)招收人数 (10) ...
- 【Power BI+Excel+Python】2019年4月全国数据分析招聘岗位可视化分析
前言 近几年来,大数据.人工智能.云计算概念如火如荼,而数据分析作为大数据和人工智能领域必备的职能之一,在人才市场上需求越来越强劲. 那,数据分析职位,一般在哪些城市需求较多,各城市分布情况如何?需要 ...
- 基于python爬虫的岗位数据分析以拉勾网为例_爬虫小实例-拉勾网数据分析岗位...
原标题:爬虫小实例-拉勾网数据分析岗位 欢迎关注天善智能 hellobi.com,我们是专注于商业智能BI,大数据,数据分析领域的垂直社区,学习.问答.求职,一站式搞定! 对商业智能BI.大数据分析挖 ...
- 毕业设计之 ---- 基于大数据挖掘的岗位薪资水平分析
文章目录 前言 数据预处理 爬虫爬取数据 数据清洗 数据分析 数据可视化分析 最后 - 技术解答 - 项目帮助 前言 今天向大家介绍一个基于大数据分析的毕业设计项目,基于大数据挖掘的岗位薪资水平分析. ...
- 程序员分析一线城市 1000 +岗位招聘需求,告诉你如何科学找工作
作者 | 柠檬橙1024 责编 | 伍杏玲 出品 | CSDN博客 每年的三四月份是招聘高峰,也常被大家称为金三银四黄金求职期,这时候上一年的总结做完了,奖金拿到了,职场人开始谋划着年初的找工作大戏. ...
最新文章
- 个人前端学习路线图与github优秀前端开发者的路线图推荐
- ATL服务器:用 Visual C++创建的高性能的Web应用程序和XML Web 服务
- CompletableFuture API用法介绍(一)
- 微型计算机具有什么等特点,微机原理 课后题 标准答案
- SAP ABAP OData gateway框架序列化和反序列化(serialization deserialization)的实现逻辑
- C#学习之unsafe
- 鸿蒙os来了,华为操作系统“鸿蒙OS”来了!
- 3.1 Ext JS 组件总览
- 图解!24 张图彻底弄懂九大常见数据结构!
- 软件过程之美 : 软件配置管理策略及主流工具实战
- 深入浅出 Javascript API(二)--地图显示与基本操作
- Schölkopf 、Bengio等新作解读:因果表征学习——连接因果和机器学习的桥梁
- java jdom jar_jdom jar下载_jdom jar官方下载-太平洋下载中心
- 图扑软件数字孪生挖掘机实现远程操控
- 3D打印的来临,传统打印机就要玩完了?
- 中科大计算机与华科,2021全国理工科大学排名!打破传统模式,华科第二,哈工大第五...
- 仿微信群聊头像(图像合成、缩放)
- 学生成绩管理系统(xhh)
- java 直线交点_[Java教程]谈谈求线段交点的几种算法(js实现,完整版)
- 从键盘任意输入一个4位数n c语言,c语言编程题