📜  如何在 Pandas 中结合 Groupby 和多个聚合函数?(1)

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

如何在 Pandas 中结合 Groupby 和多个聚合函数?

在 Pandas 中, Groupby 是一个非常强大的功能,可以将数据分成几个组,并对每个组应用一个或多个聚合函数。本文将介绍如何使用 Groupby 和多个聚合函数。

简介

Groupby 是 Pandas 中的一个函数,它可以把数据按照某些列分组,然后对数据进行聚合操作。常见的操作包括计数、求和、平均值、标准差等。示例代码如下:

import pandas as pd

# 创建数据
data = {
    'A': ['foo', 'bar', 'foo', 'bar', 'foo', 'bar', 'foo', 'foo'],
    'B': ['one', 'one', 'two', 'three', 'two', 'two', 'one', 'three'],
    'C': [1, 2, 3, 4, 5, 6, 7, 8],
    'D': [10, 20, 30, 40, 50, 60, 70, 80]
}
df = pd.DataFrame(data)

# Groupby 分组,按列 A 进行分组,并对列 C 进行求和
grouped = df.groupby('A')['C'].sum()

print(grouped)

输出结果如下:

A
bar    12
foo    24
Name: C, dtype: int64

上述示例中,我们按列 A 进行分组,并对列 C 进行了求和操作。

多个聚合函数

在实际场景中,我们经常需要同时对一个列进行多个聚合函数的操作(比如求和和平均值)。示例代码如下:

import pandas as pd

# 创建数据
data = {
    'A': ['foo', 'bar', 'foo', 'bar', 'foo', 'bar', 'foo', 'foo'],
    'B': ['one', 'one', 'two', 'three', 'two', 'two', 'one', 'three'],
    'C': [1, 2, 3, 4, 5, 6, 7, 8],
    'D': [10, 20, 30, 40, 50, 60, 70, 80]
}
df = pd.DataFrame(data)

# Groupby 分组,按列 A 进行分组,并对列 C 进行求和和平均值操作
grouped = df.groupby('A')['C'].agg(['sum', 'mean'])

print(grouped)

输出结果如下:

     sum      mean
A                 
bar   12  4.000000
foo   24  3.000000

上述示例中,我们按列 A 进行分组,并对列 C 进行了求和和平均值操作。通过 agg 函数,我们可以同时对一个列进行多个聚合函数的操作。

自定义聚合函数

在实际场景中,我们还可以自定义聚合函数。示例代码如下:

import pandas as pd

# 创建数据
data = {
    'A': ['foo', 'bar', 'foo', 'bar', 'foo', 'bar', 'foo', 'foo'],
    'B': ['one', 'one', 'two', 'three', 'two', 'two', 'one', 'three'],
    'C': [1, 2, 3, 4, 5, 6, 7, 8],
    'D': [10, 20, 30, 40, 50, 60, 70, 80]
}
df = pd.DataFrame(data)

# 自定义聚合函数
def custom_agg(x):
    return x.max() - x.min()

# Groupby 分组,按列 A 进行分组,并对列 C 进行自定义聚合函数操作
grouped = df.groupby('A')['C'].agg(custom_agg)

print(grouped)

输出结果如下:

A
bar    4
foo    6
Name: C, dtype: int64

上述示例中,我们按列 A 进行分组,并对列 C 进行了自定义聚合函数操作。自定义聚合函数通常会返回聚合结果的标量值。

结论

在 Pandas 中,我们可以使用 Groupby 和多个聚合函数来对数据进行分组和聚合操作。通过示例代码,您可以更好地理解 Groupby 和多个聚合函数的用法。