Python数据分析实战:以数据分析岗为例,探索行业与薪资关联性
ztj100 2025-06-04 08:56 3 浏览 0 评论
金三银四,数据分析师成为众多行业竞相追逐的热门岗位,想知道如何在这个领域精准发力、脱颖而出吗?今天,我将以 BOSS 直聘上的数据为样本,借助 Python 强大的数据分析能力,深度剖析各个行业与薪资关联性分析,下面一起学习!
1.数据准备
首先,我们需要导入必要的库并加载数据。
import pandas as pd
import numpy as np
from pyecharts import options as opts
from pyecharts.charts import Bar, Pie, Boxplot, WordCloud, Map
from pyecharts.globals import SymbolType
import re
# 加载数据
df = pd.read_excel('/home/mw/project/BOSS直聘数据分析师职位.xlsx')
# 查看数据概览
df.head(3)
# 查看数据信息
df.info()
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左右,互联网相关行业(游戏、互联网、电子商务)普遍高于其他行业,在工作选择时可以更倾向于互联网公司的数据分析岗。
相关推荐
- 拒绝躺平,如何使用AOP的环绕通知实现分布式锁
-
如何在分布式环境下,像用synchronized关键字那样使用分布式锁。比如开发一个注解,叫@DistributionLock,作用于一个方法函数上,每次调方法前加锁,调完之后自动释放锁。可以利用Sp...
- 「解锁新姿势」 兄dei,你代码需要优化了
-
前言在我们平常开发过程中,由于项目时间紧张,代码可以用就好,往往会忽视代码的质量问题。甚至有些复制粘贴过来,不加以整理规范。往往导致项目后期难以维护,更别说后续接手项目的人。所以啊,我们要编写出优雅的...
- 消息队列核心面试点讲解(消息队列面试题)
-
Rocketmq消息不丢失一、前言RocketMQ可以理解成一个特殊的存储系统,这个存储系统特殊之处数据是一般只会被使用一次,这种情况下,如何保证这个被消费一次的消息不丢失是非常重要的。本文将分析Ro...
- 秒杀系统—4.第二版升级优化的技术文档二
-
大纲7.秒杀系统的秒杀活动服务实现...
- SpringBoot JPA动态查询与Specification详解:从基础到高级实战
-
一、JPA动态查询概述1.1什么是动态查询动态查询是指根据运行时条件构建的查询,与静态查询(如@Query注解或命名查询)相对。在业务系统中,80%的查询需求都是动态的,例如电商系统中的商品筛选、订...
- Java常用工具类技术文档(java常用工具类技术文档有哪些)
-
一、概述Java工具类(UtilityClasses)是封装了通用功能的静态方法集合,能够简化代码、提高开发效率。本文整理Java原生及常用第三方库(如ApacheCommons、GoogleG...
- Guava 之Joiner 拼接字符串和Map(字符串拼接join的用法)
-
Guave是一个强大的的工具集合,今天给大家介绍一下,常用的拼接字符串的方法,当然JDK也有方便的拼接字符串的方式,本文主要介绍guava的,可以对比使用基本的拼接的话可以如下操作...
- SpringBoot怎么整合Redis,监听Key过期事件?
-
一、修改Redis配置文件1、在Redis的安装目录2、找到redis.windows.conf文件,搜索“notify-keyspace-events”...
- 如何使用Python将多个excel文件数据快速汇总?
-
在数据分析和处理的过程中,Excel文件是我们经常会遇到的数据格式之一。本文将通过一个具体的示例,展示如何使用Python和Pandas库来读取、合并和处理多个Excel文件的数据,并最终生成一个包含...
- 利用Pandas高效处理百万级数据集,速度提升10倍的秘密武器
-
处理大规模数据集,尤其是百万级别的数据量,对效率的要求非常高。使用Pandas时,可以通过一些策略和技巧显著提高数据处理的速度。以下是一些关键的方法,帮助你使用Pandas高效地处理大型数据集,从而实...
- Python进阶-Day 25: 数据分析基础
-
目标:掌握Pandas和NumPy的基本操作,学习如何分析CSV数据集并生成报告。课程内容...
- Pandas 入门教程 - 第五课: 高级数据操作
-
在前几节课中,我们学习了如何使用Pandas进行数据操作和可视化。在这一课中,我们将进一步探索一些高级的数据操作技巧,包括数据透视、分组聚合、时间序列处理以及高级索引和切片。高级索引和切片...
- 原来这才是Pandas!(原来这才是薯片真正的吃法)
-
听到一些人说,Pandas语法太乱、太杂了,根本记不住。...
- python(pandas + numpy)数据分析的基础
-
数据NaN值排查,统计,排序...
- 利用Python进行数据分组/数据透视表
-
1.数据分组源数据表如下所示:1.1分组键是列名分组键是列名时直接将某一列或多列的列名传给groupby()方法,groupby()方法就会按照这一列或多列进行分组。按照一列进行分组...
你 发表评论:
欢迎- 一周热门
- 最近发表
- 标签列表
-
- idea eval reset (50)
- vue dispatch (70)
- update canceled (42)
- order by asc (53)
- spring gateway (67)
- 简单代码编程 贪吃蛇 (40)
- transforms.resize (33)
- redisson trylock (35)
- 卸载node (35)
- np.reshape (33)
- torch.arange (34)
- npm 源 (35)
- vue3 deep (35)
- win10 ssh (35)
- vue foreach (34)
- idea设置编码为utf8 (35)
- vue 数组添加元素 (34)
- std find (34)
- tablefield注解用途 (35)
- python str转json (34)
- java websocket客户端 (34)
- tensor.view (34)
- java jackson (34)
- vmware17pro最新密钥 (34)
- mysql单表最大数据量 (35)