当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Python pandas.DataFrame.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)

使用映射器或按一系列列对 DataFrame 进行分组。

groupby 操作涉及拆分对象、应用函数和组合结果的某种组合。这可用于对大量数据进行分组并在这些组上进行计算操作。

参数

by映射、函数、标签或标签列表

用于确定 groupby 的组。如果by 是一个函数,它会在对象索引的每个值上调用。如果传递了 dict 或 Series,则 Series 或 dict VALUES 将用于确定组(Series 的值首先对齐;参见 .align() 方法)。如果传递了长度等于所选轴的列表或 ndarray(请参阅 groupby 用户指南),则使用这些值 as-is 来确定组。标签或标签列表可以通过 self 中的列传递给分组。请注意,元组被解释为(单个)键。

axis{0 或 ‘index’,1 或 ‘columns’},默认 0

沿行 (0) 或列 (1) 拆分。

levelint,级别名称或此类的序列,默认无

如果轴是 MultiIndex(分层),则按特定级别或多个级别分组。

as_index布尔值,默认为真

对于聚合输出,返回以组标签为索引的对象。仅与 DataFrame 输入相关。 as_index=False 实际上是 “SQL-style” 分组输出。

sort布尔值,默认为真

对组键进行排序。关闭此函数可获得更好的性能。请注意,这不会影响每组内的观察顺序。 Groupby 保留每个组内的行顺序。

group_keys布尔值,默认为真

调用 apply 时,将组键添加到索引以识别片段。

squeeze布尔值,默认为 False

如果可能,减少返回类型的维数,否则返回一致的类型。

observed布尔值,默认为 False

这仅适用于任何 groupers 是分类的。如果为真:仅显示分类分组的观察值。如果为 False:显示分类分组的所有值。

dropna布尔值,默认为真

如果为 True,并且组键包含 NA 值,则 NA 值连同行/列将被删除。如果为 False,NA 值也将被视为组中的键。

返回

DataFrameGroupBy

返回包含有关组的信息的 groupby 对象。

注意

有关更详细的用法和示例,请参阅用户指南,包括将对象分成组、遍历组、选择组、聚合等。

例子

>>> 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="Type").mean()
         Max Speed
Type
Captive      210.0
Wild         185.0

我们也可以通过设置dropna参数来选择是否在组键中包含NA,默认设置为True

>>> l = [[1, 2, 3], [1, None, 4], [2, 1, 3], [1, 2, 2]]
>>> df = pd.DataFrame(l, columns=["a", "b", "c"])
>>> df.groupby(by=["b"]).sum()
    a   c
b
1.0 2   3
2.0 2   5
>>> df.groupby(by=["b"], dropna=False).sum()
    a   c
b
1.0 2   3
2.0 2   5
NaN 1   4
>>> l = [["a", 12, 12], [None, 12.3, 33.], ["b", 12.3, 123], ["a", 1, 1]]
>>> df = pd.DataFrame(l, columns=["a", "b", "c"])
>>> df.groupby(by="a").sum()
    b     c
a
a   13.0   13.0
b   12.3  123.0
>>> df.groupby(by="a", dropna=False).sum()
    b     c
a
a   13.0   13.0
b   12.3  123.0
NaN 12.3   33.0

相关用法


注:本文由纯净天空筛选整理自pandas.pydata.org大神的英文原创作品 pandas.DataFrame.groupby。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。