数据分析-17-IBM人员流失分析(包含代码数据)

0. 代码数据下载

关注公众号:『AI学习星球
回复:IBM人员流失分析 即可获取数据下载。
算法学习4对1辅导论文辅导核心期刊可以通过公众号CSDN滴滴我
在这里插入图片描述


1. 背景介绍

随着经济全球化和技术革命的进一步拓展,市场竞争日益激烈。在这场争夺的背后,人才的竞争又是重中之重。人才相对于资本等其他资源的稀缺性将使高素质的人才在各个企业之间流动成为一种常态。 而这就很容易造成公司的人员流失,那么造成这些人员流失的原因主要有哪些呢?我们怎么做可以减少人才流失呢?

2. 研究问题

人员流失因素分析

3. 部分字段含义

字段名含义
Age年龄
Attribute离职
BusinessTravel出差:0-不出差、1-偶尔出差、2-经常出差
Department部门:1-人力资源、2-科研、3-销售
DistanceFromHome离家距离
Education教育程度:1-大学以下、2-大学、3-学士、4-硕士、5-博士
EducationField教育领域
EnvironmentSatisfaction环境满意度
Gender性别:1-Male男、0-Female女
JobInvolvement工作投入
JobLevel职位等级
JobRole工作岗位
JobSatisfaction工作满意度
MaritalStatus婚姻状况:0-Divorced离婚、1-Single未婚、2-已婚
MonthlyIncome月收入
NumCompaniesWorked服务过几家公司
OverTime加班
RelationshipSatisfaction关系满意度
StockOptionLevel股权等级
TotalWorkingYears总工作年限
TrainingTimesLastYear上一年培训次数
WorkLifeBalance工作生活平衡
YearsAtCompany工作时长
YearsInCurrentRole当前岗位在职时长
YearsSinceLastPromotion上次升职时间
YearsWithCurrManager和现任经理时长

4. 数据处理

4.1 导入数据

a. 导入数据处理包
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
import warnings
warnings.filterwarnings('ignore')
# 数据全显示
pd.set_option('display.max_columns', None)
# 颜色
colors = sns.color_palette()
# 数据精度
pd.set_option('precision', 3)
#  解决中文/小数点显示问题
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
b. 导入数据
data_path = 'WA_Fn-UseC_-HR-Employee-Attrition.csv'
df = pd.read_csv(data_path)
c. 查看数据前5列,观察数据结构
df.head(5)

在这里插入图片描述

d. 查看数据集信息、检查缺失值
df.info()

在这里插入图片描述

e. 查看数据描述性信息,检查异常值
df.describe()

在这里插入图片描述

f. 查看所有数据分布
# 查看所有数据分布
colnm = df.columns.to_list()
plt.figure(figsize=(35, 25))
for i in range(35):
    plt.subplot(5, 7, i+1)  # 3行4列 位置是i+1的子图
    df[colnm[i]].hist(bins=80, color=colors[1])  # bins 指定显示多少竖条
    plt.xlabel(colnm[i], fontsize=13)
    plt.ylabel('Frequency')
plt.tight_layout()
print('\n figure 01')
plt.show()

在这里插入图片描述

结论: 该公司员工平均年龄为36岁 平均工作年限为11年,最长工作年限为40年 月平均收入为6502.93等重要信息

4.2 洞察数据(主要是公司离职人数)

4.2.1 公司离职人数与各部分对比
# 公司各部门离职率分析
plt.figure(figsize=(15, 9))  # 图片大小
df1 = pd.crosstab(df['Department'], df['Attrition'])
df1.plot(kind='bar')
plt.legend()
plt.xlabel('部门')
plt.ylabel('人数')
plt.xticks(rotation=0)
plt.title('公司各部门离职率分析')
print('\n figure 02')

在这里插入图片描述

结论:公司主要由三个部门组成(人力资源,科技部门,销售部门),其中科技部门的总人数最多,相对应的离职人数也是最多的,人力资源部门总人数和离职人数都最少

4.2.2 公司离职人数占比分析
# 公司离职人数占比分析
labels = ['离职', '在职']
sizes = [sum(df['Attrition'] == 'Yes'), sum(df['Attrition'] == 'No')]
explode = (0, 0.001)
plt.pie(sizes, explode=explode, labels=labels, autopct='%1.1f%%', shadow=False, startangle=150)
plt.title("公司离职人数占比分析")
print('\n figure 03')

在这里插入图片描述

结论:公司离职率是16%

4.2.3 加班与离职率的关系
# 加班与离职率的关系
plt.figure(figsize=(6, 4))
sns.countplot(x='OverTime', hue='Attrition', data=df, color=colors[4])
plt.legend()
plt.xlabel('加班时长')
plt.title('加班与离职率的关系')
print('\n figure 04')

在这里插入图片描述

结论:加班时间越长,员工的离职率越高,加班是导致离职的重要原因

4.2.4 商务出差与离职率的关系
# 商务出差与离职率的关系
plt.figure(figsize=(6, 4))
sns.countplot(x='BusinessTravel', hue='Attrition', data=df)
plt.legend()
plt.xlabel('商务出差频次')
plt.title('商务出差与离职率的关系')
print('\n figure 05')

在这里插入图片描述

结论:如果频繁的商务出差,员工的离职率会更高

