pandas groupby多列分组
在数据分析中,我们经常需要对数据进行分组计算。而在使用pandas进行数据分析时,可以利用groupby函数实现对数据的分组操作。在实际应用中,有时候我们需要对多列进行分组操作,这时就需要用到pandas groupby多列分组的技巧。
1. 单列分组
首先让我们来回顾一下pandas中如何对单列进行分组操作。假设我们有以下的数据集:
import pandas as pd
data = {'A': ['foo', 'bar', 'foo', 'bar', 'foo', 'bar', 'foo', 'foo'],
'B': ['one', 'one', 'two', 'three', 'two', 'two', 'one', 'three'],
'C': [1, 2, 3, 4, 5, 6, 7, 8]}
df = pd.DataFrame(data)
print(df)
运行以上代码,可以得到如下输出:
A B C
0 foo one 1
1 bar one 2
2 foo two 3
3 bar three 4
4 foo two 5
5 bar two 6
6 foo one 7
7 foo three 8
现在我们想以’A’列进行分组,然后计算’C’列的和,可以使用以下代码:
grouped = df.groupby('A')
sum_result = grouped['C'].sum()
print(sum_result)
运行以上代码,可以得到以’A’列分组后’C’列的和:
A
bar 12
foo 24
Name: C, dtype: int64
2. 多列分组
接下来让我们看一下如何对多列进行分组操作。假设我们有以下的数据集:
import pandas as pd
data = {'A': ['foo', 'bar', 'foo', 'bar', 'foo', 'bar', 'foo', 'foo'],
'B': ['one', 'one', 'two', 'three', 'two', 'two', 'one', 'three'],
'C': [1, 2, 3, 4, 5, 6, 7, 8]}
df = pd.DataFrame(data)
print(df)
运行以上代码,可以得到如下输出:
A B C
0 foo one 1
1 bar one 2
2 foo two 3
3 bar three 4
4 foo two 5
5 bar two 6
6 foo one 7
7 foo three 8
现在我们想以’A’列和’B’列进行分组,然后计算’C’列的和,可以使用以下代码:
grouped = df.groupby(['A', 'B'])
sum_result = grouped['C'].sum()
print(sum_result)
运行以上代码,可以得到以’A’列和’B’列分组后’C’列的和:
A B
bar one 2
three 4
two 6
foo one 8
three 8
two 8
Name: C, dtype: int64
3. 多列分组及计算多个统计量
除了计算和之外,还可以计算其他统计量,比如平均值、最大值、最小值等。下面我们以计算平均值和最大值为例:
grouped = df.groupby(['A', 'B'])
agg_result = grouped['C'].agg(['mean', 'max'])
print(agg_result)
运行以上代码,可以得到以’A’列和’B’列分组后’C’列的平均值和最大值:
mean max
A B
bar one 2.0 2
three 4.0 4
two 6.0 6
foo one 4.0 7
three 8.0 8
two 4.0 5
4. 总结
本文介绍了如何在pandas中对多列进行分组操作,包括单列分组、多列分组以及计算多个统计量。通过灵活运用groupby函数,可以方便地实现数据的分组分析,在数据分析和处理中具有很大的应用价值。