我的编程空间,编程开发者的网络收藏夹
学习永远不晚

python pandas分组聚合详细

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

python pandas分组聚合详细

python pandas分组聚合

1、环境

  • python3.9
  • win10 64bit
  • pandas==1.2.1

groupby方法是pandas中的分组方法,对数据框采用groupby方法后,返回的是DataFrameGroupBy对象,一般分组操作后会进行聚合操作。

2、分组


import pandas as pd
import numpy as np
pd.set_option('display.notebook_repr_html',False)
# 数据准备
df = pd.DataFrame({'A': [1, 1, 2, 2],'B': [1, 2, 3, 4],'C':[6,8,1,9]})
df


      A  B  C
0  1  1  6
1  1  2  8
2  2  3  1
3  2  4  9

对数据框按A列进行分组,产生分组数据框。分组数据框是可迭代对象,可以进行循环遍历,可以看出在循环中,每个元素的类型是元组,

元组的第一个元素是分组值,第二个元素是对应的分组数据框。


# 分组
g_df=df.groupby('A')
# 分组数据框类
type(g_df)

pandas.core.groupby.generic.DataFrameGroupBy


# 循环分组数据
for i in g_df:
    print(i,type(i),end='\n\n')


(1,    A  B  C
0  1  1  6
1  1  2  8) <class 'tuple'>


(2,    A  B  C
2  2  3  1
3  2  4  9) <class 'tuple'>

可以对分组后的数据框直接使用聚合方法agg,对分组数据框的每一列计算统计函数值。


# 分组求和
df.groupby('A').agg('sum')
   B   C
A       
1  3  14
2  7  10

3、序列分组

可以根据数据框外的序列数据对数据框进行分组,需要注意序列长度需要与数据框行数相同。


# 定义分组列表
label=['a','a','b','b']
# 分组求和
df.groupby(label).agg('sum')
   A  B   C
a  2  3  14
b  4  7  10

4、多列分组

可以根据数据框的多列对数据框进行分组。


# 数据准备
df = pd.DataFrame({'A': [1, 1, 2, 2],'B': [3, 4, 3, 3],'C':[6,8,1,9]})
df



   A  B  C
0  1  3  6
1  1  4  8
2  2  3  1
3  2  3  9


根据A,B列进行分组,然后求和。


# 根据多列分组求和
df.groupby(['A','B']).agg('sum')

      C
A B    
1 3   6
  4   8
2 3  10

5、索引分组

可以根据索引对数据框进行分组,需要设置level参数。


# 数据准备
df = pd.DataFrame({'A': [1, 1, 2, 2],'B': [3, 4, 3, 3],'C':[6,8,1,9]},index=['a','a','b','b'])
df



   A  B  C
a  1  3  6
a  1  4  8
b  2  3  1
b  2  3  9


数据框只有一层索引,设置参数level=0


# 根据索引分组求和
df.groupby(level=0).agg('sum')
   A  B   C
a  2  7  14
b  4  6  10


当数据框索引有多层时,也可以根据需求设置level参数,完成分组聚合。


# 数据准备
mi=pd.MultiIndex.from_arrays([[1,1,2,2],[3,4,3,3]],names=['id1','id2'])
df=pd.DataFrame(dict(value=[4,7,2,9]),index=mi)
df



         value
id1 id2       
1   3        4
    4        7
2   3        2
    3        9


设置level参数,如需要根据第一层索引,即id1进行分组,可以设置level=0level='id1'完成分组聚合。


# 根据第一层索引分组求和
df.groupby(level=0).agg('sum')



     value
id1       
1       11
2       11



# 根据第一层索引分组求和
df.groupby(level='id1').agg('sum')
 


    value
id1       
1       11
2       11

7、聚合

分组后一般会进行聚合操作,用agg方法进行聚合。


# 数据准备
df = pd.DataFrame({'A': [1, 1, 2, 2],'B': [3, 4, 3, 3],'C':[6,8,1,9],'D':[2,5,4,8]})
df



   A  B  C  D
0  1  3  6  2
1  1  4  8  5
2  2  3  1  4
3  2  3  9  8

8、单函数对多列

对分组后数据框使用单个函数进行聚合,单个聚合函数会对每列进行计算,然后合并返回。聚合函数以字符串的形式传入。


# 对所有列分组求和
df.groupby('A').agg('sum')



   B   C   D
A           
1  7  14   7
2  6  10  12


可以对分组后的数据指定列进行分组聚合。需要注意子列需要用[]包裹


# 对指定列分组求和
df.groupby('A')[['B','C']].agg('sum')



   B   C
A       
1  7  14
2  6  10


聚合函数也可以传入自定义的匿名函数。


# 匿名函数分组求和
df.groupby('A').agg(lambda x:sum(x))



  B   C   D
A           
1  7  14   7
2  6  10  12

9、多函数对多列

