如何使用 fillna() 方法将序列中的 NaN 值替换为元素的平均值?

pandasserver side programmingprogramming更新于 2025/7/10 21:22:17

在 Pandas 数据清理过程中,替换缺失值非常重要,在某些情况下,我们必须将这些缺失值替换为序列元素的平均值。这可以通过使用 fillna() 方法来实现。

Pandas series.fillna() 方法的基本操作是用指定的值替换缺失值(Nan 或 NA)。首先,该方法会验证所有 Nan 值,并将其替换为指定的替换值。

示例 1

这里我们将看到 series.fillna() 方法如何将缺失值替换为平均值。

# 导入 pandas 包
import pandas as pd
import numpy as np

# 创建序列
s = pd.Series([69, np.nan, np.nan, 10, 30, 52, 70, np.nan, 54, 79, np.nan])
print(s)

# 用平均值替换缺失值
result = s.fillna(s.mean())
print('Result:')
print(result)

解释

在下面的示例中,我们将用系列元素的平均值替换缺失值。为此,我们将 series.mean() 函数作为参数应用于 fillna() 方法。

输出

输出如下所示 −

0    69.0
1     NaN
2     NaN
3    10.0
4    30.0
5    52.0
6    70.0
7     NaN
8    54.0
9    79.0
10    NaN
dtype: float64

Result:
0    69.0
1    52.0
2    52.0
3    10.0
4    30.0
5    52.0
6    70.0
7    52.0
8    54.0
9    79.0
10   52.0
dtype: float64

如您所见,索引位置 1、2、5、7 和 10 中的值 52.0(平均值)被替换为 Nan 值。

示例 2

我们再举一个例子,将缺失值 Nan/NA 替换为序列元素的平均值。

# 导入 pandas 包
import pandas as pd
import numpy as np

# 创建序列
s = pd.Series([np.nan, 49, 45, 47, 99, 99, np.nan, np.nan, 94, np.nan])
print(s)

# 用平均值替换缺失值
result = s.fillna(s.mean())
print('Result:')
print(result)

解释

首先,我们创建了一个 Pandas Series 对象,其中包含一个整数列表和 Nan 值,然后使用平均值调用了 fillna() 方法。我们使用 series.mean() 函数计算平均值,然后将该平均值作为 fillna() 方法的参数。

输出

输出如下所示 −

0    NaN
1    49.0
2    45.0
3    47.0
4    99.0
5    99.0
6    NaN
7    NaN
8    94.0
9    NaN
dtype: float64

Result:
0    72.166667
1    49.000000
2    45.000000
3    47.000000
4    99.000000
5    99.000000
6    72.166667
7    72.166667
8    94.000000
9    72.166667
dtype: float64

用平均值 72.166667 来替代缺失值,索引位置为 0、6、7 和 9。


相关文章