Pandas是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。Pandas 纳入了大量库和一些标准的数据模型,提供了高效地操作大型数据集所需的工具。Pandas提供了大量能使我们快速便捷地处理数据的函数和方法。你很快就会发现,它是使Python成为强大而高效的数据分析环境的重要因素之一。本文主要介绍一下Pandas中pandas.DataFrame.groupby方法的使用。

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是函数,

则在对象索引的每个值上调用它。

如果通过了dictSeries

则将使用Series或dict VALUES来确定组

(将Series的值首先对齐;请参见.align()方法)。

如果传递了ndarray,则按原样使用这些值来确定组。

标签或标签列表可以按中的列传递给分组self。

注意,元组被解释为(单个)key。

axis : {0'index'1'columns'},默认0

沿rows (0)columns (1)拆分。

level : int,level名称或此类的序列,默认为None

如果axis是MultiIndex(分层),

则按一个或多个特定级别分组。

as_index : bool,默认为True

对于聚合输出,返回带有组标签的对象作为索引。

仅与DataFrame输入有关。

as_index = False实际上是“ SQL风格”的分组输出。

sort : 布尔值,默认为True

排序组键。关闭此功能可获得更好的性能。请注意,

这不会影响每个组中观察的顺序。

Groupby保留每个组中行的顺序。

group_keys : 布尔值,默认为True

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

squeeze : 布尔值,默认为False

如果可能,请减小返回类型的维数,

否则返回一致的类型。

observed : 布尔值,默认为False

仅当任何groupers为分类者时才适用。如果为True

仅显示分类groupers的观测值。

如果为False:显示分类groupers的所有值。

0.23.0版中的新功能。

**kwargs

可选,仅接受关键字参数"mutated"并传递给groupby。

返回值

DataFrameGroupBySeriesGroupBy

依赖于调用对象,

并返回包含有关组信息的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