Kaggle數據分析實踐——優秀員工為何離職

R in Action前五章學習結束,並了解了dplyr和ggplot2兩個包的使用,便試著在Kaggle上下載數據進行實踐,檢驗學習效果。

本文介紹了關於優秀員工離職原因的數據分析,數據源來自Kaggle:

Human Resources Analytics | Kaggle

1. 分析目的

最優秀最有經驗的員工,其離職的主要原因是什麼

2. 理解數據

hr <- read.csv(file.choose(),stringsAsFactors = FALSE)str(hr)

導入數據後,先查看數據結構,包括以下變數:

  • satisfaction_level : 滿意度
  • last_evaluation : 績效評估
  • number_project : 完成項目數
  • average_montly_hours : 平均月度工作時間
  • time_spend_company : 服務年限
  • Work_accident : 是否有工傷
  • left : 是否離職
  • promotion_last_5years: 過去5年是否有升職
  • sales : 工作部門
  • salary:薪資水平
  • 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)

    可以觀察到滿意度的中位數為0.64,績效評估的中位數為0.72,完成項目的中位數是4個,平均月度工作時間為200個小時,服務年限的中位數是3年。

    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佔比相對較大

    但從離職人數來看,sales和technical的絕對值相對較大

    • 薪資水平越低,離職率越高

    基本上到這裡所有變數對離職的影響都分析了,但我仍好奇那些對公司滿意度高的優秀員工,究竟是哪種因素主要導致了其離職。於是我將滿意度大於0.7的優秀員工篩選出來,發現主要是錢少事多未升職。如果進一步分析的話,倒是可以看看滿意度是怎麼評估的,錢少事多未升職滿意度還較高,不知是什麼因素起了作用。

    5. 分析總結

    從相關性和對各個變數的分析來看,最優秀最有經驗的員工離職,主要原因有以下幾點:

    • 工作強度大:月度工作時長超過220小時,大約日工作時長為10小時以上
    • 工作能力強:績效評估越高,完成項目越多,工作經驗越多,離職的資本就越大,有更多的跳槽機會
    • 薪資水平低:擁有的能力和經驗和獲得的報酬不符
    • 未得到晉陞

    呼籲我們的Finance和HR同事們多多關注top performance的員工啊,對公司貢獻多,經驗豐富,能力強,如果沒有獲得合理的待遇和職業發展機會,也怪不得人家另謀高就。公司招新人的成本可比老員工大多了。。。印證了那句話,錢給少了,心委屈了


    推薦閱讀:

    用Python進行梯度提升演算法的參數調整
    大數據是回事么?(2016年最新大數據公司全局圖)
    哪些蘋果用戶還會購買下一代產品?讓機器學習帶你精準定位

    TAG:Kaggle | 数据分析 | 大数据 |