2月19日,行政院主計處公佈了109年受僱員工的平均月薪為5萬4320元,換算成年薪就是65萬1840元。此數字相較於108年,增加了1.24%。不過,總有人在抱怨:「拼死拼活了一整年,薪水也只漲了這麼一點點。公司賺了那麼多錢,員工只分得到皮毛而已啦!」事實真的是如此嗎?口說無憑,用Pandas來分析一下就知道了。
此處,我們將以台灣上市公司的資料為例,來找出以上問題的解答。相關的資料集可以透過公開資訊觀測站來下載。小編已將資料集放到Github,執行以下程式即可讀入資料。同時,我們檢視一下該資料集存有哪些欄位:
其中,「同業公司平均每股盈餘(元/股)」之後的欄位沒什麼用,故此處我們使用iloc屬性來根據位置數字取出前9個欄位的資料,並存成data變數:
為了方便後續的處理,可以先利用rename()來修改欄位名稱,如下所示:
小編在檢視原始資料集後發現,特定欄位的資料會參雜逗點,例如「1000」會表示為「1,000」。這使得我們無法對相關欄位進行數值運算,因為Pandas會將其中的資料視為字串。為了解決這個問題,直接用str.replace將逗點替換成空字串即可。在處理完相關欄位後,別忘了透過assign()將清理過的資料取代原有資料。
如何能夠知道一家上市公司賺不賺錢呢?很簡單,透過其公佈的EPS(已存在EPS欄位)就可一探究竟。我們可以利用nlargest()並搭配相關參數,來找出EPS最高的100家公司。接著,將這100家公司的名稱另外存成eps_name變數,以利稍後的分析工作。
另外,員工的平均薪資已經存在Avg_salary欄位中。因此,我們對該欄位進行同樣的操作,找出平均薪資最高的前100家公司,並把這些公司的名稱存成salary_name變數。
接著,就可以嘗試找出這兩個變數內資料的交集,再把輸出結果轉回Series的形式。從輸出結果可見,僅有27家公司同時是最賺錢,而且平均薪資也是最高的:
這樣看或許不太準,那不如就用視覺化圖表來分析看看。為了找出兩個連續欄位間的相關性,散佈圖會是一個不錯的選擇。在以下程式中,我們將散佈圖的x軸設為Avg_salary欄位,y軸則設為EPS欄位,並觀察這兩個數值欄位間的關係。
從輸出圖中,我們似乎無法明確地判斷這兩個欄位是否相關。若想得到更直觀的結果,可以查看兩個欄位之間的皮爾遜相關性(Pearson correlation)。皮爾遜相關係數介於-1和1之間,數值越接近1,也就代表正相關性越高。
由於這兩個欄位間的皮爾遜相關係數僅為0.196左右,表示相關性並不高。換言之,就算公司賺錢,員工的平均薪資並不必然越高(當然也不會越低啦)。不過,大家也不必感到灰心,只要持續努力,累積自己的實力,相信就有越多談薪(或跳槽)的空間。以上程式已放到Colab筆記本中,有興趣的讀者可以跑跑看。
若想精進自己的資料分析功力,歡迎參考旗標出版的《Python資料分析必備套件!Pandas資料清理、重塑、過濾、視覺化》一書。全書涵蓋了 Pandas 資料分析的 114 技,保證您學好學滿!現正與《NumPy 高速運算徹底解說》合購75折優惠中,兩個Python熱門套件,幫您一次搞定!