金三银四,数据分析师成为众多行业竞相追逐的热门岗位,想知道如何在这个领域精准发力、脱颖而出吗?今天,我将以 BOSS 直聘上的数据为样本,借助 Python 强大的数据分析能力,深度剖析各个行业与薪资关联性分析,下面一起学习!
1.数据准备
首先,我们需要导入必要的库并加载数据。
import pandas as pdimport numpy as npfrom pyecharts import options as optsfrom pyecharts.charts import Bar, Pie, Boxplot, WordCloud, Mapfrom pyecharts.globals import SymbolTypeimport re# 加载数据df = pd.read_excel('/home/mw/project/BOSS直聘数据分析师职位.xlsx')# 查看数据概览df.head(3)

2. 数据清洗
我们需要对数据进行清洗,特别是薪资范围和经验要求字段。
def process_salary(salary): if not isinstance(salary, str): return np.nan # 处理日薪 if '元/天' in salary: # 提取第一个数值(-前面的数值) daily = float(re.findall(r'(\d+\.?\d*)', salary.split('-')[0])[0]) return daily * 30 / 1000 # 转换为月薪(千元),按30天计算 # 处理时薪 elif '元/时' in salary: # 提取第一个数值(-前面的数值) hourly = float(re.findall(r'(\d+\.?\d*)', salary.split('-')[0])[0]) return hourly * 8 * 30 / 1000 # 转换为月薪(千元),8小时/天,30天/月 # 处理月薪 elif 'K' in salary or 'k' in salary: # 提取第一个数值(-前面的数值) monthly = float(re.findall(r'(\d+\.?\d*)', salary.split('-')[0])[0]) # 处理16薪等情况 if '薪' in salary: months = float(re.findall(r'(\d+)薪', salary)[0]) return monthly * months / 12 return monthly # 处理纯数字月薪(如10000-15000) elif re.search(r'\d+-\d+', salary): # 提取第一个数值(-前面的数值) monthly = float(re.findall(r'(\d+\.?\d*)', salary.split('-')[0])[0]) return monthly / 1000 # 转换为千元 # 其他情况(如纯数字) else: try: return float(re.findall(r'(\d+\.?\d*)', salary)[0]) / 1000 # 转换为千元 except: return np.nan# 应用处理函数df['薪资月薪(K)'] = df['薪资范围'].apply(process_salary)# 显示前3行结果df.head(3)
3.行业与薪资关联性分析
分析不同行业的数据分析师岗位薪资是否存在显著差异。
# 按公司类型分组统计薪资industry_salary = df.groupby('公司类型')['薪资月薪(K)'].agg(['mean', 'median', 'count']).sort_values('mean', ascending=False)# 筛选至少有5个样本的行业industry_salary = industry_salary[industry_salary['count'] >= 5]# 可视化bar1 = ( Bar() .add_xaxis(industry_salary.index.tolist()) .add_yaxis("薪资月薪(K)", industry_salary['mean'].round(1).tolist()) .set_global_opts( title_opts=opts.TitleOpts(title="不同行业数据分析师平均薪资"), yaxis_opts=opts.AxisOpts(name="薪资(千元)"), xaxis_opts=opts.AxisOpts(axislabel_opts=opts.LabelOpts(rotate=45)), ))bar1.render_notebook()
由柱形图可以看出游戏、互联网、电子商务行业的平均月薪资最高,分别达到约21.5k、20.4k和16.6k,传统行业如医疗健康、广告公关会展的薪资相对较低,差不多在11K左右,互联网相关行业(游戏、互联网、电子商务)普遍高于其他行业,在工作选择时可以更倾向于互联网公司的数据分析岗。