pandas(資料框部分03)
上一期我們使用pandas模組實現觀測的篩選、變數的重新命名、資料型別的變換、排序、重複觀測的刪除、和資料集的抽樣,這期我們繼續介紹pandas模組的其他新知識點。包括頻數統計、缺失值處理、資料對映、資料彙總。
一、頻數統計
我們以被調查使用者的收入資料為例,來談談頻數統計函式value_counts。
頻數統計,顧名思義就是統計某個離散變數各水平的頻次。
這裡統計的是性別男女的人數,是一個絕對值,如果想進一步檢視男女的百分比例,可以通過下面的方式實現:
而在R語言中,table函式就是起到頻數統計的作用,另外還提供了更加靈活的prop.table函式,可以直接求出比例。
如上是單變數的頻數統計,如果需要統計兩個離散變數的交叉統計表
R語言的話,任然使用table函式即可。
二、缺失值處理
在資料分析或建模過程中,我們希望資料集是乾淨的,沒有缺失、異常之類,但面臨的實際情況確實資料集很髒,例如對於缺失值我們該如何解決?一般情況,缺失值可以通過刪除或替補的方式來處理。首先是要監控每個變數是否存在缺失,缺失的比例如何?這裡我們藉助於pandas模組中的isnull函式、dropna函式和fillna函式。
首先,我們手工編造一個含缺失值的資料框:
其次,使用isnull函式檢查資料集的缺失情況:
最後,對缺失資料進行處理:
刪除法
dropna函式,有兩種刪除模式
由於df資料集不存在行全為缺失的觀測,故沒有實現刪除。
替補法
fillna函式提供前向替補、後向替補和函式替補的幾種方法,具體可參見下面的程式碼示例:
再來看看R語言是如何重現上面的操作的:
不幸的是,R中沒有刪除每行元素都是缺失的觀測,我們自定義個函式也可以實現:
關於缺失值的替補,在R語言中可以使用Hmisc包中的impute函式,具體操作如下:
三、資料對映
大家都知道,Python和R在做迴圈時,效率還是很低的,如何避開迴圈達到相同的效果呢?這就是接下來我們要研究的對映函式apply。該函式的目的就是將使用者指定的函式運用到資料集的縱軸即各個變數或橫軸即各個行。
例如以上面的統計資料集df各行和各列是否存在缺失為例,原先是這樣的:
現在通過對映函式可以這樣簡介而快速的實現:
再如,需要計算每個學生的總成績,或各科的平均分,也可以用apply函式實現:
在R語言中,實現上述對映操作的函式有很多,這裡就以sapply和apply兩個函式為例:
如圖所示,如果需要統計資料集每行的某個值,需要先將數值型的資料框轉化為矩陣,然後基於矩陣使用apply函式。
四、資料彙總
如果你想要做類似SQL中的聚合操作,pandas也提供了實現該功能的函式,即groupby函式與aggregate函式的搭配使用,我們以上面的收入資料集為例作為演示:
以上結果,預設會對所有數值型變數作性別的均值統計。
學會使用Python的pandas模組對資料進行聚合了,那接下來看看R語言又是如何實現的:
R語言的實現資料的聚合操作需要下載dplyr包,並結合group_by函式和summarize函式。
今天我們的內容就介紹到這邊,歡迎大家拍磚。下期我們來聊聊pandas模組的資料框DataFrame第四部分。主要涉及多個數據集之間的合併和連線、啞變數生成和連續數值的區間化操作。
每天進步一點點2015
學習與分享,取長補短,關注小號!
長按識別二維碼馬上關注