🧑 博主简介:曾任某智慧城市类企业
算法总监
,目前在美国市场的物流公司从事高级算法工程师
一职,深耕人工智能领域,精通python数据挖掘、可视化、机器学习等,发表过AI相关的专利并多次在AI类比赛中获奖。CSDN人工智能领域的优质创作者,提供AI相关的技术咨询、项目开发和个性化解决方案等服务,如有需要请站内私信或者联系任意文章底部的的VX名片(ID:xf982831907
)
💬 博主粉丝群介绍:① 群内初中生、高中生、本科生、研究生、博士生遍布,可互相学习,交流困惑。② 热榜top10的常客也在群里,也有数不清的万粉大佬,可以交流写作技巧,上榜经验,涨粉秘籍。③ 群内也有职场精英,大厂大佬,可交流技术、面试、找工作的经验。④ 进群免费赠送写作秘籍一份,助你由写作小白晋升为创作大佬。⑤ 进群赠送CSDN评论防封脚本,送真活跃粉丝,助你提升文章热度。有兴趣的加文末联系方式,备注自己的CSDN昵称,拉你进群,互相学习共同进步。
【数据可视化-12】数据分析岗位招聘分析
- 引言
- 一、数据集简介
- 二、数据预处理
- 2.1 加载分析需要的库
- 2.2 导入数据
- 2.3 数据清洗
- 三、可视化分析
- 3.1 各个城市数据分析岗位招聘数量情况
- 3.2 数据分析师在各城市薪资水平情况
- 3.3 薪资和城市分析
- 3.4 热门城市薪资箱线图
- 3.5 学历与薪资数据分析
- 3.6 学历与岗位需求的数据分析
- 3.7 工龄与薪资数据分析
- 3.8 工龄与市场需求分析
- 3.9 数据分析岗技能需求情况
- 四、结论与建议
引言
在数字化时代,数据分析已成为各行各业不可或缺的重要技能。为了深入了解当前市场对数据分析师岗位的需求情况,我们从BOSS直聘平台上爬取了一份关于数据分析师招聘信息的数据集。本博客将通过对这份数据进行可视化分析,揭示数据分析师岗位的地域分布、薪资水平、经验要求、学历要求以及技能标签等关键信息,帮助求职者更好地把握市场动态,制定职业规划。
一、数据集简介
本次分析的数据集包含了以下字段:
- company:公司名称
- job_position:岗位名称
- job_address:工作地点
- job_salary:薪资范围
- job_exper:经验要求及学历
- company_type:经验要求
- tags:技能标签
二、数据预处理
在正式分析之前,我们加载数据集并进行了预处理,具体流程如下:
2.1 加载分析需要的库
import numpy as np
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as pltimport warnings
from scipy.stats import norm,mode
import re
from collections import Counter
import pyecharts.options as opts
from pyecharts.charts import WordCloudplt.rcParams['font.sans-serif'] = ["SimHei"]
plt.rcParams['axes.unicode_minus'] = False
2.2 导入数据
#导入数据
df = pd.read_csv("boss.csv",header=None)
df.columns = ['company','job_position','job_address','job_salary','job_exper','company_type','tags']
df.head()
df.info()
数据一共有7个维度,2537条招聘记录,而且数据中无缺失值的存在。
2.3 数据清洗
- 首先把工作job_exper:经验要求及学历,拆分成工作经验experience和学历diploma字段;
- 对数据进行去重;
- 计算各城市薪资均值
df["experience"]=df["job_exper"].str.extract("^(\d+/?-\d+)")
df["diploma"]=df["job_exper"].str[-2:]#去重
df.duplicated().sum()df["experience"].replace(np.nan,"经验不限",inplace=True)
df["experience"].replace("1-3","1-3年",inplace=True)
df["experience"].replace("3-5","3-5年",inplace=True)
df["experience"].replace("5-10","5-10年",inplace=True)
df["experience"].unique()
#计算各城市薪资均值
def avg_ar(x):if "-" in x:a,b=x.split("-")return (int(a)+int(b))/2else:return None
df["avg_address"]=df["job_salary"].apply(lambda x: re.split("K|元",x)[0])
df["avg_address"]=df["avg_address"].apply(lambda x: avg_ar(x))
df.head()
三、可视化分析
为了进行这些可视化分析,我们将使用Python及其相关库(如pandas、matplotlib、seaborn等)来处理和分析数据。以下是一个详细的步骤指南和相应的Python代码示例。
3.1 各个城市数据分析岗位招聘数量情况
我们可以使用matplotlib或seaborn来绘制各个城市数据分析岗位招聘数量情况。
city_job_num = df['job_address'].value_counts().reset_index()
city_job_num.columns = ['city','job_nums']
sns.barplot(x='city', y='job_nums', data=city_job_num)
plt.xticks(rotation=45) # 旋转x轴标签以便阅读
plt.title('各城市数据分析师招聘数量情况')
plt.show()
从图中我们可以知道,南京发布的数据分析招聘信息数量最多;
3.2 数据分析师在各城市薪资水平情况
我们可以使用matplotlib或seaborn来绘制薪资水平的柱状图。
# 按城市分组并计算平均薪资
city_salaries = df.groupby('job_address')['avg_address'].mean().reset_index()# 绘制薪资水平的地图(需要额外的地理数据,这里使用柱状图作为替代)
sns.barplot(x='job_address', y='avg_address', data=city_salaries)
plt.xticks(rotation=45) # 旋转x轴标签以便阅读
plt.title('数据分析师在各城市薪资水平情况')
plt.show()
从图中我们可以知道,北京、杭州、上海、深圳发布的数据分析招聘信息薪资最高;
3.3 薪资和城市分析
我们已经计算了各城市的在一定范围内的薪资占比情况;
# 薪资和城市
fig=plt.figure(figsize=(10,5),dpi=100)
plt.subplot(121)
temp=df[df.avg_address<10].groupby("job_address").avg_address.count()
temp=pd.DataFrame(temp).sort_values("avg_address").iloc[-8:]
plt.pie(temp["avg_address"],labels=temp.index,autopct="%.2f%%")
plt.title("薪资小于10K的城市占比")
plt.subplot(122)
temp=df[df.avg_address>10].groupby("job_address").avg_address.count()
temp=pd.DataFrame(temp).sort_values("avg_address").iloc[-8:]
plt.pie(temp["avg_address"],labels=temp.index,autopct="%.2f%%")
plt.title("薪资大于10K的城市占比")plt.show()
从上图可以看出,在薪资小于10k的城市占比中南京和武汉发布的招聘最高,在薪资大于10k的城市占比中北京和杭州发布的招聘信息最多。
3.4 热门城市薪资箱线图
我们可以选择几个热门城市,并绘制它们的薪资箱线图。
# 热门城市薪资箱线图
df1=df[df["avg_address"]<100]
data1=df1[df.job_address=="北京"]["avg_address"]
data2=df1[df.job_address=="上海"]["avg_address"]
data3=df1[df.job_address=="广州"]["avg_address"]
data4=df1[df.job_address=="深圳"]["avg_address"]
data5=df1[df.job_address=="杭州"]["avg_address"]
plt.figure(figsize=(12,6))
plt.boxplot([data1,data2,data3,data4,data5],labels=["北京","上海","广州","深圳","杭州"],flierprops={"marker":"o","markerfacecolor":"r","color":"k"},patch_artist=True,boxprops={"color":"k","facecolor":"#FFFACD"})
ax=plt.gca()
ax.patch.set_facecolor("#FFFAFA")
ax.patch.set_alpha(0.8)
plt.title("主要城市薪资水平箱线图",fontsize=15)
plt.ylabel("薪资(单位:K)",fontsize=12)plt.show()
从上图中可以看出,几个主要的热门城市发布的招聘信息来看,平均薪资最高的是北京,最低的是广州,杭州的高工资和低工资都比较多,求职者的可能性更大,发展机遇就好,努力奋斗;
3.5 学历与薪资数据分析
我们可以使用条形图来展示不同学历的薪资分布。
# 学历与薪资数据分析
d=df["avg_address"].groupby(df["diploma"])
d_avg = d.mean()
c=list(d_avg.index)
v=list(range(1,len(c)+1))
w=d_avg.values.astype("int64")
x=d.median().values.astype("int64")
move=0.4plt.figure(figsize=(12,5))
plt.bar(v,w,width=move,color="#eed777")
plt.bar([i+move for i in v],x,width=move,color="#334f65")
a=np.arange(0,7)+1.2
plt.xticks(a,c,fontsize=15)
plt.yticks(list(range(0,60,10)),fontsize=15)
plt.legend(["均值","中位数"])
plt.title("各学历薪资均值及中位数比较图",fontsize=16)plt.xlabel("学历",fontsize=12)
plt.ylabel("薪资(单位:K)",fontsize=12)for e,f in zip(v,w):plt.text(e,f+1,"{}K".format(f),ha="center",fontsize=12)
for g,h in zip([i+move for i in v],x):plt.text(g,h+1,"{}K".format(h),ha="center",fontsize=12)
plt.show()
从上图可以看得出,薪资和学历一般是呈现正相关的关系,学历越高薪资也会越高,兄弟们,不说了写好卷学历去了。
3.6 学历与岗位需求的数据分析
我们可以使用饼状图来展示不同学历在岗位需求中的占比。
# 学历与岗位需求的数据分析
data=df["diploma"].value_counts()
y=data.values
plt.figure(figsize=(6,6))
plt.pie(y,labels=data.index,autopct="%.2f%%")
plt.show()
从上图可以看出,数据分析岗位招聘要求中本科学历是占绝大多数的。
3.7 工龄与薪资数据分析
我们可以使用条状图来展示不同工龄的薪资分布。
# 工龄与薪资数据分析
d=df["avg_address"].groupby(df["experience"])
d_avg = d.mean()
c=list(d_avg.index)
v=list(range(1,len(c)+1))
w=d_avg.values.astype("int64")
x=d.median().values.astype("int64")
move=0.4plt.figure(figsize=(14,8))
plt.bar(v,w,width=move,color="#002c53")
plt.bar([i+move for i in v],x,width=move,color="#0c84c6")
a=np.arange(0,4)+1.2
plt.xticks(a,c,fontsize=15)
plt.yticks(list(range(0,35,5)),fontsize=15)
plt.legend(["均值","中位数"])
plt.title("各学历薪资均值及中位数比较图",fontsize=16)plt.xlabel("工作经验",fontsize=12)
plt.ylabel("薪资(单位:K)",fontsize=12)for e,f in zip(v,w):plt.text(e,f+1,"{}K".format(f),ha="center",fontsize=12)
for g,h in zip([i+move for i in v],x):plt.text(g,h+1,"{}K".format(h),ha="center",fontsize=12)
plt.show()
从图中可以看出,工作的年限越长,工资也会相应的高一些。
3.8 工龄与市场需求分析
我们可以使用饼状图来展示不同工龄在市场需求中的占比。
# 工龄与市场需求分析
data=df["experience"].value_counts()
y=data.values
plt.figure(figsize=(6,6))
plt.pie(y,labels=data.index,autopct="%.2f%%",colors = ['tomato', 'lightskyblue', 'goldenrod', 'green'])
plt.show()
从上图可以看出,工龄3-5年工作的人有一定的工作经验,工资也相对较小,所以比较受欢迎。的需求量是最大的占35.87%,该3-5年工作的人有一定的工作经验,工资也相对较小,所以比较受欢迎。
3.9 数据分析岗技能需求情况
tag = df['tags'].tolist()
tags = []
for item in tag:item_split = item.split(',')tags.extend(item_split)counter = Counter(tags)
element_counts = dict(counter)data = []
for item in element_counts.keys():data.append((item,element_counts.get(item)))c = (WordCloud().add(# 系列名称,用于 tooltip 的显示,legend 的图例筛选。series_name="数据分析岗位技能需求", # 系列数据项,[(word1, count1), (word2, count2)]data_pair=data, # 单词字体大小范围word_size_range=[6, 66])# 全局配置项.set_global_opts(# 标题设置title_opts=opts.TitleOpts(title="数据分析岗位技能需求", title_textstyle_opts=opts.TextStyleOpts(font_size=23)),# 提示框设置tooltip_opts=opts.TooltipOpts(is_show=True),).render("basic_wordcloud.html")
)
从上图可以看出,SQL、Python等数据分析工具是基础技能,数据挖掘、大数据处理、建模等高级技能是加分项。
四、结论与建议
通过对BOSS直聘平台上数据分析师招聘信息的可视化分析,我们得出以下结论:
- 数据分析师岗位主要集中在一线城市和新一线城市,薪资水平较高但竞争激烈。
- 市场对数据分析师的经验和学历要求以本科为主,但高级岗位对学历和经验要求更高。
- SQL、Python等数据分析工具是基础技能,机器学习、大数据处理等高级技能是加分项。
针对以上结论,我们提出以下建议:
- 求职者应结合自身实际情况,选择适合自己的城市和行业方向。
- 注重提升个人技能和经验积累,尤其是SQL、Python等数据分析工具的使用能力。
- 关注市场动态和新兴技术趋势,不断拓展自己的知识边界和技能组合。