Kaggle數據分析實踐——優秀員工為何離職
R in Action前五章學習結束,並了解了dplyr和ggplot2兩個包的使用,便試著在Kaggle上下載數據進行實踐,檢驗學習效果。
本文介紹了關於優秀員工離職原因的數據分析,數據源來自Kaggle:
Human Resources Analytics | Kaggle1. 分析目的
最優秀最有經驗的員工,其離職的主要原因是什麼
2. 理解數據
hr <- read.csv(file.choose(),stringsAsFactors = FALSE)str(hr)
導入數據後,先查看數據結構,包括以下變數:
3. 處理數據
Kaggle下載下來的數據基本上都是比較乾淨的數據了,不需要太多的清洗工作,這裡只是為後續分析做個簡單的處理:
1) 變數重命名
hr<-rename(hr,satisfaction = satisfaction_level,evaluation = last_evaluation,project = number_project,monthlyhour = average_montly_hours,serviceyear = time_spend_company,accident = Work_accident,promotion = promotion_last_5years,dept=sales)
2) 增加新變數
由於salary是chr,在後續相關性分析中不能夠納入,所以先將salary轉換為數值格式的salary grade
hr$SG[hr$salary=="low"]<-1hr$SG[hr$salary=="medium"]<-2hr$SG[hr$salary=="high"]<-3
4. 分析數據
1) 初步探索
summary(hr)
2) 相關性分析
載入corrplot包進行變數之間的相關性分析。
hr_cor <- hr %>% select(satisfaction:promotion,SG)M <- cor(hr_cor)corrplot(M,method = "circle")
圓圈的大小代表了相關性的大小,圓圈的顏色代表了正相關還是負相關。
可以初步看出一般而言,離職原因是因為滿意度低,工資低,服務年限較長,月工作時間多,沒有晉陞機會。
3) 目標群體分析
這次分析的目標群體是最優秀最有經驗的員工,那麼首先需要把這些員工篩選出來。根據初步探索的結果,我們暫定最優秀最有經驗的員工標準為:
- 績效評估大於中位數
- 完成項目大於中位數
- 或服務年限大於中位數和平均數
hr_top<-filter(hr,hr$evaluation>0.72 & hr$project>4 | hr$serviceyear>=4)hr_top1<-hr_top %>% select(satisfaction:promotion,SG)M<-cor(hr_top1)corrplot(M,method = "circle")
這次的相關性結果和上次的有了一些變化,月度工作時長和完成項目的相關性變大,下面通過圖形來具體看一下每個變數和離職的關係。
4)變數分析
hr_top$dept<-factor(hr_top$dept)hr_top$salary<-factor(hr_top$salary)hr_top$left<-factor(hr_top$left)hr_top$promotion<-factor(hr_top$promotion)ggplot(data = hr_top,mapping = aes(x=satisfaction,fill=left))+ geom_histogram()ggplot(data = hr_top,mapping = aes(x=evaluation,fill=left))+ geom_histogram()ggplot(data = hr_top,mapping = aes(x=project,fill=left))+ geom_histogram()ggplot(data = hr_top,mapping = aes(x=monthlyhour,fill=left))+ geom_histogram()ggplot(data = hr_top,mapping = aes(x=serviceyear,fill=left))+ geom_histogram()ggplot(data = hr_top,mapping = aes(x=accident,fill=left))+ geom_histogram()ggplot(data = hr_top,mapping = aes(x=promotion,fill=left))+ geom_bar(position = "stack")ggplot(data = hr_top,mapping = aes(x=dept,fill=left))+ geom_bar(position = "fill")ggplot(data = hr_top,mapping = aes(x=dept,fill=left))+ geom_bar(position = "stack")ggplot(data = hr_top,mapping = aes(x=salary,fill=left))+ geom_bar(position = "dodge")
- 滿意度在0.1以下的,離職率將近100%;滿意度在0.8左右的,離職率將近50%
- 績效評估在0.75以上的,離職率在50%左右
- 完成項目數越多,離職率越高
- 月度工作220小時以上,工作時長越長,離職率越高
- 服務年限3-5年,離職率最高
- 在過去5年未得到升職的,離職率大約為33%
- 從部門離職率來看,各部門佔比差不多,HR和Technical佔比相對較大
- 薪資水平越低,離職率越高
5. 分析總結
從相關性和對各個變數的分析來看,最優秀最有經驗的員工離職,主要原因有以下幾點:
- 工作強度大:月度工作時長超過220小時,大約日工作時長為10小時以上
- 工作能力強:績效評估越高,完成項目越多,工作經驗越多,離職的資本就越大,有更多的跳槽機會
- 薪資水平低:擁有的能力和經驗和獲得的報酬不符
- 未得到晉陞
呼籲我們的Finance和HR同事們多多關注top performance的員工啊,對公司貢獻多,經驗豐富,能力強,如果沒有獲得合理的待遇和職業發展機會,也怪不得人家另謀高就。公司招新人的成本可比老員工大多了。。。印證了那句話,錢給少了,心委屈了
推薦閱讀:
※用Python進行梯度提升演算法的參數調整
※大數據是回事么?(2016年最新大數據公司全局圖)
※哪些蘋果用戶還會購買下一代產品?讓機器學習帶你精準定位