pandas.Series.groupby#
- Series.groupby(by=None, axis=0, level=None, as_index=True, sort=True, group_keys=NoDefault.no_default, squeeze=NoDefault.no_default, observed=False, dropna=True)[源代码]#
使用映射器或按一系列柱对系列进行分组。
GROUP BY操作涉及拆分对象、应用函数和合并结果的某种组合。这可用于对这些组上的大量数据和计算操作进行分组。
- 参数
- by映射、函数、标签或标签列表
用于确定Groupby的组。如果
by
是一个函数,它在对象索引的每个值上被调用。如果传递了DICT或Series,则将使用Series或Dict值来确定组(首先对齐序列的值;请参见.align()
方法)。如果传递了长度等于所选轴的列表或ndarray(请参见 groupby user guide ),则按原样使用这些值来确定组。标签或标签列表可以传递给GROUP BYself
。请注意,元组被解释为(单个)键。- axis{0或‘index’,1或‘Columns’},默认为0
沿行(0)或列(1)拆分。
- levelInt、级别名称或其序列,默认为无
如果轴是多索引(分层),则按一个或多个特定级别分组。
- as_index布尔值,默认为True
对于聚合输出,返回以组标签作为索引的对象。仅与DataFrame输入相关。AS_INDEX=FALSE实际上是“SQL风格”的分组输出。
- sort布尔值,默认为True
对组键进行排序。通过关闭此选项可获得更好的性能。注意:这不会影响每组内观察的顺序。Groupby保留每个组中行的顺序。
- group_keys布尔值,可选
调用Apply时,将组键添加到索引以标识条目。默认情况下,当结果的索引(和列)标签与输入匹配时,不包括组键,否则包括组键。
在 1.5.0 版更改: 警告说 group_keys 的结果时将不再被忽略
apply
是类似索引的系列或DataFrame。指定group_keys
是否明确包含组密钥。- squeeze布尔值,默认为False
如果可能,降低返回类型的维度,否则返回一致的类型。
1.1.0 版后已移除.
- observed布尔值,默认为False
这只适用于任何一个石斑鱼是绝对的。如果为True:仅显示类别分组的观测值。如果为False:显示分类分组的所有值。
- dropna布尔值,默认为True
如果为True,并且组键包含NA值,则NA值与行/列一起将被删除。如果为False,则NA值也将被视为组中的关键字。
1.1.0 新版功能.
- 退货
- SeriesGroupBy
返回包含有关组的信息的Groupby对象。
参见
resample
一种方便的时间序列频率变换和重采样方法。
注意事项
请参阅 user guide 获取更详细的用法和示例,包括将对象拆分成组、遍历组、选择组、聚合等。
示例
>>> ser = pd.Series([390., 350., 30., 20.], ... index=['Falcon', 'Falcon', 'Parrot', 'Parrot'], name="Max Speed") >>> ser Falcon 390.0 Falcon 350.0 Parrot 30.0 Parrot 20.0 Name: Max Speed, dtype: float64 >>> ser.groupby(["a", "b", "a", "b"]).mean() a 210.0 b 185.0 Name: Max Speed, dtype: float64 >>> ser.groupby(level=0).mean() Falcon 370.0 Parrot 25.0 Name: Max Speed, dtype: float64 >>> ser.groupby(ser > 100).mean() Max Speed False 25.0 True 370.0 Name: Max Speed, dtype: float64
按索引分组
属性可以按层次索引的不同级别进行分组。 level 参数:
>>> arrays = [['Falcon', 'Falcon', 'Parrot', 'Parrot'], ... ['Captive', 'Wild', 'Captive', 'Wild']] >>> index = pd.MultiIndex.from_arrays(arrays, names=('Animal', 'Type')) >>> ser = pd.Series([390., 350., 30., 20.], index=index, name="Max Speed") >>> ser Animal Type Falcon Captive 390.0 Wild 350.0 Parrot Captive 30.0 Wild 20.0 Name: Max Speed, dtype: float64 >>> ser.groupby(level=0).mean() Animal Falcon 370.0 Parrot 25.0 Name: Max Speed, dtype: float64 >>> ser.groupby(level="Type").mean() Type Captive 210.0 Wild 185.0 Name: Max Speed, dtype: float64
我们还可以选择包括 NA 是否在组密钥中,通过定义 dropna 参数,则默认设置为 True 。
>>> ser = pd.Series([1, 2, 3, 3], index=["a", 'a', 'b', np.nan]) >>> ser.groupby(level=0).sum() a 3 b 3 dtype: int64
>>> ser.groupby(level=0, dropna=False).sum() a 3 b 3 NaN 3 dtype: int64
>>> arrays = ['Falcon', 'Falcon', 'Parrot', 'Parrot'] >>> ser = pd.Series([390., 350., 30., 20.], index=arrays, name="Max Speed") >>> ser.groupby(["a", "b", "a", np.nan]).mean() a 210.0 b 350.0 Name: Max Speed, dtype: float64
>>> ser.groupby(["a", "b", "a", np.nan], dropna=False).mean() a 210.0 b 350.0 NaN 20.0 Name: Max Speed, dtype: float64