天天看點

Pandas進階教程之:處理缺失資料

簡介

在資料進行中,pandas會将無法解析的資料或者缺失的資料使用nan來表示。雖然所有的資料都有了相應的表示,但是nan很明顯是無法進行數學運算的。

本文将會講解pandas對于nan資料的處理方法。

nan的例子

上面講到了缺失的資料會被表現為nan,我們來看一個具體的例子:

我們先來建構一個df:

上面df隻有acefh這幾個index,我們重新index一下資料:

資料缺失,就會産生很多nan。

為了檢測是否nan,可以使用isna()或者notna() 方法。

注意在python中none是相等的:

但是np.nan是不等的:

整數類型的缺失值

nan預設是float類型的,如果是整數類型,我們可以強制進行轉換:

datetimes 類型的缺失值

時間類型的缺失值使用nat來表示:

none 和 np.nan 的轉換

對于數字類型的,如果指派為none,那麼會轉換為相應的nan類型:

如果是對象類型,使用none指派,會保持原樣:

缺失值的計算

缺失值的數學計算還是缺失值:

但是在統計中會将nan當成0來對待。

如果是在cumsum或者cumprod中,預設是會跳過nan,如果不想統計nan,可以加上參數skipna=false

使用fillna填充nan資料

資料分析中,如果有nan資料,那麼需要對其進行處理,一種處理方法就是使用fillna來進行填充。

下面填充常量:

還可以指定填充方法,比如pad:

可以指定填充的行數:

fill方法統計:

方法名

描述

pad / ffill

向前填充

bfill / backfill

向後填充

可以使用pandasobject來填充:

上面操作等同于:

使用dropna删除包含na的資料

除了fillna來填充資料之外,還可以使用dropna删除包含na的資料。

插值interpolation

資料分析時候,為了資料的平穩,我們需要一些插值運算interpolate() ,使用起來很簡單:

插值函數還可以添加參數,指定插值的方法,比如按時間插值:

按index的float value進行插值:

除了插值series,還可以插值df:

interpolate還接收limit參數,可以指定插值的個數。

使用replace替換值

replace可以替換常量,也可以替換list:

可以替換df中特定的數值:

可以使用插值替換:

本文已收錄于 http://www.flydean.com/07-python-pandas-missingdata/ 最通俗的解讀,最深刻的幹貨,最簡潔的教程,衆多你不知道的小技巧等你來發現! 歡迎關注我的公衆号:「程式那些事」,懂技術,更懂你!