pandas清除缺失值
时间: 2025-05-21 18:33:43 浏览: 16
### 使用Pandas删除或处理DataFrame中的缺失值
在数据分析过程中,清理数据是一个重要的环节。对于含有缺失值的数据集,可以利用 `pandas` 提供的功能来检测、删除或者填充这些缺失值。
#### 检测缺失值
可以通过以下方法检测 DataFrame 中是否存在缺失值:
- **isnull()**: 返回布尔型 DataFrame,标记哪些位置存在缺失值[^1]。
- **notna()**: 反向操作,返回布尔型 DataFrame,标记哪些位置不为缺失值[^1]。
```python
import pandas as pd
import numpy as np
df = pd.DataFrame({
'A': [1, 2, np.nan],
'B': [np.nan, 5, 6],
'C': [7, 8, 9]
})
print(df.isnull())
```
#### 删除缺失值
如果决定移除包含缺失值的行或列,则可使用 `dropna()` 方法:
- 参数说明:
- **how='any'|'all'**: 当设置为 `'any'` 时,只要某一行/列有一个 NaN 就会删除;当设置为 `'all'` 时,只有当整行/列为 NaN 才会被删除[^2]。
- **axis=0|1**: 设置为 `0` 表示按照行的方向进行判断并删除,而 `1` 则表示按照列方向进行判断并删除。
- **thresh=int**: 至少需要多少非空值才能保留该行/列。
- **subset=list-like**: 对特定子集中满足条件的部分执行删除动作[^2]。
示例代码展示如何基于不同参数配置实现灵活控制:
```python
# 删除全为空白的行
df_cleaned_rows_all = df.dropna(how='all', axis=0)
# 删除至少拥有两个及以上有效数值以上的行
df_cleaned_thresh = df.dropna(thresh=2)
# 针对指定某些列检查是否有空白项后再做相应删减
df_subset_drop = df.dropna(subset=['A','B'], how='any')
```
#### 替换(填充)缺失值
除了直接丢弃外,还可以考虑用其他合理的方式填补丢失的信息以保持样本量不变。这通常由业务逻辑驱动选择合适的策略完成替代过程。
常用的方法包括但不限于设定固定常数作为占位符或是采用统计学上的均值、中位数等指标来进行估算补充。
具体实践如下所示:
```python
# 使用fillna填充值,默认向前填充前一个已知的有效值
filled_df_ffill = df.fillna(method="ffill")
# 或者定义具体的替换对象比如这里设定了所有的NaN都变为零
zero_filled_df = df.fillna(value={col: 0 for col in df.columns})
```
以上就是关于运用 Pandas 库针对结构化表格形式存储的数据集合里存在的未定义单元格所采取的一些常规解决方案概述[^3][^4]。
阅读全文
相关推荐


















