深入浅出Pandas--Pandas分组聚合--概述

对应书本第三部分第6章Pandas分组聚合第1节

对一个DataFrame按第一列进行了分组,分成A、B、C三个组,接着对各个组内部全部进行了求和计算,最后将结果组合成一个新的DataFrame,这样就完成了拆分–应用–合并的全部工作。


groupby语法

df.groupby()方法可以按指定字段对DataFrame进行分组,生成一个分组器对象。
“分组器对象”是一个 GroupBy 对象(pandas.core.groupby.GroupBy)。它本身不是一个直接可见的数据结构,而是一个中间对象,用于表示“按指定规则分组后的数据”,并支持后续聚合、转换、过滤等操作。

df.groupby(by=None, axis=0, level=None,
  as_index: bool = True, sort: bool = True,
  group_keys: bool = True, observed: bool = False,
  dropna: bool = True,
) -> 'DataFrameGroupBy'

分组操作会按指定的规则对数据进行拆分,groupby完成的就是拆分工作。groupby也能对Series完成分组操作。

参数解释如下:

  • by:代表分组的依据和方法。如果by是一个函数,则会在数据的索引的每个值去调用它,从而产生值,按这些值进行分组。如果
    传递dict或Series,则将使用dict或Series的值来确定组;如果传递ndarray,则按原样使用这些值来确定组。传入字典,键为原索引
    名,值为分组名。
  • axis:沿行(0)或列(1)进行拆分。也可传入index或columns,默认是0。
  • level:如果轴是多层索引(MultiIndex),则按一个或多个特定的层级进行拆分,支持数字、层名及序列。
  • as_index:数据分组聚合输出,默认返回带有组标签的对象作为索引,传False则不会。
  • sort:是否对分组进行排序。默认会排序,传False会让数据分组中第一个出现的值在前,同时会提高分组性能。
  • group_keys:调用函数时,将组键添加到索引中进行识别。
  • observed:仅当分组是分类数据时才适用。如果为True,仅显示分类分组数据的显示值;如果为False,显示分类分组数据的所有
    值。
  • dropna:如果为True,并且组键包含NA值,则NA值及行/列将被删除;如果为False,则NA值也将被视为组中的键。

以上大多参数对于Series也是适用的,如果对DataFrame进行分组会返回DataFrame-GroupBy对象,对Series分组会返回SeriesGroupBy对象

使用示例



DataFrame应用分组

分组求和

分组后聚合

聚合时同一列使用不同方法


Series应用分组

对Series也可以使用分组聚合,但相对来说场景比较少。在下例中,df.Q1是一个Series,它的分组依据是df.team。根据groupby的语法,如果给by参数传入一个Series,此Series与被分组数据的索引对齐后,按Series的值进行分组。


©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容