聚合函数可以是多个函数。聚合时,多个聚合函数会对每列进行计算,然后合并返回。聚合函数以列表的形式传入。


# 全部列多函数聚合
df.groupby('A').agg(['sum','mean'])



    B        C        D     
  sum mean sum mean sum mean
A                           
1   7  3.5  14    7   7  3.5
2   6  3.0  10    5  12  6.0


聚合返回后的数据列名有两层索引,第一层是聚合的列名,第二层是使用的聚合函数名。如果需要对返回的聚合函数名重命名,
需要在传参时,传入元组,第一个元素为聚合函数名,第二个元素为聚合函数。


# 聚合函数重命名
df.groupby('A').agg([('SUM','sum'),('MEAN','mean')])


    B        C        D     
  SUM MEAN SUM MEAN SUM MEAN
A                           
1   7  3.5  14    7   7  3.5
2   6  3.0  10    5  12  6.0


同样,也可以传入匿名函数。


# 匿名函数并重命名
df.groupby('A').agg([('SUM','sum'),('MAX',lambda x:max(x))])



    B       C       D    
  SUM MAX SUM MAX SUM MAX
A                        
1   7   4  14   8   7   5
2   6   3  10   9  12   8


如果需要对不同的列进行不同的聚合计算,则需要传入字典的形式。


# 不同列不同聚合函数
df.groupby('A').agg({'B':['sum','mean'],'C':'mean'})



    B         C
  sum mean mean
A              
1   7  3.5    7
2   6  3.0    5


可以重命名聚合后的列名,注意只能对一列传入一个聚合函数时有效


# 聚合后重命名列名
df.groupby('A').agg(B_sum=('B','sum'),C_mean=('C','mean'))



   B_sum  C_mean
A               
1      7       7
2      6       5

到此这篇关于python pandas分组聚合详细的文章就介绍到这了,更多相关python pandas分组聚合内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

python pandas分组聚合详细

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Pandas中的分组聚合是什么

这篇文章给大家分享的是有关Pandas中的分组聚合是什么的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。一:分组 (groupby)对数据集进行分组,然后对每组进行统计分析SQL 能够对数据进行过滤,分组聚合pan
2023-06-27

python/pandas数据挖掘(十四)-groupby,聚合,分组级运算

https://blog.csdn.net/youngbit007/article/details/54288603groupbyimport pandas as pddf = pd.DataFrame({"key1":list("aabba"),
python/pandas数据挖掘(十四)-groupby,聚合,分组级运算
2016-09-15

pandas数据聚合与分组运算的实现

本文主要介绍了pandas数据聚合与分组运算的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
2023-01-28

深入解析pandas数据聚合和重组

这篇文章主要介绍了pandas数据聚合和重组,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
2023-05-16

MYSQL聚合查询、分组查询、联合查询举例详解

目录聚合查询聚合函数count()sum()avg()max()和min()总结分组查询group by 子句having 子句联合查询笛卡尔积内连接外连接自连接子查询单行子查询多行子查询from子句使用子查询合并查询总结 聚合查询聚合查
MYSQL聚合查询、分组查询、联合查询举例详解
2024-09-23

如何在Python中进行数据聚合和分组

如何在Python中进行数据聚合和分组在数据分析和处理的过程中,经常需要对数据进行聚合和分组操作。Python提供了各种强大的库和工具,方便我们进行数据聚合和分组的操作。本文将介绍如何在Python中使用pandas库进行数据聚合和分组,并
2023-10-22

ES结合java代码聚合查询详细示例

es查询有一个很常用的一种叫聚合查询,相当于mysql中的分组groupby后拿各组数量进行统计,实现起来也是很简单,下面这篇文章主要给大家介绍了关于ES结合java代码聚合查询的相关资料,需要的朋友可以参考下
2023-05-19

MySQL 分组查询和聚合函数

概述相信我们经常会遇到这样的场景:想要了解双十一天猫购买化妆品的人员中平均消费额度是多少(这可能有利于对商品价格区间的定位);或者不同年龄段的化妆品消费占比是多少(这可能有助于对商品备货量的预估)。 这个时候就要用到分组查询,分组查询的目的
2022-05-24

C++聚合体初始化aggregateinitialization详细介绍

这篇文章主要介绍了C++聚合体初始化aggregateinitialization,C++有很多初始化对象的方法。其中之一叫做聚合体初始化(aggregateinitialization),这是聚合体专有的一种初始化方法
2023-02-03

SQL的聚合函数及分组查询

SQL的聚合函数及分组查询要在这个世界上获得成功,就必须坚持到底:至死都不能放手。countselect count(*) from students #底层优化了select count(1) from students #效果和*一样select coun
SQL的聚合函数及分组查询
2017-02-04

Python如何处理运动员信息的分组与聚合

这篇文章给大家介绍Python如何处理运动员信息的分组与聚合,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。1.1 数据的爬取代码:import pandas as pdf = open(运动员信息表.csv)data=
2023-06-22

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录