美文网首页
利用python分析员工离职原因

利用python分析员工离职原因

作者: alittleman | 来源:发表于2019-07-09 23:20 被阅读0次
分析目的

通过分析了解员工离职原因。

数据采集

数据源:员工信息csv文件
数据读取:

import pandas as pd
from pandas import DataFrame
from pandas import read_csv
import matplotlib
import matplotlib.pyplot as plt

file_path = 'D:/study/HR_comma_sep.csv'
process_data = pd.read_csv(file_path, encoding='utf-8', sep=',')
数据处理

预览数据

data.png
数据基本信息
process_data.info()
d2.png
通过基本信息了解到数据集有14999行,10个字段,没有空值。
字段 含义
satisfaction_level 满意度
last_evaluation 员工考核
number_project 项目数
average_montly_hours 平均每月工作时间
time_spend_company 工龄
Work_accident 工作事故
left 是否离职(0:在职,1离职)
promotion_last_5years 过去五年是否有晋升
sales 部门
salary 薪资水平
数据分析

1.首先看下几个数值类型的字段的描述性统计分析
describe_df = process_data.describe()

describe.png
可以得知对公司的平均满意度为 0.61283,员工考核的平均值为0.7161,平均每月工作时长的平均值为201小时。
2.观察各字段之间相关程度
corr_data = process_data.corr()
corr.png
通过线性相关系数值,可以看出员工考核与员工的项目数,员工考核与和平均每月工作成中度正相关。
离职和满意度成中度负相关。
3.查看公司员工分布总体情况并用饼图展示
process_data['left'].value_counts()
plt.clf()
left_count_rate = process_data['left'].value_counts()/process_data['left'].count()
left_count_rate.plot.pie(labels=['在职', '离职'],autopct = '%.2f%%')
plt.axis('equal')
title = '在职,离职员工比例'
plt.title(title)
plt.show()
plt.savefig(title+'.png', dpi=100)
在职,离职员工比例.png
从图可知,该公司在职员工占比76.19%,离职员工占比23.81%
4.查看公司个部门人数分布情况
sales_value_counts = process_data['sales'].value_counts()
各部门分布.png

5.查看薪资分布情况
salary_value_counts = process_data['salary'].value_counts()

薪资水平人数分布情况.png

根据部门和薪资人数分布,可看出该公司销售部门人数最多,近一半的员工处于低薪水平。
6.分析各部门离职率,柱形图展示

# 离职员工表
left_df = process_data[process_data['left'] == 1]
# 柱形图展示 部门离职率
left_sales_rate = left_df['sales'].value_counts()/sales_value_counts
left_sales_rate.plot(kind='bar', color=bar_color)
plt.title('各部门离职率')
plt.show()
plt.savefig('各部门离职率.png', dpi=100)
各部门离职率.png

7.分析不同薪资水平与离职的关系,柱形图表示

plt.clf()
left_salary_rate = left_df['salary'].value_counts()/salary_value_counts
left_salary_rate.plot(kind='bar', color=bar_color)
title = '不同薪资水平离职率'
plt.title(title)
plt.show()
plt.savefig(title+'.png', dpi=100)
不同薪资水平离职率.png

可明显看出薪资水平高人数越少,薪资水平低,离职人数多。
8.分析满意度与离职之间的关系,直方图对比分析离职员工和在职员工的满意度分布

plt.clf()
plt.hist(process_data[process_data['left'] == 1]['satisfaction_level'], label='离职员工', color=left_color)
plt.hist(process_data[process_data['left'] == 0]['satisfaction_level'], label='在职员工', color=stay_color)
plt.xlabel('满意度')
plt.legend(['离职员工', '在职员工'])
plt.legend(loc='best')
plt.xlim(0, 1.05)
title = '在职离职员工满意度分布'
plt.title(title)
plt.tight_layout()
plt.show()
plt.savefig(title+'.png', dpi=100)
在职离职员工满意度分布.png

满意度低于0.4,(远低于平均满意度0.61)的员工,离职人数达到峰值。满意度处于0.6~1之间的在职员工,人数达到峰值。
9.分析员工考核与离职之间的关系

# 发现字段关系对比代码重复,故提取公共函数方式
#不同属性字段与离职的关系
def analyze_column_with_left(column_name: str, title: str, xlabel: str, df: DataFrame):
    plt.clf()
    plt.hist(df[df['left'] == 1][column_name], label='离职员工', color=left_color)
    plt.hist(df[process_data['left'] == 0][column_name], label='在职员工', color=stay_color)
    plt.xlabel(xlabel)
    plt.legend(['离职员工', '在职员工'])
    plt.legend(loc='best')
    plt.xlim(0, df[column_name].max()+1)
    plt.title(title)
    plt.tight_layout()
    plt.show()
    plt.savefig(title + '.png', dpi=100)

