7.1 處理缺失值
Pandas中使用浮點值NaN(Nat a Number)來標(biāo)識缺失值。numpy的np.nan习绢,和Python內(nèi)建的None值并不是一回事,但使用二者為DataFrame對象賦值時,都會被pandas視作缺失值。
7.1.1 過濾缺失值
Series上使用dropna方法茎刚,會返回Series中所有非空數(shù)據(jù)及其索引值。處理DataFrame對象時dropna默認(rèn)會刪除所有包含缺失值的行撤逢。以下是處理DataFrame時的常見應(yīng)用情景膛锭。
- 刪除的對象只限于行中所有觀測值均缺失的行時,傳入 how='all' 蚊荣。
data.dropna(how='all')
- 針對列進(jìn)行過濾時初狰,轉(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 補(bǔ)全缺失值
除了過濾柴我,有時需要用fillna方法補(bǔ)全缺失值解寝±┤唬可以使用常數(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)