pandas groupby 两列
在数据分析中,经常需要根据多个列的值进行分组并进行相应的操作。而pandas中的groupby函数可以很方便的实现这一功能。本文将详细介绍如何使用pandas的groupby函数对两列进行分组操作。
1. 创建示例数据
首先,我们需要创建一些示例数据,以便后续演示。我们可以使用pandas的DataFrame来创建数据,示例数据如下:
import pandas as pd
data = {
'category': ['A', 'A', 'B', 'B', 'A', 'B'],
'sub_category': ['X', 'Y', 'X', 'Y', 'X', 'Y'],
'value1': [10, 20, 30, 40, 50, 60],
'value2': [100, 200, 300, 400, 500, 600]
}
df = pd.DataFrame(data)
print(df)
运行以上代码,我们得到以下示例数据:
category sub_category value1 value2
0 A X 10 100
1 A Y 20 200
2 B X 30 300
3 B Y 40 400
4 A X 50 500
5 B Y 60 600
2. 使用groupby对两列进行分组
接下来,我们将演示如何使用groupby函数对两列进行分组操作。假设我们想要根据category
列和sub_category
列进行分组,并计算每组的平均值。示例代码如下:
grouped = df.groupby(['category', 'sub_category']).mean()
print(grouped)
运行以上代码,我们得到以下结果:
value1 value2
category sub_category
A X 30 300
Y 20 200
B X 30 300
Y 50 500
从以上结果可以看出,我们成功地根据两列进行了分组,并计算了每组的平均值。
3. 对分组结果进行进一步操作
除了计算平均值之外,我们还可以对分组结果进行其他的操作,比如求和、计数等。下面我们将演示如何计算每组的求和值。示例代码如下:
grouped_sum = df.groupby(['category', 'sub_category']).sum()
print(grouped_sum)
运行以上代码,我们得到以下结果:
value1 value2
category sub_category
A X 60 600
Y 20 200
B X 30 300
Y 100 1000
以上结果展示了每组的求和值,注意到每组的求和值是分别针对value1
和value2
列进行的。
4. 使用agg函数对不同列进行不同计算
有时候可能需要对不同列进行不同的计算,这时候可以使用agg函数。下面我们将演示如何对两列进行不同的计算。示例代码如下:
grouped_agg = df.groupby(['category', 'sub_category']).agg({'value1': 'sum', 'value2': 'mean'})
print(grouped_agg)
运行以上代码,我们得到以下结果:
value1 value2
category sub_category
A X 60 300
Y 20 200
B X 30 300
Y 100 500
以上结果展示了对value1
列进行了求和,对value2
列进行了平均值计算。
5. 总结
本文详细介绍了如何使用pandas的groupby函数对两列进行分组操作,并对分组结果进行了不同的计算。通过灵活运用groupby函数,我们可以方便地对数据进行多维分析和计算,满足不同业务场景下的需求。