【数据处理】【数据清洗】【7.1 处理缺失值】 2021-06-20

7.1 处理缺失值

Pandas中使用浮点值NaN(Nat a Number)来标识缺失值。numpy的np.nan,和Python内建的None值并不是一回事,但使用二者为DataFrame对象赋值时,都会被pandas视作缺失值。


image.png

7.1.1 过滤缺失值

Series上使用dropna方法,会返回Series中所有非空数据及其索引值。处理DataFrame对象时dropna默认会删除所有包含缺失值的行。以下是处理DataFrame时的常见应用情景。

  1. 删除的对象只限于行中所有观测值均缺失的行时,传入 how='all' 。
data.dropna(how='all')
  1. 针对列进行过滤时,转入参数 axis=1 。
  2. 如果想保留包含一定数量观测值的行,使用thresh参数。下例为,如果一行内有两个以上的观测值,则保留此行。
data.dropna(thresh=2)
  1. 如果想用DataFrame某列中的缺失值来过滤行的话,使用subset参数(参数值为列表类型)。
data.dropna(subset=[0]) 

7.1.2 补全缺失值

除了过滤,有时需要用fillna方法补全缺失值。可以使用常数,字典作为填充值,或采取插值的方法。

  1. 填充常数0
data.fillna(0) 
  1. 第2列填充常数0, 第3列填充常数0.5
data.fillna({1:0, 2:0.5})
  1. 自动插入前一列的值(向前填充),并且最多填充2行

data.fillna(method='ffill', limit=2)
  1. 填充后不返回新对象,修改已存在对象
data.fillna(0,inplace=True) 

你可能感兴趣的:(【数据处理】【数据清洗】【7.1 处理缺失值】 2021-06-20)