pandas缺失值处理

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()

官方文档

https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.dropna.html?highlight=dropna#pandas.DataFrame.dropna

默认参数

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

使用示例

  1. 删除有缺失值的行
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()

官方文档

https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.fillna.html?highlight=fillna#pandas.DataFrame.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. 使用常量填充所有的缺失值
    如:-1
data.fillna(-1)

在这里插入图片描述
2. 使用平均值等填充
如:用原数据集中所有非缺失值的平均值4填充

data.fillna(data.mean())

在这里插入图片描述
也可只填充单列
如:使用a列的填充值填充a列的缺失值

data.fillna({'a': data['a'].mean()})

在这里插入图片描述

  1. 使用字典填充缺失值
    a列的缺失值填充为-1, b列的缺失值填充为-2
data.fillna({'a': -1, 'b': -2})

在这里插入图片描述
4. 使用前一个非缺失值填充(默认axis=0)
在这里插入图片描述
5. 使用后一个非缺失值填充(默认axis=0)
在这里插入图片描述

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值