目录
9.2 判断是否是 NaN还是 None,.isnull()、.notnull()、.isna()、
9.2.1 .isnull() 和 .notnull() 使用方法,不区分 NaN 和 None值
9.2.2 .isna() 和 .notna() 使用方法,也不区分 NaN 和 None 值
9.2.4 Pandas 模块为什么很多函数不区分 np.NaN 和 None 值?
9.5 统计数据量大时统计 NaN 的个数 .isnul().sum().sum()
9.6 统计数据量大时统计非 NaN 的个数 .count().sum()
9. 分清楚 None 和 NaN 值,处理好 NaN
9.1 分清楚 None 和 NaN 值
9.1.1 Python 中特殊的常量 None
None 和 False 不同,它不表示 0,也不表示空字符串,而表示没有值,也就是空值。
可以看到,它就是 None 类型,也是 None 对象。
可以用 is,not is,或者 == 去判断某个值是不是 None。
9.1.2 numpy 模块引入的特殊常量 NaN
首先,numpy 模块中有三个常量 np.NAN 、np.nan 、np.NaN,这三个常量其实是一个东西。后面我们就只说 np.NaN 即可。
np.NaN 可以解释为 not a number,不是一个数字,但是它的类型却是一个 float 类型!
所以可以看出,None 和 np.NaN 类型就不一样!但是在 Pandas 模块中,有些地方他们都被视作表示空值,处理起来的结果也是一样的。
9.2 判断是否是 NaN还是 None,.isnull()、.notnull()、.isna()、
.notna() 都无效
9.2.1 .isnull() 和 .notnull() 使用方法,不区分 NaN 和 None值
.isnull() 和 .notnull() 是一对判断对象是不是丢失数据的函数,但是可惜的是它们不区分 NaN 和 None 值,对这两者的操作结果是一样的。
Help on function isna in module pandas.core.dtypes.missing: isna(obj) Detect missing values for an array-like object. This function takes a scalar or array-like object and indicates whether values are missing (``NaN`` in numeric arrays, ``None`` or ``NaN`` in object arrays, ``NaT`` in datetimelike). Parameters ---------- obj : scalar or array-like Object to check for null or missing values.
9.2.2 .isna() 和 .notna() 使用方法,也不区分 NaN 和 None 值
.isna() 和 .notna() 也是一对判断对象是不是丢失数据的函数,但是可惜的是它们不区分 NaN 和 None 值,对这两者的操作结果也是一样的。这对函数看起来和 .isnull() 和 .notnull() 用途是一样的。
Help on function isna in module pandas.core.dtypes.missing: isna(obj) Detect missing values for an array-like object. This function takes a scalar or array-like object and indicates whether values are missing (``NaN`` in numeric arrays, ``None`` or ``NaN`` in object arrays, ``NaT`` in datetimelike). Parameters ---------- obj : scalar or array-like Object to check for null or missing values. Returns ------- bool or array-like of bool For scalar input, returns a scalar boolean. For array input, returns an array of boolean indicating whether each corresponding element is missing.
9.2.3 区分 np.NaN 和 None 值
区分 np.NaN 和 None 值,只能依靠 is,not 命令和 == 了。