python缺失值

缺失值标记

使用python时,对缺失值的标记主要有3种:np.nan,None,pd.NA(注意大小写)。

pd.NA

pandas1.0以后的版本中引入了一个专门表示缺失值的标量pd.NA,它代表空整数、空布尔值、空字符。目标是提供一个缺失值指示器,可以在各种数据类型中一致使用(而不是np.nan、None或者NaT分情况使用),不会改变原有数据类型。

np.nan

用于数学或科学计算。

None

则更通用,表示缺少数据。

向pandas传入数据后,不论各列是什么数据类型,缺失值全被置为np.nan。
但是!!
若缺失值明确给出类型为pd.NA或None,则不会被置为np.nan。

df_result = pd.DataFrame([
    {'country': 'US', 'value': 100.00, 'id': 'a'},
    {'country': 'US', 'value': 95.00, 'id': 'b'},
    {'country': 'CA', 'value': 60.00, 'id': 'y'},
    {'country': 'CA', 'value': 60.00, 'id': 'z'},
    {'country': 'CA',  'id': 'z'},
    {'country': 'qq', 'value':None , 'id': 'z'},
    {'country': 'CA', 'value': pd.NA , 'id': 'z'},
    ])
df_result

在这里插入图片描述

缺失值判断

“==”或“is”

使用“==”或“is”进行判断的结果如下:
np.nan == np.nan,返回False;
np.nan is np.nan,返回True;

None == None,返回True;
None is None,返回True;

pd.NA == pd.NA,返回;
pd.NA is pd.NA,返回True;

np.isnan()

np.isnan 主要用于检测浮点数数组中的NaN(np.nan或None)值,不适用于其他数据类型。
注意!!
1.NumPy的是isnan()函数,NumPy没有isna()。
2.np.isnan()不能用于判断None类型。
3.而且没有df_result[‘value’][3].isnan()这种用法。
在这里插入图片描述

print(np.isnan(df_result['value'][3]))
print(np.isnan(df_result['value'][4]))
print(np.isnan(df_result['value'][6]))

在这里插入图片描述
np.isnan(np.nan)为True;np.isnan(None)报错;np.isnan(pd.NA)为 < NA > 。

pd.isna()或pd.isnull()

pd.isna()和pd.isnull()可对series和dataframe中的元素识别np.nan,但不能对某个元素进行判断,因为定位到元素时,是一个numpy对象,不再是pandas对象。
pd.isna(np.nan),pd.isna(None),pd.isna(pd.NA),均为True。
pd.isnull(np.nan),pd.isnull(None),pd.isnull(pd.NA),均为True。

参考文档

Pandas 缺失数据处理大全(附代码)
【NumPy】深入解析numpy中的isnan方法
4种检测Python缺失值的方法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值