DataFrame 减去分组平均值

pandas

1个回答

写回答

夜风82

2025-06-20 03:00

+ 关注

Pandas
Pandas

根据 DataFrame 减去分组平均值

在数据分析和处理中,经常需要对 DataFrame 进行分组计算,以便更好地理解和分析数据。一种常见的需求是将 DataFrame 中的每个分组减去该分组的平均值,以得到相对于平均值的差异。本文将介绍如何使用 Pandas 库实现这一操作,并提供一个案例代码来帮助理解。

首先,我们需要导入 Pandas 库,并创建一个示例 DataFrame。假设我们有一份销售数据,其中包含了不同地区的销售额信息。我们希望将每个地区的销售额减去该地区销售额的平均值,以得到相对于平均值的差异。

Python

import Pandas as pd

# 创建示例 DataFrame

data = {'地区': ['A', 'A', 'B', 'B', 'C', 'C'],

'销售额': [100, 150, 200, 250, 300, 350]}

df = pd.DataFrame(data)

接下来,我们可以使用 groupby 函数将 DataFrame 按照地区进行分组。然后,使用 transform 函数并传入 lambda 表达式来计算每个分组的平均值,并将结果减去原始数据。

Python

# 分组减去平均值

df['销售额差异'] = df['销售额'] - df.groupby('地区')['销售额'].transform(lambda x: x.mean())

现在,我们已经成功地将 DataFrame 中的每个分组减去了该分组的平均值。销售额差异 列中的值表示每个地区的销售额与该地区销售额的平均值之间的差异。

案例代码

下面是完整的案例代码,展示了如何根据 DataFrame 减去分组平均值。

Python

import Pandas as pd

# 创建示例 DataFrame

data = {'地区': ['A', 'A', 'B', 'B', 'C', 'C'],

'销售额': [100, 150, 200, 250, 300, 350]}

df = pd.DataFrame(data)

# 分组减去平均值

df['销售额差异'] = df['销售额'] - df.groupby('地区')['销售额'].transform(lambda x: x.mean())

print(df)

运行以上代码,我们将得到以下输出结果:

地区 销售额 销售额差异

0 A 100 -25.0

1 A 150 25.0

2 B 200 -25.0

3 B 250 25.0

4 C 300 -25.0

5 C 350 25.0

从输出结果可以看出,每个地区的销售额差异被成功计算出来,并以新的一列 销售额差异 的形式呈现。

本文介绍了如何使用 Pandas 库对 DataFrame 进行分组计算,并将每个分组的值减去该分组的平均值。通过减去分组平均值,我们可以得到相对于平均值的差异,有助于进一步分析和理解数据。以上案例代码可以帮助读者更好地理解和应用这一操作。

举报有用(4分享收藏

Copyright © 2025 IZhiDa.com All Rights Reserved.

知答 版权所有 粤ICP备2023042255号