【Pandas】pandas DataFrame isna
Pandas2.2 DataFrame
Missing data handling
方法 | 描述 |
---|---|
DataFrame.fillna([value, method, axis, …]) | 用于填充 DataFrame 中的缺失值(NaN) |
DataFrame.backfill(*[, axis, inplace, …]) | 用于**使用后向填充(即“下一个有效观测值”)来填补缺失值(NaN)**的方法 |
DataFrame.bfill(*[, axis, inplace, limit, …]) | 用于**使用后向填充(即“下一个有效观测值”)来填补缺失值(NaN)**的方法 |
DataFrame.dropna(*[, axis, how, thresh, …]) | 用于删除包含缺失值(NaN)的行或列的方法 |
DataFrame.ffill(*[, axis, inplace, limit, …]) | 用于**使用前向填充(即“前一个有效观测值”)来填补缺失值(NaN)**的方法 |
DataFrame.interpolate([method, axis, limit, …]) | 用于对缺失值(NaN)进行插值填充的方法 |
DataFrame.isna() | 用于检测 DataFrame 中缺失值(NaN)的位置的方法 |
pandas.DataFrame.isna()
pandas.DataFrame.isna()
是一个用于检测 DataFrame 中缺失值(NaN)的位置的方法。它返回一个新的布尔型 DataFrame
,其中每个元素表示对应位置的值是否为 NaN
。
📌 方法签名
DataFrame.isna()
✅ 返回值
- 返回一个与原
DataFrame
形状相同的布尔型DataFrame
; - 若某个位置是
NaN
,则对应位置为True
; - 否则为
False
。
该方法不会修改原始数据。
❌ 注意事项
isna()
不支持参数;- 它仅用于检测
NaN
,不识别None
或其他空值(如空字符串、0 等); - 可以结合
isnull()
使用(二者完全等价); - 常用于统计缺失值数量或定位缺失值位置。
🧪 示例代码及结果
示例 1:基本用法
import pandas as pd
import numpy as npdf = pd.DataFrame({'A': [1, np.nan, 3],'B': [np.nan, 2, np.nan],'C': [5, 6, 7]
})print("Original DataFrame:")
print(df)# 检测 NaN 位置
df_isna = df.isna()
print("\nAfter isna():")
print(df_isna)
输出结果:
Original DataFrame:A B C
0 1.0 NaN 5
1 NaN 2.0 6
2 3.0 NaN 7After isna():A B C
0 False True False
1 True False False
2 False True False
示例 2:统计每列的缺失值数量
# 统计每列 NaN 的数量
nan_count = df.isna().sum()
print("\nMissing value count per column:")
print(nan_count)
输出结果:
Missing value count per column:
A 1
B 2
C 0
dtype: int64
示例 3:统计整个 DataFrame 中的缺失值总数
total_nan = df.isna().sum().sum()
print(f"\nTotal missing values: {total_nan}")
输出结果:
Total missing values: 3
示例 4:筛选出包含缺失值的行
# 筛选至少有一个 NaN 的行
rows_with_nan = df[df.isna().any(axis=1)]
print("\nRows with any NaN:")
print(rows_with_nan)
输出结果:
Rows with any NaN:A B C
0 1.0 NaN 5
1 NaN 2.0 6
2 3.0 NaN 7
🧠 应用场景
场景 | 说明 |
---|---|
查看缺失情况 | 快速了解哪些位置存在缺失值 |
统计缺失比例 | 结合 sum() 和 len() 计算缺失比例 |
过滤含缺失值的行/列 | 使用 df.isna().any() 配合布尔索引 |
可视化前的数据检查 | 在绘图前确保无缺失值影响图表 |
预处理流程的一部分 | 作为填充或删除缺失值前的判断依据 |
⚠️ 补充说明
isna()
与isnull()
完全等价,可互换使用;- 对于非浮点类型列(如字符串、整数),若含有
NaN
,也会被标记为True
; - 如果你希望将
None
视为NaN
,可以先使用df.replace([None], np.nan)
转换。
✅ 总结对比
方法 | 是否推荐使用 | 说明 |
---|---|---|
isna() | ✅ 推荐 | 更直观地表达“是否为空” |
isnull() | ✅ 推荐 | 与 isna() 完全相同,兼容性考虑 |
你可以将 isna()
作为日常数据清洗的第一步,快速掌握数据集中缺失值的分布情况。