前沿
目前社会上呈现出一种公司招不到人,大批失业人员的矛盾现象,且大部分公司的离职率居高不下,很多入职没多久就辞职,所花费的培训招聘等资源都浪费了。为了弄清楚公司员工离职原因,通过kaggle上某一家企业员工离职的真实数据来对离职率进行分析建模。
一、初识数据
1、数据来源
https://www.kaggle.com/jiangzuo/hr-comma-sep/version/1
2、载入数据
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from sklearn.model_selection import train_test_split,GridSearchCV
import seaborn as sns
from sklearn.preprocessing import StandardScaler
from sklearn.linear_model import LogisticRegressionCV,LogisticRegression
from sklearn.metrics import classification_report,roc_curve,auc
from sklearn.naive_bayes import GaussianNB
from sklearn.tree import DecisionTreeClassifier as dtc
from sklearn.ensemble import RandomForestClassifier
data=pd.read_csv('/Desktop/数据分析/HR_comma_sep.csv')
data.shape
数据共有10列,14999行数据。
3、特征说明
left:是否已经离职 0:未离职,1:已离职
satisfaction_level:对公司的满意度
last_evaluation:绩效评估
number_project:参加的项目个数
average_montly_hours:平均每月工作时长
time_spend_company:工作年限
Work_accident: 是否发生过工作差错 0:未发生,1:已发生
promotion_last_5years:五年内是否升职 0:未升职,1已升职
sales: 职业 定性变量,10个取值
salary:薪资水平 定量变量 ,3个取值
二、 数据描述性分析
1、查看数据前5行
data.head()
2、查看数据类型
data.dtypes
3、数据描述性统计
data.describe()
data['left'].value_counts()/data['left'].count()
员工对公司的满意度: 范围 0.09~1, 中位数0.640, 均值0.613, 总体来说员工对公司较满意。
最新考核评估: 范围 0.36~1, 中位数0.720, 均值0.716, 员工考核平均水平中等偏上。
项目数: 范围 2~7个, 中位数4, 均值3.8, 平均参加项目数为4个。
平均每月工作时长: 范围96~310小时, 中位数200, 均值201。
工作年限: 范围2~10年, 中位数3, 均值3.5。
4、数据缺失值
data.isnull().any()
通过上述可以发现,数据都没有缺失值。
三、可视化分析
1、离职人数占比
data_left = data.left.value_counts()
plt.pie([data_left[0]/data.left.count(),data_left[1]/data.left.count()],labels=['未离职','已离职'], autopct='%1.1f%%',
shadow=True, startangle=90)
print('总人数:',data.left.count())
print(data_left)
总共有14999人,其中离职人数3571,占总人数的23.8%
2、公司的满意程度对离职的影响
import matplotlib.pyplot as plt
import seaborn as sns
%matplotlib inline
plt.rcParams['font.family'] = ['Arial Unicode MS'] #mac和windows有区别
plt.rcParams['axes.unicode_minus']=False #可以显示负数
sns.boxplot(data['left'],data['satisfaction_level'])
对比员工对公司的满意度评分,离职员工的评分明显偏低,且离职人员对公司满意度整体波动较大,大部分都在0.4左右,甚至有一部分0.2以下的低水平。
2、绩效评估对离职的影响
sns.boxplot(data['left'],data['last_evaluation'])
就中位数而言,离职人员的考核标准比较高。从整体来看离职人员的绩效评估浮动比较大,最高的比在职的高,最低的比在职的人员低。
在职人员的绩效评估比较集中。
3、平均每月工作时长对离职的影响
sns.boxplot(data['left'],data['average_montly_hours'])
就中位数而言,离职人员的平均每月工作时长比较高。从整体来看离职人员的平均工作时长浮动比较大,最高的比在职的高,最低的比在职的人员低。
4、薪资水平对离职的影响
table=pd.crosstab(data.salary,data