4.2.5 教育程度与离职率的关系
# 教育程度与离职率的关系
plt.figure(figsize=(6, 4))
sns.countplot(x='Education', hue='Attrition', data=df, color=colors[6])
plt.legend()
plt.xlabel('教育程度')
plt.title('教育程度与离职率的关系')
print('\n figure 06')

在这里插入图片描述

结论:科技公司大部分学历中偏上,教育程度越高,更有竞争力,离职率也越低

4.2.6 性别与离职率的关系
# 性别与离职率的关系
plt.figure(figsize=(6, 4))
sns.countplot(x='Gender', hue='Attrition', data=df, color=colors[8])
plt.legend()
plt.xlabel('性别')
plt.title('性别与离职率的关系')
print('\n figure 07')

在这里插入图片描述

结论:科技公司男性人数比较多,通过公司人口基数来对比,女性的离职率是要高于男性的

4.2.7 婚姻状况与离职率的关系
# 婚姻状况与离职率的关系
labels = ['单身', '已婚', '离婚']
sizes = [sum(df['MaritalStatus'] == 'Married'), sum(df['MaritalStatus'] == 'Single'), sum(df['MaritalStatus'] == 'Divorced')]
explode = (0.04, 0, 0.001)
plt.pie(sizes, explode=explode, labels=labels, autopct='%1.1f%%', shadow=False, startangle=150)
plt.title("婚姻状况与离职率的关系")
print('\n figure 08')

在这里插入图片描述

结论:公司单身离职率最高,离婚后的离职率最低

4.2.8 收入与离职率的关系
# 收入与离职率的关系
df_income1 = df[(df['MonthlyIncome'] > 1000) & (df['MonthlyIncome'] < 8000)]
df_income2 = df[(df['MonthlyIncome'] > 8000) & (df['MonthlyIncome'] < 15000)]
df_income3 = df[(df['MonthlyIncome'] > 15000) & (df['MonthlyIncome'] < 20000)]
labels = ['月收入小于8000离职率', '月收入8000-15000离职率', '月收入大于15000离职率']
sizes = [sum(df_income1['Attrition'] == 'Yes'), sum(df['Attrition'] == 'Yes'),
         sum(df['Attrition'] == 'Yes')]
explode = (0.04, 0, 0.001)
plt.pie(sizes, explode=explode, labels=labels, autopct='%1.1f%%', shadow=False, startangle=150)
plt.title("收入与离职率的关系")
print('\n figure 09')

在这里插入图片描述

结论:公司单身离职率最高,离婚后的离职率最低

4.2.9 员工工作过的公司数与离职率的关系
# 员工工作过的公司与离职率的关系
df_worked1 = df[(df['NumCompaniesWorked'] > 0) & (df['NumCompaniesWorked'] < 3)]
df_worked2 = df[(df['NumCompaniesWorked'] > 3) & (df['NumCompaniesWorked'] < 6)]
df_worked3 = df[(df['NumCompaniesWorked'] > 6) & (df['NumCompaniesWorked'] < 10)]
x = ['0-3家', '3-6家', '6-10家']
y = [sum(df_worked1['Attrition'] == 'Yes'), sum(df_worked2['Attrition'] == 'Yes'), sum(df_worked3['Attrition'] == 'Yes')]
plt.plot(x, y, color='r')
plt.xlabel('员工工作过公司数量')
plt.ylabel('离职人数')
plt.title("员工工作过的公司与离职率的关系")
print('\n figure 10')

在这里插入图片描述

结论:员工工作过的公司越少,离职率越低,说明频繁跳槽的员工稳定性较差,更容易离职。

5. 总结建议

**结论:**根据我们前面的分析可以得出结论,影响离职的因素主要有

  1. 出差多
  2. 大学刚毕业没多久的年轻单身人士
  3. 加班多
  4. 底层、基层收入低
  5. 部门男女比例失调
  6. 销售部门

建议:

  1. 对于新人和大学生,其大多是将企业当作自己职业生涯发展的跳板,在企业工作对他们而言就是为了获得工作经验或是学习相关技术,一旦目的达到,或者达不到他们的期望、工作不满意,他们就会选择待遇更高、发展空间更大的企业服务。建议提高这些刚进入公司的新人归属感、公司内部多一些交流,给其一个平台。同时,对于已经选择离开的人员,我们HR部门要及时吸引新人注入,为企业带来活力的同时,弥补职位空缺。如果可以的话,我们可以多招一些有经验的员工同时对于校园招聘这一块我们要严格把关,提高招聘要求,虽然我们不能强制要求员工留下,但我们可以通过员工关怀,激励等手段减少相应的人员流失。
  2. 单身年轻人跳槽厉害不可避免,同时由于有些部门明显男女比例不协调,或许可以考虑公司内部发展牵线,比如开展不同部门联谊会等
  3. 针对销售部门人员流失比例大情况,由于销售部门的重要性,加班出差不可避免,那么我们是否能在招聘的时候就强调这一点,让候选人有一个心里预期,以免将来进入公司后觉得不满意从而选择离职。
  4. 基层员工工资普遍较低,适当关注底层员工的工资,给他们涨薪。

关注公众号:『AI学习星球
回复:IBM人员流失分析 即可获取数据下载。
算法学习4对1辅导论文辅导核心期刊可以通过公众号CSDN滴滴我
在这里插入图片描述

  • 20
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值