【Python数据科学手册】Pandas——五、处理缺失值

五、处理缺失值

涉及的缺失值主要有三种形式: null、 NaN 或 NA。

1.选择处理缺失值的方法

数据表或 DataFrame 中有很多识别缺失值的方法。一般情况下可以分为两种:一种方法是通过一个覆盖全局的掩码表示缺失值,另一种方法是用一个标签值(sentinel value)表示缺失值。

2.Pandas的缺失值

Pandas 最终选择用标签方法表示缺失值,包括两种 Python 原有的缺失值:浮点数据类型的 NaN 值,以及 Python 的 None 对象。

1).None: Python对象类型的缺失值

它是一个 Python 单体对象,不能作为任何 NumPy / Pandas 数组类型的缺失值,只能用于 ‘object’ 数组类型(即由 Python 对象构成的数组)
在这里插入图片描述
这种类型比其他原生类型数组要消耗更多的资源.
使用 Python 对象构成的数组就意味着如果你对一个包含 None 的数组进行累计操作,如sum() 或者 min(),那么通常会出现类型错误

2).NaN: 数值类型的缺失值

缺失值的标签是 NaN(全称 Not a Number, 不是一个数字),是一种按照 IEEE 浮点数标准设计、在任何系统中都兼容的特殊浮点数
在这里插入图片描述
可以把 NaN 看作是一个数据类病毒——它会将与它接触过的数据同化
在这里插入图片描述
累计操作的结果定义是合理的(即不会抛出异常),但是并非总是有效的
在这里插入图片描述
NumPy 也提供了一些特殊的累计函数,它们可以忽略缺失值的影响
在这里插入图片描述

3).Pandas中NaN与None的差异

Pandas 把它们看成是可以等价交换的,在适当的时候会将两者进行替换
在这里插入图片描述
Pandas 会将没有标签值的数据类型自动转换为 NA。将整型数组的缺失值强制转换为浮点数,Pandas 还会自动将 None 转换为NaN。
在这里插入图片描述

  • Pandas对不同类型缺失值的转换规则
类型缺失值转换规则NA标签值
floating 浮点型无变化np.nan
object 对象类型无变化None 或 np.nan
integer 整数类型强制转换为float64 np.nan
boolean 布尔类型强制转换为object None 或 np.nan

Pandas 中字符串类型的数据通常是用 object 类型存储的

3.处理缺失值

1). 发现缺失值 isnull() 和 notnull()

返回布尔类型的掩码数据,
在这里插入图片描述布尔类型掩码数组可以直接作为 Series 或 DataFrame 的索引使用
在这里插入图片描述

2). 剔除缺失值 dropna()

dropna(axis=0, how='any', thresh=None, subset=None, inplace=False)

在这里插入图片描述
DataFrame要么剔除缺失值所在的整行,要么是整列, 使用它们时需要设置一些参数
默认剔除缺失值所在的行,剔除列需要特别指定 axis=1(或 axis=‘columns’)
在这里插入图片描述
剔除所有值都是空值的行或者列需要指定how=‘all’
在这里插入图片描述
thresh 参数设置行或列中非缺失值的最小数量
在这里插入图片描述

3). 填充缺失值fillna()

fillna(value=None, method=None, axis=None, inplace=False, limit=None, downcast=None, **kwargs)
在这里插入图片描述
DataFrame 的操作方法与 Series 类似,只是在填充时需要设置坐标轴参数 axis
在这里插入图片描述
前覆盖或后覆盖时,原来是缺失值的仍旧是缺失值

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值