赞
踩
关于Pandas版本: 本文基于 pandas2.2.0 编写。
关于本文内容更新: 随着pandas的stable版本更迭,本文持续更新,不断完善补充。
传送门: Pandas API参考目录
传送门: Pandas 版本更新及新特性
传送门: Pandas 由浅入深系列教程
DataFrame.groupby()
方法用于使用映射器或指定的列,对 DataFrame
进行数据分组,可以实现类似Excel的数据透视、分类汇总的效果。
DataFrame.groupby()
的底层逻辑是:
by
参数指定)分割 DataFrame
为 groupby
对象;
DataFrame.groupby()
会自动的将聚合后的数据合并为新的 DataFrame
。⚠️ 注意:
1、数据分割实际上是基于行索引进行的。
2、你指定的分割依据(分组依据)需要尽可能的,和行索引等长。
DataFrame.groupby (by=None, axis=_NoDefault.no_default, level=None, as_index=True, sort=True, group_keys=True, observed=_NoDefault.no_default, dropna=True)
groupby
对象。**by:**mapping, function, label, pd.Grouper or list of such
by
参数用于指定分组的依据(即分割DataFrame
的依据):
label(列名):用于把某列指定为分组依据
DataFrame
。例1mapping(映射):用于直接把行索引的值指定为分组依据
DataFrame
行索引等长的 Series
时 例4
Series
里的值,应该是可以有效分组的;Series
建议和 DataFrame
行索引等长;Series
必须和 DataFrame
行索引不等长,会自动进行对齐(.align()
),二者数据量如果差距太大,会产生很多缺失值,造成分组后计算不精准的结果。function(函数): 函数将作用于行索引的每个值,并使用处理后的值,作为分组依据。 例5
pd.Grouper:通常用于按照时间间隔分组,直接作用于行索引 例6
list of such:多个列构成多维度分组汇总
axis: {0 or ‘index’, 1 or ‘columns’}, default 0
axis
参数用于指定分割方向(可以参照此图,了解什么是分割 数据分组流程示意图):
⛔ 弃用于 Pandas 2.1.0 :
axis=1
在Pandas 2.1.0
版本标记为弃用。使用以下替代方法实现:
- 先 转置 再 分组
frame.T.groupby(...)
例8这样做的目的是:使分组后数据尽可能的保持更多的操作性和可读性。
level: int, level name, or sequence of such, default None 例9
如果 DataFrame
具有多层索引,可以用level
参数指定级别的编号或名称,不能和 by
参数同时使用。
as_index: bool, default True 例10
as_index
参数控制是否将组标签作为索引返回。
as_index=True
时,组标签将成为输出 DataFrame
的索引。as_index=False
时,组标签不会成为索引,而是返回一个类似 SQL
风格的输出。sort: bool, default True 例11
sort
参数用于控制是否对分组名进行排序,默认 sort=True
会对组名进行排序。此参数不会影响每个组内观察值的顺序:
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Gausst松鼠会/article/detail/153149
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。