math、numpy、pandas 的 NaN

倾然丶 夕夏残阳落幕 提交于 2020-01-30 12:06:01

参考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()等等。实战中应灵活使用。

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!