Pandas|groupby()

groupby是Pandas用于根据给定列中的不同值对数据点(即行)进行分组,分组后的数据可以计算生成组的聚合值。

  1. agg 聚合操作

聚合操作是groupby后非常常见的操作,聚合操作可以用来求和、均值、最大值、最小值等.

函数 用途 函数 用途
min 最小值 max 最大值
sum 求和 mean 平均值
median 中位数 std 标准差
var 方差 count 计数

示例:

班级 学生 语文 数学 英语
一班 学生1 90 99 96
二班 学生2 98 90 92
三班 学生3 91 97 95
一班 学生4 92 91 93
二班 学生5 95 98 98
三班 学生6 89 96 99
一班 学生7 88 99 100

1、单列聚合

计算每个班的语文平均成绩:

df.groupby('班级')['语文'].mean()

班级
一班    90.0
三班    90.0
二班    96.5
Name: 语文, dtype: float64

2、多列聚合

在一个操作中进行多个聚合。以下是计算每个班语文和数学的平均成绩。

df.groupby('班级')['语文','数学'].mean()

      语文         数学
班级                 
一班  90.0  96.333333
三班  90.0  96.500000
二班  96.5  94.000000

3、多列多个聚合

利用agg函数来计算多个聚合值。

df.groupby('班级')['语文'].agg(["mean", "max"])

    mean  max
班级           
一班  90.0   92
三班  90.0   91
二班  96.5   98

4、对聚合结果进行命名

df.groupby('班级').agg(语文平均成绩=("语文","mean"),语文最高分=("语文","max"))    
    
        语文平均成绩  语文最高分
班级               
一班    90.0     92
三班    90.0     91
二班    96.5     98

5、多个聚合和多个函数

df.groupby('班级')[['数学','语文']].agg(['sum','max'])

     数学       语文    
    sum max  sum max
班级                  
一班  289  99  270  92
三班  193  97  180  91
二班  188  98  193  98

6、对不同列的聚合进行命名

df.groupby('班级').agg(数学最高分=("数学","max"),语文平均成绩=("语文","mean"),英语最高分=("英语","max"))

	    数学最高分  语文平均成绩  英语最高分
班级                      
一班     99    90.0    100
三班     97    90.0     99
二班     98    96.5     98

7、as_index参数

如果groupby操作的输出是DataFrame,可以使用as_index参数使它们成为DataFrame中的一列。

df.groupby('班级',as_index=False).agg(数学最高分=("数学","max"),语文平均成绩=("语文","mean"),英语最高分=("英语","max"))
   班级  数学最高分  语文平均成绩  英语最高分
0  一班     99    90.0    100
1  三班     97    90.0     99
2  二班     98    96.5     98
posted @ 2024-04-05 17:25  华小电  阅读(46)  评论(0编辑  收藏  举报