1.删除
删除包含 NaN 的值
// An highlighted block
# 删除包含NaN值得任何行
pd.dropna(axis = 0);
// An highlighted block
# 删除包含NaN值得任何列
pd.dropna(axis = 1);
// An highlighted block
# 删除所有都是空值的行
pd.dropna(how='all');
假设只想保留包含一定数量的观察值,可以用thresh参数
// An highlighted block
# 删除有两个空值的行
pd.dropna(thresh =2 );
注意:
- .dropna() 方法不在原地地删除具有 NaN 值的行或列。
- 原始 DataFrame 不会改变。你始终可以在 dropna() 方法中将关键字inplace 设为 True,在原地删除目标行或列。
2.将NaN值替换为自定义的值
将通过前向填充 (ffill) 方法沿着给定 axis 使用上个已知值替换 NaN 值
// An highlighted block
返回的是一个新的对象,但你也可以修改已经存在的对象:
pd.fillna(0,inplace=True)
// An highlighted block
对第1,2列替换
pd.fillna({1:0.5,2:0})
// An highlighted block
pd['index'] = pd['index'].fillna(0)
3.使用前后的值填充
用前列填充
// An highlighted block
#用前面一列的值来填充NaN,限制前两行
pd.fillna(method = 'ffill',limit=2 )
用后列填充
// An highlighted block
#用后面一列的值来填充NaN
pd.fillna(method = 'backfill')
用后面一行填充
# 用后面一行的值来填充NaN
pd.fillna(method = 'backfill', axis = 1)
4.众数填充缺失值
// An highlighted block
pd['index']= pd['index'].fillna(pd['index'].mode()[0])
5.平均数填充缺失值
// An highlighted block
pd['index'] = pd['index'].fillna(pd['index'].mean())
fillna函数参数
参数 | 描述 |
---|---|
value | 标量值或字典型对象用于填充缺失值 |
method | 插值方法,如果没有其他参数,默认是‘ffill’ |
axis | 需要填充轴,默认axis=0 |
inplace | 修改被调用对象,而不是生成一个备份 |
limit | 用于前向或后向填充时最大的填充范围 |