📜  在 Pandas 中处理缺失数据(1)

📅  最后修改于: 2023-12-03 15:07:45.304000             🧑  作者: Mango

在 Pandas 中处理缺失数据

在现实生活中,数据集经常受到数据丢失或无效值的影响。Pandas 为缺失数据提供了很多功能性选项。

1. 检查缺失值

Pandas 使用 isnull()notnull() 函数来检查数据集中是否存在缺失值。这些函数返回一个由布尔值(True 或 False)组成的 DataFrame 或 Series,根据每个元素是否为缺失数据来进行标记。

import pandas as pd
df = pd.DataFrame({'A': [1, 2, None], 'B': [4, None, 6]})
print(df.isnull())
print(df.notnull())

输出结果:

       A      B
0  False  False
1  False   True
2   True  False

      A      B
0  True   True
1  True  False
2  False   True

根据这些布尔值可以直接对 DataFrame 或 Series 的值进行修改,使缺失值得到恰当的解决。

2. 删除缺失值

使用 dropna() 函数可以轻松清除缺失值行或列。

import pandas as pd
df = pd.DataFrame({'A': [1, 2, None], 'B': [4, None, 6]})
df.dropna()  # 删除所有含有缺失值的行
df.dropna(axis=1)  # 删除所有含有缺失值的列
3. 填充(填补)缺失值

使用 fillna() 函数可以用一个固定值或某种插值方法(如线性插值)填补缺失值。

import pandas as pd
df = pd.DataFrame({'A': [1, 2, None], 'B': [4, None, 6]})
df.fillna(0)  # 将所有缺失值填充为 0
df.fillna(method='ffill')  # 使用前向填充(向后填充为 bfill)
4. 插值

使用 interpolate() 函数可以根据已知的数据点进行线性或多项式插值,预测估计缺失数据点的值。Pandas 支持的多项式插值方法如下:

  • 'linear' - 线性
  • 'poly' - 多项式
  • 'spline' - 样条
import pandas as pd
import numpy as np
df = pd.DataFrame({'A': [1, 2, None], 'B': [4, None, 6]})
df.interpolate(method='linear')  # 线性插值
df.interpolate(method='poly', order=2)  # 二阶多项式插值
df.interpolate(method='spline', order=2)  # 二阶样条插值

这些插值方法还可以指定要插值的方向(如前向插值或后向插值)以及限制多项式插值的度数,以使插值更加准确。

5. 更多选项

Pandas 支持的关于缺失数据处理的功能非常多,包括通过前向填充或后向填充等方法使用一些特定的值来填充缺失值。使用适当的方法并参考 Pandas 文档,可以根据特定问题的要求找到最佳解决方案。

参考资料