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()
作為日常數據清洗的第一步,快速掌握數據集中缺失值的分布情況。