7.1 處理缺失值
Pandas中使用浮點值NaN(Nat a Number)來標識缺失值。numpy的np.nan,和Python內(nèi)建的None值并不是一回事,但使用二者為DataFrame對象賦值時,都會被pandas視作缺失值。

image.png
7.1.1 過濾缺失值
Series上使用dropna方法,會返回Series中所有非空數(shù)據(jù)及其索引值。處理DataFrame對象時dropna默認會刪除所有包含缺失值的行。以下是處理DataFrame時的常見應(yīng)用情景。
- 刪除的對象只限于行中所有觀測值均缺失的行時,傳入 how='all' 。
data.dropna(how='all')
- 針對列進行過濾時,轉(zhuǎn)入?yún)?shù) axis=1 。
- 如果想保留包含一定數(shù)量觀測值的行,使用thresh參數(shù)。下例為,如果一行內(nèi)有兩個以上的觀測值,則保留此行。
data.dropna(thresh=2)
- 如果想用DataFrame某列中的缺失值來過濾行的話,使用subset參數(shù)(參數(shù)值為列表類型)。
data.dropna(subset=[0])
7.1.2 補全缺失值
除了過濾,有時需要用fillna方法補全缺失值??梢允褂贸?shù),字典作為填充值,或采取插值的方法。
- 填充常數(shù)0
data.fillna(0)
- 第2列填充常數(shù)0, 第3列填充常數(shù)0.5
data.fillna({1:0, 2:0.5})
-
自動插入前一列的值(向前填充),并且最多填充2行
data.fillna(method='ffill', limit=2)
- 填充后不返回新對象,修改已存在對象
data.fillna(0,inplace=True)