比较系统的学习Pandas(9) 之 Pandas 分组聚合

Pandas提供了强大的groupby方法,能够方便地对数据做分组聚合操作,能完成比SQL分组复杂得多的计算工 作。

1、groupby语法

df.groupby(by=None, axis=0, level=None,as_index: bool = True, sort: bool = True,group_keys: bool = True, observed: bool = False,dropna: bool = True)

分组操作会按指定的规则对数据进行拆分,groupby完成的就是拆 分工作。

groupby也能对Series完成分组操作。各个参数的意义如下。

by:代表分组的依据和方法。如果by是一个函数,则会在数据的 索引的每个值去调用它,从而产生值,按这些值进行分组。如果 传递dict或Series,则将使用dict或Series的值来确定组;如果传递 ndarray,则按原样使用这些值来确定组。传入字典,键为原索引 名,值为分组名。

axis:沿行(0)或列(1)进行拆分。也可传入index或 columns,默认是0。 level:如果轴是多层索引(MultiIndex),则按一个或多个特定 的层级进行拆分,支持数字、层名及序列。

as_index:数据分组聚合输出,默认返回带有组标签的对象作为 索引,传False则不会。

sort:是否对分组进行排序。默认会排序,传False会让数据分组 中第一个出现的值在前,同时会提高分组性能。

group_keys:调用函数时,将组键添加到索引中进行识别。

observed:仅当分组是分类数据时才适用。如果为True,仅显示 分类分组数据的显示值;如果为False,显示分类分组数据的所有 值。

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

以上大多参数对于Series也是适用的,如果对DataFrame进行分组会 返回DataFrame-GroupBy对象,对Series分组会返回SeriesGroupBy对象。

eg:

# 按team分组对应列并相加
df.groupby('team').sum()


# 对不同列使用不同的计算方法
df.groupby('team').agg({'Q1': sum, # 总和
                        'Q2': 'count', # 总数
                        'Q3':'mean', # 平均
                        'Q4': max # 最大值

                        }) 



# 对同一列使用不同的计算方法
df.groupby('team').agg({'Q1': [sum, 'std', max], # 使用三个方法
                        'Q2': 'count', # 总数
                        'Q3':'mean', # 平均
                        'Q4': max    # 最大值
                        })



# 对Series df.Q1按team分组,求和
df.Q1.groupby(df.team).sum()

你可能感兴趣的:(学习,pandas)