【数据可视化-20】员工离职数据可视化:洞察离职趋势与关键因素

🧑 博主简介:曾任某智慧城市类企业算法总监,目前在美国市场的物流公司从事高级算法工程师一职,深耕人工智能领域,精通python数据挖掘、可视化、机器学习等,发表过AI相关的专利并多次在AI类比赛中获奖。CSDN人工智能领域的优质创作者,提供AI相关的技术咨询、项目开发和个性化解决方案等服务,如有需要请站内私信或者联系任意文章底部的的VX名片(ID:xf982831907

💬 博主粉丝群介绍:① 群内初中生、高中生、本科生、研究生、博士生遍布,可互相学习,交流困惑。② 热榜top10的常客也在群里,也有数不清的万粉大佬,可以交流写作技巧,上榜经验,涨粉秘籍。③ 群内也有职场精英,大厂大佬,可交流技术、面试、找工作的经验。④ 进群免费赠送写作秘籍一份,助你由写作小白晋升为创作大佬。⑤ 进群赠送CSDN评论防封脚本,送真活跃粉丝,助你提升文章热度。有兴趣的加文末联系方式,备注自己的CSDN昵称,拉你进群,互相学习共同进步。

在这里插入图片描述

一、项目背景与目标

  员工离职不仅影响企业的正常运营,还会增加招聘和培训成本。通过数据可视化,我们可以快速识别离职趋势和影响因素,从而采取针对性措施降低离职率。

二、数据集介绍

  使用公开HR数据集,包含14,999条员工记录,关键特征包括:

特征名称说明类型
satisfaction_level员工对公司的满意度float64
last_evaluation绩员工上次KPI评分float64
number_project同时处理的项目数int64
average_montly_hours平均每个月的工作时间int64
time_spend_company在公司的时间int64
Work_accident是否出现过工作事故int64
left是否离开int64
promotion_last_5years最近5年是否升职int64
sales员工部门object
salary薪资等级object

三、完整代码实现

3.1 环境准备与数据加载

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
from sklearn.model_selection import train_test_split

# 配置可视化样式
plt.style.use('ggplot')
%matplotlib inline

# 加载数据
df = pd.read_csv('/path/to/HR_comma_sep.csv')

3.2 数据预处理

# 特征重命名
df = df.rename(columns={
    'satisfaction_level': 'satisfaction',
    'last_evaluation': 'evaluation',
    'number_project': 'projectCount',
    'average_montly_hours': 'averageMonthlyHours',
    'time_spend_company': 'yearsAtCompany',
    'Work_accident': 'workAccident',
    'promotion_last_5years': 'promotion',
    'sales': 'department',
    'left': 'turnover'
})

# 处理分类变量
df['department'] = df['department'].astype('category').cat.codes
df['salary'] = df['salary'].astype('category').cat.codes

# 检查数据平衡性
print(f"离职比例:{df.turnover.value_counts(normalize=True)[1]:.1%}")

3.3 特征分布可视化

# 设置画布
fig, axes = plt.subplots(2, 2, figsize=(15, 10))

# 满意度分布对比
sns.kdeplot(data=df, x='satisfaction', hue='turnover', ax=axes[0,0], fill=True)
axes[0,0].set_title('满意度分布对比')

# 工时分布对比
sns.boxplot(data=df, x='turnover', y='averageMonthlyHours', ax=axes[0,1])
axes[0,1].set_title('月均工时分布')

# 项目数分布
sns.countplot(data=df, x='projectCount', hue='turnover', ax=axes[1,0])
axes[1,0].set_title('参与项目数分布')

# 司龄分布
sns.histplot(data=df, x='yearsAtCompany', hue='turnover', multiple='stack', ax=axes[1,1])
axes[1,1].set_title('司龄分布')

plt.tight_layout()
plt.show()

3.4 相关性分析

# 计算相关系数矩阵
corr_matrix = df.corr()

# 绘制热力图
plt.figure(figsize=(12,8))
sns.heatmap(corr_matrix, annot=True, cmap='coolwarm', fmt=".2f")
plt.title('特征相关性热力图')
plt.show()

四、离职原因可视化分析

4.1.离职率与满意度和绩效评分关系

# 绘制离职率与满意度的散点图
plt.figure(figsize=(12, 6))
sns.scatterplot(x='satisfaction', y='evaluation', hue='turnover', data=df, palette='coolwarm')
plt.title('离职率与满意度和绩效评分的关系')
plt.xlabel('满意度')
plt.ylabel('绩效评分')
plt.grid(True)
plt.show()

  • 1、绩效评分高的离职率高于绩效评分低的;
  • 2、绩效评分高的离职满意度要么很低,要么很高;低满意度高绩效评分的员工离职可能是对公司的薪资、制度等问题选择离职,高满意度的高绩效评分的员工离职可能是因为在企业自身能力得不到提升而选择离职;
  • 3、对企业满意度中等偏下的低绩效员工离职率也比较高,可能是一直保持着骑驴找马的姿态在工作,找到的新得工作选择了离职;

  下面将不对各图进行分析,请读者自行分析;

4.2 部门离职率分析

# 计算各部门离职率
department_turnover = df.groupby('department')['turnover'].mean().reset_index()

# 绘制部门离职率柱状图
plt.figure(figsize=(12, 6))
sns.barplot(x='department', y='turnover', data=department_turnover)
plt.title('各部门离职率分析')
plt.xlabel('部门')
plt.ylabel('离职率')
plt.grid(True)
plt.show()

4.3 不同薪资等级的离职率分布

plt.figure(figsize=(12, 6))
sns.countplot(x='salary', hue='turnover', data=df)
plt.title('不同薪资等级的离职率分布')
plt.xlabel('薪资等级')
plt.ylabel('人数')
plt.legend(title='离职情况')
plt.show()

4.4 离职员工的项目参与情况

plt.figure(figsize=(12, 6))
sns.boxplot(x='projectCount', y='turnover', data=df)
plt.title('离职员工的项目参与情况')
plt.xlabel('项目数量')
plt.ylabel('离职率')
plt.grid(True)
plt.show()

4.5 离职员工的月均工时分布

plt.figure(figsize=(12, 6))
sns.violinplot(x='turnover', y='averageMonthlyHours', data=df)
plt.title('离职员工的月均工时分布')
plt.xlabel('离职情况')
plt.ylabel('月均工时')
plt.grid(True)
plt.show()

4.6 离职员工的出现过工作事故分布

plt.figure(figsize=(12, 6))
# (x='satisfaction', y='evaluation', hue='turnover', data=df, palette='coolwarm')
sns.countplot(x='workAccident', hue='turnover',data=df)
plt.title('离职员工的出现过工作事故分布')
plt.xlabel('离职情况')
plt.ylabel('出现过工作事故')
plt.grid(True)
plt.show()

4.7 离职员工的薪资等级分布

plt.figure(figsize=(12, 6))
sns.violinplot(x='turnover', y='salary', data=df)
plt.title('离职员工的薪资等级分布')
plt.xlabel('离职情况')
plt.ylabel('薪资等级')
plt.grid(True)
plt.show()

4.8 离职员工的在公司的工作年限和薪资等级的分布

plt.figure(figsize=(12, 6))
sns.scatterplot(x='yearsAtCompany', y='salary', hue='turnover', data=df)
plt.title('离职员工的在公司的工作年限和薪资等级的分布')
plt.xlabel('工作年限')
plt.ylabel('薪资等级')
plt.grid(True)
plt.show()

五、分析结论与业务洞见

关键离职驱动因素

  1. 员工满意度:与离职率呈强负相关(相关系数-0.39)。
  2. 高绩效员工:离职呈现双峰现象,满意度分布分析显示高绩效员工离职率较高。
  3. 月均工时:超过250小时的员工离职风险显著增加。

业务建议

  1. 建立满意度实时监测系统:及时发现和解决员工的不满情绪。
  2. 优化高绩效员工的工作强度分配:避免过度工作导致的离职。
  3. 对司龄3-5年的员工加强关怀计划:提高员工的归属感和忠诚度。

  通过数据可视化,我们可以快速识别员工离职的趋势和影响因素,进而采取有效措施留住人才。希望本文能为您提供有价值的参考,帮助您优化员工管理策略。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

云天徽上

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值