用法:
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) 拆分。
- level:int,级别名称或此类的序列,默认无
如果轴是 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
相关用法
- Python pandas.DataFrame.ge用法及代码示例
- Python pandas.DataFrame.gt用法及代码示例
- Python pandas.DataFrame.get用法及代码示例
- Python pandas.DataFrame.ewm用法及代码示例
- Python pandas.DataFrame.dot用法及代码示例
- Python pandas.DataFrame.apply用法及代码示例
- Python pandas.DataFrame.combine_first用法及代码示例
- Python pandas.DataFrame.cumsum用法及代码示例
- Python pandas.DataFrame.rename用法及代码示例
- Python pandas.DataFrame.to_numpy用法及代码示例
- Python pandas.DataFrame.dtypes用法及代码示例
- Python pandas.DataFrame.cummin用法及代码示例
- Python pandas.DataFrame.truncate用法及代码示例
- Python pandas.DataFrame.sparse.from_spmatrix用法及代码示例
- Python pandas.DataFrame.add_prefix用法及代码示例
- Python pandas.DataFrame.to_json用法及代码示例
- Python pandas.DataFrame.convert_dtypes用法及代码示例
- Python pandas.DataFrame.assign用法及代码示例
- Python pandas.DataFrame.radd用法及代码示例
- Python pandas.DataFrame.add用法及代码示例
注:本文由纯净天空筛选整理自pandas.pydata.org大神的英文原创作品 pandas.DataFrame.groupby。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。