📌  相关文章
📜  如何在 pandas 中填充 nan 值 - Python (1)

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

如何在 pandas 中填充 nan 值 - Python

在数据分析中,处理缺失值是一个很重要的任务。当数据集中有缺失值时,需要进行填充以保证后续的分析和建模的准确性。

在 pandas 中,可以使用 fillna() 方法来填充缺失值。下面是几种常见的填充方式。

1. 使用常数填充

一种简单的方法是使用常数来填充缺失值。可以使用 fillna() 方法,传入要填充的常数。例如,下面的代码将缺失值填充为 0:

import pandas as pd

df = pd.DataFrame({'A': [1, 2, None, 4],
                   'B': [5, None, 7, 8]})

df.fillna(0, inplace=True)

print(df)

输出:

     A    B
0  1.0  5.0
1  2.0  0.0
2  0.0  7.0
3  4.0  8.0
2. 使用相邻的值填充

在时间序列数据中,可以使用前一个或后一个有效值来填充缺失值。可以使用 fillna() 方法,传入参数 method='ffill'method='bfill' 来实现。例如,下面的代码将缺失值使用后一个有效值填充:

import pandas as pd

df = pd.DataFrame({'A': [1, 2, None, 4],
                   'B': [5, None, 7, 8]})

df.fillna(method='bfill', inplace=True)

print(df)

输出:

     A    B
0  1.0  5.0
1  2.0  7.0
2  4.0  7.0
3  4.0  8.0
3. 使用平均值或中位数填充

另一种常见的方法是使用非缺失值的平均值或中位数来填充缺失值。可以使用 fillna() 方法,传入要填充的值。

下面的代码将缺失值用每列的平均值填充:

import pandas as pd

df = pd.DataFrame({'A': [1, 2, None, 4],
                   'B': [5, None, 7, 8]})

df.fillna(df.mean(), inplace=True)

print(df)

输出:

     A    B
0  1.0  5.0
1  2.0  6.0
2  2.3333  7.0
3  4.0  8.0

如果要使用中位数来填充,可以将 df.mean() 改为 df.median()

4. 插值填充

可以使用插值方法来填充缺失值,例如线性插值或多项式插值。可以使用 interpolate() 方法来实现。下面的代码用线性插值法填充缺失值:

import pandas as pd

df = pd.DataFrame({'A': [1, 2, None, 4],
                   'B': [5, None, 7, 8]})

df.interpolate(method='linear', axis=0, inplace=True)

print(df)

输出:

     A    B
0  1.0  5.0
1  2.0  6.0
2  3.0  7.0
3  4.0  8.0

其他插值方法包括 method='polynomial'(多项式插值)和 method='spline'(样条插值)等。

总结

上述是 pandas 中填充缺失值的几种常见方法:

  • 使用常数填充
  • 使用相邻的值填充
  • 使用平均值或中位数填充
  • 使用插值法填充

选择合适的填充方法需要根据数据的具体情况来决定。