您的位置: 网站首页> Pandas教程> 当前文章
pandas的groupby单列多列分组聚合运算
老董-我爱我家房产SEO2022-01-28191围观,116赞
本文是1个关于groupby的知识点,如果想全面了解分组聚合的场景,可以参考文章pandas之groupby使用详解。
本文介绍下pandas的groupby分组聚合的基础的操作,pandas官方文档上groupby的介绍如下:
DataFrame.groupby(by=None,axis=0,level=None,as_index=True,sort=True,group_keys=True, squeeze=NoDefault.no_default,observed=False,dropna=True)
一般而言by参数最常用,by参数可以传入1列或者多列,df按列分组后是DataFrameGroupBy对象,该对象可以直接调用各种聚合函数或者属性求每组数据的(最大max()、最小min()、均值mean()、求和sum()、数量大小size属性、。
1、单列分组聚合
从分组聚合结果来看,非数值类的列pandas默认会依据不同的聚合函数而灵活处理,按什么列分组默认该列会被作为结果的索引。
# -*- coding:UTF-8 -*- import pandas as pd df = pd.DataFrame({'Animal': ['Falcon', 'Falcon','Parrot', 'Parrot'], 'Max Speed': [380, 370, 24, 26], 'age':[20,30,40,50],'size':['small','small','big','big'] }) print(df.groupby(['Animal']).mean()) print('-----------------------') print(df.groupby(['Animal']).max())
Max Speed age Animal Falcon 375.0 25.0 Parrot 25.0 45.0 ----------------------- Max Speed age size Animal Falcon 380 30 small Parrot 26 50 big
2、多列分组聚合
# -*- coding:UTF-8 -*- import pandas as pd df = pd.DataFrame({'Animal': ['Falcon', 'Falcon','Parrot', 'Parrot'], 'Max Speed': [380, 370, 24, 26], 'age':[20,30,40,50],'size':['small','small','big','big'] }) print(df.groupby(['Animal','size']).mean()) print('-----------------------') print(df.groupby(['Animal','size']).max())
Max Speed age Animal size Falcon small 375.0 25.0 Parrot big 25.0 45.0 ----------------------- Max Speed age Animal size Falcon small 380 30 Parrot big 26 50
3、DataFrameGroupBy对象指定某几个列做聚合
# -*- coding:UTF-8 -*- import pandas as pd df = pd.DataFrame({'Animal': ['Falcon', 'Falcon','Parrot', 'Parrot'], 'age':[20,30,40,50], 'size':[80,90,100,110], 'height':[200,210,220,230] }) print(df.groupby('Animal')[['size','height']].min())
size height Animal Falcon 80 200 Parrot 100 220
4、如果不想让被分组的列作为结果的索引,可以把as_index参数设为False。
# -*- coding:UTF-8 -*- import pandas as pd df = pd.DataFrame({'Animal': ['Falcon', 'Falcon','Parrot', 'Parrot'], 'Max Speed': [380, 370, 24, 26], 'age':[20,30,40,50],'size':['small','small','big','big'] }) print(df.groupby(['Animal'],as_index=False).min())
Animal Max Speed age size 0 Falcon 370 20 small 1 Parrot 24 40 big
5、上述分组聚合只适合简单的情形,如果想实现复杂一些的分组计算,如:
1)1个列使用多个函数分组聚合
2)不同的列使用不同的函数分组聚合
3)使用自定义函数分组聚合
实现上述效果,可以参考分组聚合使用agg函数。
很赞哦!
python编程网提示:转载请注明来源www.python66.com。
有宝贵意见可添加站长微信(底部),获取技术资料请到公众号(底部)。同行交流请加群
相关文章
文章评论
-
pandas的groupby单列多列分组聚合运算文章写得不错,值得赞赏
站点信息
- 网站程序:Laravel
- 客服微信:a772483200