📜  Pandas Groupby:在Python汇总、聚合和分组数据(1)

📅  最后修改于: 2023-12-03 15:18:13.908000             🧑  作者: Mango

Pandas Groupby:在Python汇总、聚合和分组数据

Pandas是一种流行的dataframe库,在Python数据科学和数据分析中广泛应用。其中一个最强大的功能是groupby操作,可以用来汇总、聚合和分组数据。下面介绍了Pandas groupby的基础知识和一些实际应用:

基础语法

groupby操作通常涉及以下五个步骤:

  1. 指定key,即按照哪个列或几个列进行groupby。
  2. 分组。
  3. 对每个组进行一些操作,例如统计、聚合、转换或筛选等。
  4. 可以将每个组的结果拼接在一起形成一个新的dataframe。
  5. 进行可选的排序或重排。

下面是groupby的基础语法:

grouped = df.groupby(key)
grouped.size()  # 统计每个组中的元素数目
grouped.mean()  # 求每个组的平均值
grouped.sum()  # 求每个组的和
grouped.apply(func)  # 对每个组应用自定义函数func

其中key是一个列名的string、多个列名的list或函数。例如,按照一个列的值进行groupby:

grouped = df.groupby('column_name')

按照多个列的值进行groupby:

grouped = df.groupby(['column1', 'column2'])

按照自定义函数进行groupby:

def func(x):
    return x.column_name % 2 == 0

grouped = df.groupby(func)
聚合函数

groupby操作中最常用的函数是聚合函数,它们可以统计、聚合和汇总数据。下面是一些常用的聚合函数:

  • count():统计元素数目。
  • sum():求和。
  • mean():求平均值。
  • median():求中位数。
  • min():求最小值。
  • max():求最大值。
  • std():求标准差。
  • var():求方差。
  • describe():生成描述性统计量。

这些聚合函数可以直接应用到分组对象上:

grouped = df.groupby('column_name')
grouped.mean()

如果需要同时应用多个聚合函数,可以使用agg()函数:

grouped = df.groupby('column_name')
grouped.agg(['mean', 'std', 'max'])
转换函数

除了聚合函数,还有一些转换函数可以应用到groupby对象上:

  • transform():将每个分组的数据转换为新的数据,例如标准化、归一化等。
  • apply():对每个分组应用自定义函数。

下面是一些使用转换函数的示例:

grouped = df.groupby('column_name')

def func(x):
    return (x - x.mean()) / x.std()

grouped.transform(func)
grouped.apply(lambda x: x.column_name.mean())
分组对象迭代

groupby操作会创建一个分组对象,它可以通过迭代器进行迭代处理:

grouped = df.groupby('column_name')

for key, group in grouped:
    print(key)
    print(group)
其他应用

除了基本的groupby操作,Pandas还提供了一些其他应用,例如:

  • pivot_table():用于数据透视表。
  • crosstab():用于交叉表。
  • rolling():用于滑动窗口计算。
  • expanding():用于累计计算。

下面是一些使用这些应用的示例:

pd.pivot_table(df, index='column1', columns='column2', values='value')
pd.crosstab(df.column1, df.column2)
df.rolling(window=3).mean()
df.expanding().sum()
总结

Pandas groupby操作是一种强大的数据汇总、聚合和分组工具。通过指定key、应用聚合函数或转换函数、迭代groupby对象和使用其他应用,可以轻松地对数据进行分组和分析。