pandas空值处理
时间: 2025-05-31 13:09:44 浏览: 18
### Pandas 中处理空值的方法
在数据分析领域,缺失数据是一种常见现象。Pandas 提供了一系列功能强大的工具用于识别、管理和修正这些空值。
#### 检测空值
通过 `isnull()` 或者其同义函数 `isna()` 能够轻松定位哪些单元格存在缺失值。这两个方法会返回一个布尔类型的 DataFrame,其中每一个元素代表原始数据集中相应位置是否有空值。
```python
import pandas as pd
import numpy as np
data = {'Name': ['Alice', 'Bob', None, 'Charlie'],
'Age': [25, 30, None, 35]}
df = pd.DataFrame(data)
print(df.isnull())
```
上述代码演示了如何创建包含空值的数据框以及如何使用 `isnull()` 查找它们的位置[^1]。
#### 删除含有空值的行或列
当决定移除那些带有缺失值得条目时,可以依赖于 `dropna()` 方法实现这一目标。如果不指定额外参数,默认行为将是丢弃任意一列中有至少一个 NaN 的所有行。
```python
data2 = {'city': ['北京', '上海', '广州(粤语)', '深圳', '四川'],
'2018': [33105, 36011, 22859, 24221, np.nan]}
df2 = pd.DataFrame(data2)
cleaned_df = df2.dropna()
print(cleaned_df)
```
在这个例子中展示的是简单地清除掉具有 NA 值的所有记录[^2]。然而有时候我们只想去掉特定维度上的空白项——即要么整个行要么单独某一列全部为空白才予以剔除,在这种情形下就需要设置好合适的 axis 参数(0 表示按照行的方向操作而 1 则意味着沿着列轴前进)。此外还有其他几个可选配置项可以帮助更加精细控制清理过程:
- **how**: 取值为 `'any'` (只要有NA就删) 或 `'all'`(只有全是NA才会被删除);
- **thresh**: 至少需要多少非NaN数值才能保留;
- **subset**: 需要关注哪几列来进行判断;
- **inplace**: 是否直接修改原对象而不是产生新副本.
例如下面这个命令就是只考虑城市名那栏里有没有丢失的信息再做决策:
```python
filtered_cities = df2.dropna(subset=['city'])
print(filtered_cities)
```
#### 替代填充法
另一种常用技巧叫做插补(imputation),也就是用某种合理推测出来的值替换原有的 NULLs 。最基础的形式莫过于拿平均数填补连续型变量中的洞穴:
```python
mean_age = df['Age'].mean()
filled_ages = df.fillna({'Age': mean_age})
print(filled_ages)
```
当然也可以依据业务逻辑选取固定常量或者其他统计指标作为替补候选等等[^3].
---
###
阅读全文
相关推荐


















