05.24 「乾貨教程」Pandas處理異常數據「推薦」

01

系列回顧

以上4篇總結了Pandas主要的兩個數據結構:

Series(一維)和DataFrame(二維),系統地介紹了創建,索引,增刪改查Series, DataFrame等常用操作接口,總結了Series如何裝載到DataFrame中,以及一個實際應用多個DataFrame的實戰項目例子。總結了多層索引,Pivot操作,sort操作等值得推薦的是,Pandas廣泛應用在金融,統計,社會科學,和許多工程領域。Pandas和R語言直接無縫銜接。Pandas是基於Numpy(Numpy基於Python)基礎開發,因此能和帶有第三方庫的科學計算環境很好地進行集成。

02

處理Missing data

missing data,缺失數據,在數據系統中是比較常見的一個問題,而pandas的設計目標就是讓missing data的處理工作儘量輕鬆。

pandas使用浮點NaN表示浮點和非浮點數組中的缺失數據,它沒有什麼具體意義,只是一個便於被檢測出來的標記而已,pandas對象上的所有描述統計都排除了缺失數據。

下面看下關於missing data處理常用的幾個API。

isnull 返回一個含有布爾的對象,這些布爾表示哪些是缺失

notnull isnull 的否定式

dropna 根據各標籤中是否存在缺失數據對軸標籤進行過濾,返回不為NaN的值,具體裡面的參數包括:

DataFrame.dropna(axis=0, how='any', thresh=None, subset=None, inplace=False)

fillna 用指定值填充NaN值, DataFrame.fillna(value=None, method=None, axis=None, inplace=False, limit=None, downcast=None, **kwargs)

其中,method : {‘backfill’, ‘bfill’, ‘pad’, ‘ffill’, None}, default None

axis : {0 or ‘index’, 1 or ‘columns’}

舉例說明如何使用,假如有如下一張表 pd_data

「乾貨教程」Pandas處理異常數據「推薦」

調用pd_data.isnull(),返回所有元素是否為null的布爾結果:

「乾貨教程」Pandas處理異常數據「推薦」

調用 pd_data.dropna(),默認值下,axis=0 , how=any,也就是隻要每行中有一個元素為NaN,則直接過濾掉此行,返回的結果如下所示:

「乾貨教程」Pandas處理異常數據「推薦」

調用pd_data.fillna(),採用標量值填充,則所有的NaN值都取為1.0,

pd_data4.fillna(1)

採用字典值填充,對應的列取對應字典中的填充值:

pd_data4.fillna({'name':'none','score':60,'rank':'none'})

再說method關鍵詞填充效果,當method設置為 ffill時,填充效果如下所示,取上一個有效值填充到下面行,

原有NaN的表格:

「乾貨教程」Pandas處理異常數據「推薦」

執行如下:

pd_data.fillna(method='ffill')

執行如下:

pd_data.fillna(method='backfill')

04

concatenate操作

concatenate是連接兩個及以上的DataFrame的操作,一個簡單的concatenate例子,給定兩個DataFrame,concatenate它們,

df1 = pd.DataFrame({'A': ['A0', 'A1', 'A2', 'A3'], 'B': ['B0', 'B1', 'B2', 'B3'], 'C': ['C0', 'C1', 'C2', 'C3'], 'D': ['D0', 'D1', 'D2', 'D3']}, index=[0, 1, 2, 3])df2 = pd.DataFrame({'A': ['A4', 'A5', 'A6', 'A7'], 'B': ['B4', 'B5', 'B6', 'B7'], 'C': ['C4', 'C5', 'C6', 'C7'], 'D': ['D4', 'D5', 'D6', 'D7']}, index=[4, 5, 6, 7])result = pd.concat( [df1,df2] )df1:

「乾貨教程」Pandas處理異常數據「推薦」

df2:

「乾貨教程」Pandas處理異常數據「推薦」

合併後:

「乾貨教程」Pandas處理異常數據「推薦」

默認axis=0,即沿著行方面連接,如果axis設置為1,會沿列方向擴展,行數為兩者間行數的較大者,較小的用NaN填充。

「乾貨教程」Pandas處理異常數據「推薦」

concatenate還可以創建帶層級的索引,關於這部分暫不展開介紹。

以上總結了DataFrame在處理空缺值的常用操作,及連接多個DataFrame的concat操作。

「乾貨教程」Pandas處理異常數據「推薦」

「乾貨教程」Pandas處理異常數據「推薦」

「乾貨教程」Pandas處理異常數據「推薦」

「乾貨教程」Pandas處理異常數據「推薦」


分享到:


相關文章: