pandas groupby多列分组

pandas groupby多列分组

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函数,可以方便地实现数据的分组分析,在数据分析和处理中具有很大的应用价值。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程