瓜皮的 `np.nan`

引入

数学上有个 $\infty$ 的定义,若计算机来表示的话那就是一个接近浮点数表示的极限的数了;

对应的在数据处理中也有个缺失值的定义,计算机中同样用浮点数进行表示。

numpy中的缺失值np.nan

对应到numpy里面,用np.nan来表示。

np.nan的类型是float类型

>>> import numpy as np
>>> np.nan
nan
>>> type(np.nan)
<class 'float'>
>>>

float类型在运算上往往有各种坑 🕳

np.nan的坑

  • np.nan == np.nan
>>> np.nan == np.nan
False

浮点数比较问题

  • np.nan is np.nan

通过内存地址比较,如果提前将 np.nan 赋值给某变量,结果可能不等 应用场景在 pd.DataFrame出现过

  • np.isnan(np.nan)

先将 np.nan 赋值给某变量,结果也可能不等 应用场景在 pd.DataFrame 内出现过

解决方法

原因不明,不过可以通过 pandaspd.isnapd.isnull 解决。