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

pythonpandasserver side programmingprogramming

groupby()aggregate()是pandas库中可用的两个函数。

groupby() 函数

groupby() 函数允许您按一列或多列对 DataFrame 进行分组。它在内部对 dataframe 对象 执行操作组合,例如拆分对象、应用函数以及组合结果

此函数返回 DataFrameGroupBy 对象,其中包含有关组的信息。一旦我们获得了这个对象,我们就可以执行各种操作,例如计算平均值、计算总和和平均值等...

简介

以下是groupby()函数的语法-

DataFrame.groupby(by=None, axis=0, level=None, as_index=True, sort=True, group_keys=True, Observed=False, dropna=True);

aggregate() 函数

aggregate() 函数用于在整个 DataFrame 或 DataFrame 中的特定列上的特定轴上应用一个或多个操作(函数)。这些数学运算用于总结和计算给定数据集的统计数据。 agg 是aggregate() 函数的别名。

简介

以下是groupby的语法-

DataFrame .aggregate ( func = None , axis = 0 , * args , ** kwargs )

哪里,

  • func - 这是用于计算聚合值的函数或函数列表。

  • axis - 该值指定轴(列:0 或"索引",行 - 1 或"列")。

  • *args- 传递给 func 的位置参数

  • **kwargs - 传递给 func 的关键字参数

组合 Groupby 和多个聚合函数

我们可以使用aggregate()或agg()函数对Groupby子句的结果执行多个聚合函数,例如sum、mean、min max等,如下所示 -

pandas.groupby(column_name).agg(column)

免费

在下面的示例中,我们使用 Pandas 中的 groupby 函数按列名称 Fruits 对 Dataframe 进行分组,并对两个不同的列"Dozens"和"Cost"执行聚合操作mean这将返回 groupbyaggregate 函数的组合输出。

import pandas as pd
data = {'Fruits': ['Papaya','Apple','Banana','Grapes','Orange','Watermelon'],
        'Dozens': [25, 30, 35, 27, 32, 37],
        'Cost': [500, 6000, 270, 5500, 6500, 7500]}
df = pd.DataFrame(data)
grouped_df = df.groupby('Fruits').agg({'Dozens': ['mean'], 'Cost': ['mean']})
print(grouped_df)

输出

以下是 groupbyaggregate 函数组合的输出。

  	   Dozens    Cost
             mean    mean
Fruits                   
Apple        30.0  6000.0
Banana       35.0   270.0
Grapes       27.0  5500.0
Orange       32.0  6500.0
Papaya       25.0   500.0
Watermelon   37.0  7500.0

示例

在下面的示例中,我们考虑相同的数据集并将其按同一列(水果)进行分组,并计算"最小值"、"最大值"、"总和"、"计数"、平均值" 使用 agg() 函数计算 'cost' 列的值 –

import pandas as pd
data = {'Fruits': ['Papaya','Apple','Banana','Grapes','Orange','Watermelon'],
   'Dozens': [25, 30, 35, 27, 32, 37],
   'Cost': [500, 6000, 270, 5500, 6500, 7500]}
df = pd.DataFrame(data)
grouped_df = df.groupby('Fruits').Cost.agg(["min", "max", "sum", "count", "mean"])
print(grouped_df)

输出

当我们运行上面的代码时,将显示以下输出 -

              min   max   sum  count    mean
Fruits
Apple       6000  6000  6000      1  6000.0
Banana       270   270   270      1   270.0
Grapes      5500  5500  5500      1  5500.0
Orange      6500  6500  6500      1  6500.0
Papaya       500   500   500      1   500.0
Watermelon  7500  7500  7500      1  7500.0

示例

我们来看另一个结合groupby和聚合函数的例子。这里我们考虑数据集"titanic.csv"数据集,并对'Survived''Pclass'列执行"mean"、"max"、"sum"操作,并按'fare'列分组 –

import pandas as pd
data = pd.read_csv("https://raw.githubusercontent.com/datasciencedojo/datasets/master/titanic.csv")
data_groupby = data.groupby('Fare')
data_agg = data_groupby.agg({'Survived':["mean", "max", "sum"],'Pclass':["min", "max", "sum"]})
print(data_agg)

输出

当我们运行上述代码时,将出现以下输出生成 -

          Survived         Pclass
              mean max sum    min max sum
Fare
0.0000    0.066667   1   1      1   3  29
4.0125    0.000000   0   0      3   3   3
5.0000    0.000000   0   0      1   1   1
6.2375    0.000000   0   0      3   3   3
6.4375    0.000000   0   0      3   3   3
...            ...  ..  ..    ...  ..  ..
227.5250  0.750000   1   3      1   1   4
247.5208  0.500000   1   1      1   1   2
262.3750  1.000000   1   2      1   1   2
263.0000  0.500000   1   2      1   1   4
512.3292  1.000000   1   3      1   1   3

[248 rows x 6 columns]


相关文章