天天看點

pandas資料分析之缺失資料處理

轉眼國慶假期已經過去,實在不想投身工作啊。祖國母親,咱們再過個農曆生日可好,讓我們再為你慶生幾天。一想到2018年已無法定節假日,還是收拾心情,開始認真搬磚吧。

pandas資料分析之缺失資料處理

前言

原因

資料缺失在資料處理的過程中十分常見,其原因有很多,主要可以總結為三大類:

無意的:資訊被遺漏,例如資料采集過程的故障導緻資料缺失,例如記錄過程的缺失等。

有意的:有些資料集的特征描述中将缺失值作為特征值。

不存在:有些資料的特征屬性本身不存在。

類型

資料缺失的類型可以分為以下三類:

完全随機損失(missing completely at random,MCAR):資料的缺失完全是随機的,不依賴于任何不完全變量或完全變量。

随機缺失(missing at random,MAR):資料的缺失不是完全随機的,依賴于其他完全變量。

非随機缺失(missing not at random:MNAR):指的是資料的缺失依賴于不完全變量自身。

處理方式

缺失資料的處理方法包括:删除記錄、資料插補和不處理。

pandas資料分析之缺失資料處理

處理方法

pandas的設計目标之一就是讓缺失資料的處理任務盡量輕松,pandas使用浮點值NaN表示浮點和非浮點數組中的缺失資料。

pandas資料分析之缺失資料處理

生成資料集

pandas資料分析之缺失資料處理
pandas資料分析之缺失資料處理
pandas資料分析之缺失資料處理

删除記錄

pandas資料分析之缺失資料處理

使用pandas的dropna直接删除有缺失值的特征,該方法是根據各标簽中的值是否存在缺失資料對軸标簽進行過濾。

dropna預設删除任何含有缺失值得行:

pandas資料分析之缺失資料處理

傳入how='any'将隻丢棄全為NaN的行:

pandas資料分析之缺失資料處理

要用這種方式丢棄列,隻需傳入axis=1即可。

對于一個Series,dropna傳回一個僅含非空資料和索引值的Series。

pandas資料分析之缺失資料處理

判斷缺失情況

pandas資料分析之缺失資料處理

pandas采用isnull和notnull方法,傳回一個含有布爾值的對象,這些布爾值表示哪些值是缺失值。

pandas資料分析之缺失資料處理

獲得含有缺失資料的列采用如下方法:

pandas資料分析之缺失資料處理

說明a、b、c、d、e列均含有缺失值。

獲得全部為缺失資料的列的方法如下:

pandas資料分析之缺失資料處理

說明a、b、c、d、e列均不是全部為NA值的列。

pandas資料分析之缺失資料處理

填充缺失資料

pandas資料分析之缺失資料處理

       有時候,并不希望删除記錄,需要通過某種方法來填充缺失資料。fillna方法是最主要的函數。

其參數主要說明如下:

value:用于填充缺失值的标量值或字典對象

method : 插值方式(ffill或bfill),如果函數調用時未指定其他參數的話,預設為“ffill” 

        axis :待填充的軸,預設axis=0 

        inplace :修改調用者對象而不産生副本 

        limit :(對于前向和後向填充)可以連續填充的最大數量 

通過一個常數調用fillna将缺失值替換為那個常數值。例如将所有缺失值替換為0:

pandas資料分析之缺失資料處理

通過一個字典調用fillna,就可以實作對不同列填充不同的值。例如對a列填充常數1,對b列填充常數0.5:

pandas資料分析之缺失資料處理

方法ffill代表後向填充,limit代表填充的最大數量:

pandas資料分析之缺失資料處理

也可以采用均值、中位數或衆數插補:

pandas資料分析之缺失資料處理
pandas資料分析之缺失資料處理
pandas資料分析之缺失資料處理