# 第一部分: 取得数据
# 引入必要的数据预处理库和可视化工具
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import matplotlib as matplot
import seaborn as sns
%matplotlib inline
#读取数据并将其存入dataframe的数据结构中并命名为"df"
df = pd.read_csv('Ch3-Turnover.csv', index_col=None)
# 第二部分: 清洗数据
*通常,清理数据需要做很多工作,而且可能是一个非常繁琐的过程。来自kaggle的这个数据集是clean的,不包含丢失的值。但是,仍然需要检查数据集,以确保其他内容都是可读的,并且观察值与属性名称匹配。.*、
# 检查是否存在缺失值
df.isnull().any()
#重命名某些列以提高可读性
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'
})
# 将响应变量“离职率”移到表的前面
front = df['turnover']
df.drop(labels=['turnover'], axis=1,inplace = True)
df.insert(0, 'turnover', front)
df.head()
# Part 3: 探索数据
## 3a. 统计概况
***
该数据集包含:
- 大约15000名雇员的情况和10项属性
- 公司的离职率大约为24%
- 雇员的平均满意度为0.61
、
## 3b. 相关性矩阵 & 热图
***
**中度正相关特征:**
- projectCount vs evaluation: 0.349333
- projectCount vs averageMonthlyHours: 0.417211
- averageMonthlyHours vs evaluation: 0.339742
**中度负相关特征:**
- satisfaction vs turnover: -0.388375
**停下来思考一下:**
- 哪些特征对我们的目标变量影响最大(离职率)?
- 哪些特征之间有很强的相关性?
- 我们能对这些特征做一个更深入的挖掘吗?
**总结:**
从热图上看,projectCount, averageMonthlyHours, and evaluation之间存在 **正相关(+)** 关系. 这可能意味着花更多时间和做更多项目的员工会得到高度评价。
从**负相关(-)** 关系上看, turnover 和 satisfaction 高度相关. 可以认为当人们不太满意的时候,他们更倾向于离开公司。