data = pd.DataFrame([[np.nan, 2, 3, 'a'],
[4, np.nan, 6, 'b'],
[7, 8, np.nan, 'c'],
[1, 2, 3, 'd']],
columns=list('abcd'))
1. 删除 dopna()
官方文档
默认参数
DataFrame.dropna(axis=0, how='any', thresh=None, subset=None, inplace=False)
参数解释
axis:轴 取值:0或1
axis=0,一行一行删(默认)
axis=1,一列一列删
how:删除规则 取值:any或all
any:如果存在任何NA值,则删除该行或列
all:如果所有值均为NA,则删除该行或列
thresh:保留至少含有n个非na数值的行
subset:在哪些列中删除缺失值
inplace:是否在原数据集上操作 取值:True或False
使用示例
- 删除有缺失值的行
data.dropna()
# 相当于:data.dropna(axis=0, how='any', thresh=None, subset=None, inplace=False)
2. 删除全是缺失值的行
data.dropna(how='all')
3. 删除有缺失值的列
data.dropna(axis=1)
4. 删除a,b两列中包含缺失值的行
data.dropna(subset=['a', 'b'])
2. 填充 fillna()
官方文档
默认参数
DataFrame.fillna(value=None, method=None, axis=None, inplace=False, limit=None, downcast=None)
参数解释
value:填充内容类型 取值:常量, dict, Series, or DataFrame
method:填充方式 取值:backfill, bfill, pad, ffill, None,默认 None
pad/ffill:用前一个非缺失值填充
backfill/bfill:用下一个非缺失值填充
None:指定值
axis 轴 取值:0或1
inplace:是否在原数据集上操作 取值:True或False
使用示例
- 使用常量填充所有的缺失值
如:-1
data.fillna(-1)
2. 使用平均值等填充
如:用原数据集中所有非缺失值的平均值4填充
data.fillna(data.mean())
也可只填充单列
如:使用a列的填充值填充a列的缺失值
data.fillna({'a': data['a'].mean()})
- 使用字典填充缺失值
a列的缺失值填充为-1, b列的缺失值填充为-2
data.fillna({'a': -1, 'b': -2})
4. 使用前一个非缺失值填充(默认axis=0)
5. 使用后一个非缺失值填充(默认axis=0)