在处理数据时NAN值是非常常见的,但是NaN值你真的了解吗?
下面让楓尘君带大家了解一下这个神奇的NAN
在csv表格中长这样:
在python里展示为这样:
我们创建这个值时是这样:
import numpy as np
np.nan
但是想判断是否是np.nan还真是有点难度:
a=np.nan
print(a==np.nan)
结果是False
print(a.equal(np.nan))
报错:AttributeError: 'float' object has no attribute 'equal'
print(a=="NaN")
False
print(a==float('NaN'))
False
print(str(a)=='NaN')
False
查看类型:
print(type(a))
结果:<class ‘numpy.float64’>
在参考链接1之后,终于判断成功
from math import isnan
print(isnan(a))
结果为True
举一反三,所以我发现,一下判断也成立:
print(str(a)=='nan')
True
print(np.math.isnan(a))
True
print(np.isnan(a))
True
当楓尘君兴致勃勃,手舞足蹈的使用np.math.isnan(a)进行判断时,竟然:
又试了np.isnan(a),还是报错:
发现只有,number类型(int float)才能用np.math.isnan和math.isnan。
wtf,我数据80%都是String,这怎么判断呢,正当我一筹莫展时,我发现了链接2
可以用pandas库来检验:
import pandas as pd
pd.isnull(np.nan)
#此时一样输出为True
#同样的pd.notnull()用来判断不为nan值
验证一下:
完美通过,别说这NaN还真是挺让人头痛,希望看了这篇博客的人能避免此类小错误,楓尘君可是折腾了宝贵的两个小时呢!!!