Pandas 缺失值检测:isnull、isna、notnull、notna
isnull()
、isna()
、notnull()
和 notna()
是在数据处理中常用的方法,尤其是在处理 Pandas 数据库时,它们主要用于快速定位和识别缺失值(NaN)。
一、基础
这4个函数均为Pandas的布尔检测方法,返回与原始数据形状相同的布尔值对象(True / False):
isnull()
与isna()
:检测缺失值,返回True表示对应位置为缺失值。
notnull()
与notna()
:检测非缺失值,返回True表示对应位置有有效数据。
二、详解
-
isnull()
和isna()
-
功能:二者功能完全一致,
isna()
是isnull()
的别名,都用于检测数据中的缺失值。如果某个位置是缺失值(NaN),返回True
;否则返回False
。
- 返回值:返回一个与原数据形状相同的布尔型数据结构(如布尔型 DataFrame 或布尔型 Series),其中每个元素表示对应位置是否为缺失值。
-
检测范围:识别NaN、None、NaT(时间缺失值)
import pandas as pd import numpy as np df = pd.DataFrame({ 'A': [1, np.nan, 3], 'B': [4, 5, np.nan] }) print(df.isnull()) # 或 df.isna()
输出:
A B 0 False False 1 True False 2 False True
-
功能:二者功能完全一致,
np.nan
是 Python 中表示“非数字”(Not a Number)的特殊浮点数值,通常用于表示缺失或未定义的数据。它属于 NumPy 库的一部分,因此在使用时需要导入 NumPy 库,或者在引用时加上 np. 前缀,其中 np 通常是 NumPy 库的别名。
print(df)
输出
A B
0 1.0 4.0
1 NaN 5.0
2 3.0 NaN
-
notnull()
和notna()
-
功能:功能相同,二者互为别名,用于检测数据中非缺失值。如果某个位置是非缺失值,返回
True
;否则返回False
。 -
返回值:返回一个与原数据形状相同的布尔型数据结构,其中每个元素表示对应位置是否为非缺失值。
输出:print(df.notnull()) # 或 df.notna()
A B 0 True True 1 False True 2 True False
-
功能:功能相同,二者互为别名,用于检测数据中非缺失值。如果某个位置是非缺失值,返回
三、对比
函数对 | 关系 | 使用场景 |
---|---|---|
isnull() vs isna()
|
完全等价 | 根据习惯选择(R用户倾向isna() ) |
notnull() vs notna()
|
完全等价 | 同上 |
isnull() vs notnull()
|
结果互为取反 | 根据逻辑需求选择正向或反向检测 |
四、常见问题解答
Q1:为什么需要两对功能相同的函数?
A1:为兼容不同编程习惯。isnull()
的命名来源于 SQL 中的 IS NULL 语法;isna()
的命名是为了与 R 语言中的 is.na() 函数保持一致。
Pandas 官方文档明确指出:二者是同一函数的两个名称,功能完全相同。
Q2:如何检测非数值型缺失值(如字符串)?
A2:Pandas中字符串列通常用None表示缺失,isnull()可直接检测。但需注意,np.nan在字符串列中会被自动转换为None。
Q3:这些函数能检测自定义缺失标识吗?
A3:不能直接识别(如用-999表示缺失)。需先用replace()替换为NaN,再使用这些函数检测。
五、总结
-
isnull()
和isna()
:功能完全相同,都用于检测缺失值,返回布尔值,表示每个位置是否为缺失值。 -
notnull()
和notna()
:功能完全相同,都用于检测非缺失值,返回布尔值,表示每个位置是否为非缺失值。
上一篇: 几秒钟就充满电!科学
下一篇: 暂无数据