# 分析员工考核和离职关系
analyze_column_with_left('last_evaluation', '在职离职员工考核分布', '员工考核', process_data)
在职离职员工考核分布.png
通过上表可以看出考核低于0.6的员工离职人数达到峰值,考核在0.8-1.0之间离职人数达到峰值。
10.分析员工项目数与离职之间的关系
analyze_column_with_left('number_project', '在职离职员工项目数分布', '项目数', process_data)
在职离职员工项目数分布.png
通过上表可以看出项目数为2的离职人数达到峰值,项目数在6~7的人数达到峰值。参与3-4个项目的员工相对稳定。
11.分析员工平均每月工作时间与离职之间的关系
analyze_column_with_left('average_montly_hours', '在职离职员工平均每月工作时间', '平均每月工作时间', process_data)
在职离职员工平均每月工作时间.png

通过上表可以看出平均月工作时间在125-160之间离职员工数达到一个峰值,平均月工作时间在250-300达到一个峰值。工作时间在140-260的员工比较稳定。
12.分析员工工龄与离职之间的关系
analyze_column_with_left('time_spend_company', '在职离职员工工龄分布', '员工工龄', process_data)

在职离职员工工龄分布.png
通过上表可以看出工龄在3-5年内的员工离职人数较多,工龄在7-10年的员工比较稳定,没有离职。
13.分析员工满意度与薪资水平的关系
low_satisfaction = process_data[process_data['salary'] == 'low']['satisfaction_level']
medium_satisfaction = process_data[process_data['salary'] == 'medium']['satisfaction_level']
high_satisfaction = process_data[process_data['salary'] == 'high']['satisfaction_level']
plt.clf()
low_satisfaction.plot(kind='kde', label='low')
medium_satisfaction.plot(kind='kde', label='medium')
high_satisfaction.plot(kind='kde',label='high')
plt.legend(['low', 'medium', 'high'])
plt.legend(loc='best')
plt.xlim(0, 1.2)
plt.ylim(0, 1.7)
title = '满意度—薪资水平对比'
plt.title(title)
plt.show()
plt.savefig(title + '.png', dpi=100)

满意度—薪资水平对比.png

通过上图可以看出,薪资越低对公司满意度越低,薪资越高对公司满意度越高。

相关文章

  • 利用python分析员工离职原因

    分析目的 通过分析了解员工离职原因。 数据采集 数据源:员工信息csv文件数据读取: 数据处理 预览数据 数据分析...

  • 员工离职原因分析

    @ #方法 #人才观 #管理观 不要期望员工在离职面谈中,跟你说出真正离职的原因,80%以上的员工在离职的时候所说...

  • 员工离职原因数据分析|python

    一、分析目的 数据源自kaggle,通过分析了解员工离职的原因,为降低员工离职率的举措提供数据支撑。 二、数据处理...

  • 你的离职是因为他们吗?

    分析员工离职原因: 1,钱没给够。 2,心委屈了。 我想说,你们真的知道员工为什么离职吗? 曾经世...

  • R语言数据分析实例一:离职率分析与建模预测

    一、背景说明 本文分析利用IBM离职员工数据进行分析。在对离职率的影响因素进行观察的基础至上,建立模型并预测哪些员...

  • 员工离职原因!

    员工离职原因,只有两点最真实,其他都是扯淡! 2016-09-04 【一】员工的离职原因 员工的离职原因林林总总,...

  • DC离职率预测案例分析

    1.需求描述 本文分析利用DC员工数据进行分析。在对离职率的影响因素进行观察的基础至上,建立模型并预测哪些员工更易...

  • 优秀核心员工要离职,除了加工资,还有什么方法?

    优秀核心的员工离职,除了找到对策之外,更重要的是分析出离职的真正原因,而优秀核心员工离职一般会存在以下几个方面的原...

  • 什么原因你会毫不犹豫的辞职

    员工离职原因, 只有两点最真实, 其他都是扯淡 职场那些事儿 心,委屈了。 一、员工的离职原因 员工的离职原因林林...

  • 新生代员工培养方式的思考

    由于近期本人团队内一个新生代员工提出离职,引发本人对员工离职原因及新生代员工培养方式的深入思考(注:可能分析有些片...

网友评论

      本文标题:利用python分析员工离职原因

      本文链接:https://www.haomeiwen.com/subject/qorfkctx.html