math、numpy、pandas 的 NaN

一、 

#coding=utf8
import numpy as np
import math
print(type(np.nan))#<class 'float'>

print(type(math.nan))#<class 'float'>
print(np.nan is None)#False

print(math.nan is None)#False

print(np.nan == np.nan)#False

print(math.nan == math.nan)#False

print(np.nan is math.nan)#False

print(math.nan is np.nan)#False

print(np.nan is np.nan)#True

print(math.nan is math.nan)#True

print(np.isnan(np.nan))#True

print(math.isnan(np.nan))#True

print(np.isnan(math.nan))#True

print(math.isnan(math.nan))#True

二、np.isnan()和pd.isnull()何时使用

# 首先创建一个DataFrame:
bb = pd.DataFrame({'a':[0,1,2,np.nan]})
bb
 
>>>     a
    0	0.0
    1	1.0
    2	2.0
    3	NaN
 
# 先测试一下np.isnan()
np.isnan(bb)
>>>     a
    0	False
    1	False
    2	False
    3	True
# 值得一提的是,如果想获悉整个DataFrame有无空值,可以在此基础上这样做:
 
np.isnan(bb).all()
>>> a    False
    dtype: bool          # 这行是指返回值的dtype
 
# 再测试一下isnull()
pd.isnull(bb)
>>>     a
    0	False
    1	False
    2	False
    3	True

由上可见,其实np.isnan()和pd.isnull()都可以对不论是DataFrame、Python list还是仅仅一个数值进行空值检测。但一般在实际应用中,np.isnan()多用于单个值的检验,pd.isnull()用于对一个DataFrame或Series(整体)的检验。

此外,根据pandas官方文档和源代码,pandas提供的另一个函数pd.isna()与pd.isnull()完全一样。

上面提到的any()/all()函数,请见pandas文档:

https://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.all.html#pandas.DataFrame.all

https://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.any.html#pandas.DataFrame.any

其他与空值检测或删除相关的函数还有:notna()、fillna()、dropna()等等。实战中应灵活使用。
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值