(10)Python初入坑之pandas案例分析二
本節需要做pandas的第二個案例分析~這次我們用到了一份關於人力資源的分析數據。
這次我們非常順利的把HR.csv文件導入了python~撒花~
使用head() 查看前五行。再使用tail() 查看後五行。
這個文件有14998行,9列。查看columns可以得知,分別有滿意度,平均月工作時長,每天在公司的時長,工作事故次數,5年內晉陞次數,工作類型,工資高中低類別等。
對於這份數據的分析,我們只需要取其中一部分列用做分析,其他不用,我們可以選取一部分數據。
這些columns都太長了,不管是書寫還是查看都不方便,我們可以替換列索引名稱。
先定義一個dict,然後再根據索引值替換。
以上代碼的用法是,先定義一個字典,將原有的列索引作為key,新的索引定義為value,再使用lambda函數,每一個x替換成dic.get(x)的對應數據,再map到data.columns,覆蓋之前的索引。這樣就可以使用新的索引了。
現在我們想看看工作類型都有哪些,那麼讓類型這一列返回唯一值即可。使用unique()。
那麼如果我想知道每一種工作類型都分別有多少人呢?那先分組,再計算每個小組的人數即可,先使用groupby,再使用size() 進行計數即可。
我們現在想看一下,高中低三種工資裡面,不同工資類型的每個月的工作時長的均值。可以看出首先就需要用工資和類別兩列進行分組,形成層次化索引,以此為索引展現月工作時長,然後再對不同的小組求均值。那就先用groupby,再使用mean。
返回是一個層次化的Series,我們可以把內層的高中低放到列上面去,形成dataframe。使用unstack() 。
我們可以看到,許多工種的高工資的工作時長,比低工資的工作時長少。所以,麻煩大家努努力,好好學習。
然後視頻里就莫名其妙的說利用matplotlib包,把結果畫出來,因為matplotlib的課程還在這個案例之後。。。。。。好吧,就當提前預習了吧~來,我們繼續跟著課程走~
使用 %matplotlib inline 這是一個魔術命令,這個命令的意思就是,以後畫出的圖像,就直接在下方顯示出來。
這是我看別人的博客的截圖,裡面講到如果不使用上述魔法函數,則每次畫一張圖都要使用show()函數,就很煩。所以直接使用內嵌畫圖,命令形成,則直接生成圖片。
對於上面那個表格,我們可以以工種為橫坐標,數據為列坐標,高中低三個類別則形成三個柱子放在一起,形成一個柱狀圖。柱狀圖使用bar() 函數。
rot=60的意思就是橫坐標軸的標籤,60為傾斜60度,這樣方便閱讀。。我們可以看看不設置rot的樣子。
那能不能讓高中低三種工資呈現在一個柱子里呢?也就是形成堆積圖的形式。添加參數stacked=True 即可。
因為三種工資的工作用時對比不明顯,所以用堆積圖不太顯著。
如果我們現在想要工資,工種進行分組,查看不同工種的滿意度,但是想要知道滿意度最高的前五位。我們可以先使用groupby進行分組,然後定義一個函數apply到各個小組裡面去。
以上代碼什麼意思呢?定義一個函數def,對於一個名字叫group的數據(叫group比較好區分,叫數據A,B啥的都可以,只是把函數應用到這個數據上而已),對於group數據,的manyidu這一列,進行降序排序,並返回前五位。
那如果我們現在又要取滿意度的均值,並且用圖形表示出來,那如何操作呢?
直接使用plot則是畫折線圖。(為什麼不顯示x軸的坐標呢?)
現在我們對滿意度進行分組,分成4個小組,看下各個區間的數量有多少。
我們可以根據滿意度的這個劃分區間,在groupby之後進行size() 計數,這樣就能知道分組之後,滿意度在這幾個區間內的數分別有多少。
現在我們想知道,根據工資和工作類型分組之後,月工作時長和滿意度是否相關。那同樣,我們可以先設定函數,返回月工作時長和滿意度之間的相關關係。再把相關關係返回給分好組的工資和工作類型即可。
推薦閱讀:
※Seaborn(sns)官方文檔學習筆記(第六章 繪製數據網格)
※Matplotlib中的arrow
※Matplotlib中簡單的幾何形狀
TAG:pandas包 | 數據分析 | Matplotlib |