📜  两个 groupby 熊猫 - Python (1)

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

两个 groupby 熊猫 - Python

在使用 Pandas 进行数据处理时,groupby 是一个非常有用的函数。它可以将数据按照某个列或多个列进行分组,并对每个分组进行聚合操作。在本文中,我们将讨论如何使用两个 groupby 函数来进一步细分数据集。

单个 groupby

首先,让我们回顾一下单个 groupby 函数。假设我们有一个名为 df 的数据集,其中包含三个列:ABC。我们想要按照 A 列进行分组,并计算每个分组中 B 列的平均值:

import pandas as pd

df = pd.DataFrame({'A': ['foo', 'bar', 'foo', 'bar',
                         'foo', 'bar', 'foo', 'foo'],
                   'B': [1, 2, 3, 4, 5, 6, 7, 8],
                   'C': [10, 20, 30, 40, 50, 60, 70, 80]})

grouped = df.groupby('A')
result = grouped.mean()['B']

print(result)

输出:

A
bar    4.0
foo    4.8
Name: B, dtype: float64

上述代码中,我们使用 groupby('A') 将数据集按照 A 列进行分组,并使用 mean() 函数计算每个分组中 B 列的平均值。最后,我们使用 ['B'] 选择要返回的列。

两个 groupby

现在假设我们想要通过列 A 和列 B 来细分数据集,并计算每个分组中 C 列的平均值。在这种情况下,我们可以使用两个 groupby 函数:

import pandas as pd

df = pd.DataFrame({'A': ['foo', 'bar', 'foo', 'bar',
                         'foo', 'bar', 'foo', 'foo'],
                   'B': ['red', 'red', 'blue', 'blue',
                         'red', 'red', 'blue', 'blue'],
                   'C': [10, 20, 30, 40, 50, 60, 70, 80]})

grouped = df.groupby(['A', 'B'])
result = grouped.mean()['C']

print(result)

输出:

A    B  
bar  blue     40
     red      40
foo  blue     50
     red      35
Name: C, dtype: int64

上述代码中,我们使用 groupby(['A', 'B']) 将数据集按照 AB 列进行分组,并使用 mean() 函数计算每个分组中 C 列的平均值。最后,我们使用 ['C'] 选择要返回的列。

总结

在本文中,我们讨论了如何使用两个 groupby 函数来进一步细分数据集。需要注意的是,每个 groupby 函数返回的是一个 GroupBy 对象,而不是一个数据表。因此,我们需要使用相应的聚合函数来处理分组数据。