首页 >后端开发 >Python教程 >如何使用群体均值估算 Pandas 中的缺失值?

如何使用群体均值估算 Pandas 中的缺失值?

Susan Sarandon
Susan Sarandon原创
2024-12-05 16:29:10588浏览

How to Impute Missing Values in Pandas Using Group Means?

Pandas 中组平均值的 NaN 插补

使用每个组内的平均值填充缺失值是处理表格数据时的一项常见任务。考虑以下带有缺失值的 DataFrame:

df = pd.DataFrame({'value': [1, np.nan, np.nan, 2, 3, 1, 3, np.nan, 3],
                   'name': ['A', 'A', 'B', 'B', 'B', 'B', 'C', 'C', 'C']})

我们的目标是根据“名称”列用每个组的平均值来估算缺失值。

为了实现这一目标,我们可以利用Pandas中的groupby()和transform()函数:

grouped = df.groupby('name').mean()
df["value"] = df.groupby("name").transform(lambda x: x.fillna(x.mean()))

groupby()函数根据'name' 列,mean() 计算每个组的平均值。 Transform() 函数将此平均值应用于每个组中的每一行,并填充缺失值。

生成的 DataFrame:

print(df)

  name  value
0    A      1
1    A      1
2    B      2
3    B      2
4    B      3
5    B      1
6    C      3
7    C      3
8    C      3

解释:

  • mean() 函数计算每个组内的平均值,从而产生一个分组的新 DataFrame means.
  • transform() 函数将 fillna() 方法应用于每个组,使用平均值作为填充值。这将使用每个组特定的平均值填充缺失值。

替代解决方案:

基于组的缺失值插补的另一种方法是:

impute_cols = ['value']
df[impute_cols] = df[impute_cols].fillna(df.groupby('name')[impute_cols].transform('mean'))

两种方法都达到相同的结果,但后一种方法在插补多个时提供了更大的灵活性专栏。

以上是如何使用群体均值估算 Pandas 中的缺失值?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn