对于一个企业而言,最核心的资产应该是人才,留住人才就能保持企业的持续发展,但没有员工流失的企业是不存在的。实际情况是,无论企业的平台多么高,福利多么好,肯定还是会存在员工离职的情况,这是一种非常正常的现象。对于企业而言,就需要识别员工离职的真正原因,提高人力资源管理中的短板,留住对企业真正有用的人才。(没用的人就让他走好了。。。。)
本文将从数据分析的角度来看真正影响员工的离职的原因。本文的数据来自kaggle网站,可以去原始地址下载点我下载原始数据。如果没有kaggle账号的,可以点击下面链接下载:
百度网盘下载, 密码:PVxq
数据说明
压缩包中有一个csv文件,包含了企业14999个员工的评价信息和在职情况,包含的字段如下:
- satisfaction_level: 员工满意度:0-1之间的一个数值。得分越高代表员工对企业越满意。
- last_evaluation: 最近一次评分:0-1之间的一个数值。得分越高代表员工表现越好。
- number_project: 员工做过的总项目数。
- average_montly_hours: 每月的平均工作时长(小时)。
- time_spend_company: 员工在公司的时间(年)。
- Work_accident: 员工是否在职期间有过工伤。
- left: 是否离职(0-在职,1-离职)。
- promotion_last_5years: 最近5年是否有过升职(0-没有,1-有)。
- sales: 部门。
- salary: 薪水(low-低薪,medium-中等收入,high-高薪)。
数据探索
本章我们使用R语言对企业员工数据进行探索,目的是分析员工的离职究竟和哪些因素有关系。
载入需要的包
library(ggplot2)
library(corrplot)
library(rpart)
library(rpart.plot)
library(caret)
library(e1071)
读入文件
df = read.csv(file="HR_comma_sep.csv", header = T, sep = ',')
head(df)
数据内容
探索数据的结构
str(df)
数据结构
summary(df)
数据概况
计算各个维度之间的相关性
#由于sales和salary为factor,所以先去掉
hr_col = df[,c(1:8)]
hr_col_matrix = cor(hr_col)
corrplot(hr_col_matrix)
画出各个变量的相关性如下:
相关性分析因为left=1表示员工已经离职,从上述途中和left相关的变量可以看出:
- 员工满意度越高,员工越不会离职
- 员工受过工伤,越不会离职 (这个原因...)
- 最近5年有过升职的员工,离职的可能性比较低
- 每月平均工作时间越长的员工,离职的可能性越高
下面我们通过箱体图来进行对比分析单个元素对于员工是否离职的影响。
- 员工满意度
ggplot(data=hr_col, aes(x=as.factor(left), y=satisfaction_level))+geom_boxplot(aes(fill=as.factor(left)))
员工满意度箱体图
从上图可以看出,选择留在公司的员工一般都是对公司比较 满意的。
- 员工评分
ggplot(data=hr_col, aes(x=as.factor(left), y=last_evaluationlast_evaluation))+geom_boxplot(aes(fill=as.factor(left)))
员工评分箱体图
从上图可以看出,评分在0.6-0.8之间的员工比较稳定。
- 做过的项目数量
ggplot(data=hr_col, aes(x=as.factor(left), y=number_project))+geom_boxplot(aes(fill=as.factor(left)))
员工项目数量箱体图
从上图可以看出,项目数量在3-4个左右的员工是比较稳定的。
- 月平均工作时间(小时)
ggplot(data=hr_col, aes(x=as.factor(left), y=average_montly_hours/8))+geom_boxplot(aes(fill=as.factor(left)))
月平均工作小时箱体图
在上图中,我按照每天8小时工作时间,将小时换算成为天。从上图可以看出,每月工作时间在20到30天之间的员工比较稳定。(我们也看到有工作时间在20天以下的,也跳槽了,这一般估计是缺勤的。另外有工作时间超过30天的,这种估计就是压力特别大,所以离职也是可以理解的,去哪里工作不是工作对吧_)
- 员工工作年限
ggplot(data=hr_col, aes(x=as.factor(left), y=time_spend_company))+geom_boxplot(aes(fill=as.factor(left)))
员工工作年限箱体图
从图中可以看到,工作年限2-4年的员工比较稳定,当然也看到有工作年限在8-10年的骨灰级员工,他们离职医院是比较弱的。left=1的员工基本工作年限在3-5年,所以这个时间段应该是员工离职的高发时间段。
- 5年内是否有过升职
df_pro = aggregate(df$left, by = list(df$promotion_last_5years), FUN = sum)
colnames(df_pro) = c('promotion_last_5years', 'left_sum')
df_pro$promotion_last_5years=as.factor(df_pro$promotion_last_5years)
p=ggplot(data = df_pro, mapping = aes(x = '', y = left_sum, fill = promotion_last_5years)) + geom_bar(stat = 'identity', position = 'stack', width = 1)+coord_polar(theta = "y")
p+labs(x = '', y = '离职人员数量对比', title = '离职人员最近5年升职情况对比')
离职人员升职情况对比
我们筛选出所有离职的员工,然后统计其5年内是否有过升职。通过上图可以看出,占比超过99%的离职员工5年内都没有升过职。所以,企业对于员工的升职加薪对于留住员工还是很重要的。
- 薪水情况
df_sal = aggregate(df$left, by = list(df$salary), FUN = sum)
colnames(df_sal) = c("salary", 'left_sum')
p=ggplot(data = df_sal, mapping = aes(x = '', y = left_sum, fill = salary)) + geom_bar(stat = 'identity', position = 'stack', width = 1)+coord_polar(theta = "y")
p+labs(x = '', y = '离职人员数量对比', title = '离职人员薪酬情况对比')
薪水对于员工的影响
从上图可以看出,离职员工中薪水较低和中等的占比超过了95%。结合之前的升职情况统计,离职的原因很明了了。(没有升职、没有加薪,画个饼就让我一直给你打工....)
- 部分离职对比
df_sales = aggregate(df$left, by = list(df$sales), FUN = sum)
colnames(df_sales) = c("sales", 'left_sum')
label_value <- paste('(', round(df_sales$left_sum/sum(df_sales$left_sum) * 100, 1), '%)', sep = '')
label_value
label <- paste(df_sales$sales, label_value, sep = '')
p=ggplot(data = df_sales, mapping = aes(x = '', y = left_sum, fill = sales)) + geom_bar(stat = 'identity', position = 'stack', width = 1)+coord_polar(theta = "y")
p+labs(x = '', y = '离职人员数量对比', title = '离职人员部门情况对比')+scale_fill_discrete(labels=label)
部门对比
从上图看出,销售和技术人员在离职人员中占比是最高的。企业应该特别注意这两个部门的员工。
网友评论