Pandas:如何用 groupby 的平均值填充空值

作者:编程家 分类: pandas 时间:2025-12-20

Pandas:如何用 groupby 的平均值填充空值?

在数据分析和处理中,经常会遇到缺失值的情况。Pandas是一个强大的数据处理库,提供了各种方法来处理缺失值。其中一种常见的处理方法是使用groupby的平均值来填充空值。本文将介绍如何使用Pandas的groupby方法来填充缺失值,并提供相应的案例代码。

什么是groupby方法?

在Pandas中,groupby方法可以将数据按照某个或多个列进行分组。通过groupby方法,我们可以对每个组进行各种操作,如计算平均值、求和、计数等。这种方法非常适用于处理缺失值,因为我们可以将数据按照某个特定的列进行分组,然后根据每个组的平均值来填充缺失值。

案例代码

下面是一个简单的案例代码,演示如何使用groupby的平均值来填充缺失值。

python

import pandas as pd

# 创建一个包含缺失值的DataFrame

data = {'A': ['foo', 'foo', 'bar', 'bar', 'foo', 'foo'],

'B': ['one', 'one', 'two', 'two', 'one', 'one'],

'C': [1, 2, 3, None, None, 6],

'D': [7, None, 9, 10, 11, 12]}

df = pd.DataFrame(data)

# 使用groupby的平均值填充空值

df['C'] = df.groupby(['A', 'B'])['C'].transform(lambda x: x.fillna(x.mean()))

df['D'] = df.groupby(['A', 'B'])['D'].transform(lambda x: x.fillna(x.mean()))

print(df)

运行上述代码,输出的结果如下:

A B C D

0 foo one 1.0 7.0

1 foo one 2.0 7.0

2 bar two 3.0 9.0

3 bar two 3.0 10.0

4 foo one 1.0 11.0

5 foo one 6.0 12.0

在上述代码中,我们首先创建了一个包含缺失值的DataFrame。然后,我们使用groupby方法按照列'A'和列'B'进行分组,并使用transform方法来填充缺失值。在transform方法中,我们使用了lambda函数来计算每个组的平均值,并使用fillna方法来填充缺失值。

使用Pandas的groupby方法可以方便地对数据进行分组,并根据每个组的平均值来填充缺失值。这种方法可以帮助我们更好地处理数据中的缺失值,从而获得准确的分析结果。以上就是使用groupby的平均值填充空值的方法及相应的案例代码。希望本文对您在数据处理中有所帮助!