DataFrame.groupby(self, by=None, axis=0, level=None, as_index=True, sort=True, group_keys=True, squeeze=False, observed=False, **kwargs) [source]
使用映射器或按Series列对DataFrame或Series进行分组。
分组操作涉及拆分对象,应用功能以及组合结果的某种组合。这可用于对大量数据进行分组并在这些组上进行计算操作。
参数: | by : 映射,功能,标签或标签列表 用于确定分组依据的分组。如果by是函数, 则在对象索引的每个值上调用它。 如果通过了 则将使用Series或dict VALUES来确定组 (将Series的值首先对齐;请参见 如果传递了 标签或标签列表可以按中的列传递给分组self。 注意,元组被解释为(单个)key。 axis : { 沿 level : int,level名称或此类的序列,默认为 如果axis是MultiIndex(分层), 则按一个或多个特定级别分组。 as_index : bool,默认为 对于聚合输出,返回带有组标签的对象作为索引。 仅与DataFrame输入有关。
sort : 布尔值,默认为True 排序组键。关闭此功能可获得更好的性能。请注意, 这不会影响每个组中观察的顺序。 Groupby保留每个组中行的顺序。 group_keys : 布尔值,默认为 调用apply时,将组键添加到索引以识别片段。 squeeze : 布尔值,默认为 如果可能,请减小返回类型的维数, 否则返回一致的类型。 observed : 布尔值,默认为 仅当任何groupers为分类者时才适用。如果为 仅显示分类groupers的观测值。 如果为 0.23.0版中的新功能。 **kwargs 可选,仅接受关键字参数"mutated"并传递给groupby。 |
返回值: |
依赖于调用对象, 并返回包含有关组信息的groupby对象。 |
Notes
有关更多信息,请参见用户指南。
例子
>>> df = pd.DataFrame({'Animal': ['Falcon', 'Falcon',
... 'Parrot', 'Parrot'],
... 'Max Speed': [380., 370., 24., 26.]})
>>> df
Animal Max Speed
0 Falcon 380.0
1 Falcon 370.0
2 Parrot 24.0
3 Parrot 26.0
>>> df.groupby(['Animal']).mean()
Max Speed
Animal
Falcon 375.0
Parrot 25.0
层次索引
我们可以使用level参数对不同层次的层次结构索引进行分组:
>>> arrays = [['Falcon', 'Falcon', 'Parrot', 'Parrot'],
... ['Captive', 'Wild', 'Captive', 'Wild']]
>>> index = pd.MultiIndex.from_arrays(arrays, names=('Animal', 'Type'))
>>> df = pd.DataFrame({'Max Speed': [390., 350., 30., 20.]},
... index=index)
>>> df
Max Speed
Animal Type
Falcon Captive 390.0
Wild 350.0
Parrot Captive 30.0
Wild 20.0
>>> df.groupby(level=0).mean()
Max Speed
Animal
Falcon 370.0
Parrot 25.0
>>> df.groupby(level=1).mean()
Max Speed
Type
Captive 210.0
Wild 185.0