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

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

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或特定列上应用一个或多个操作(函数)的特定轴上。这些数学操作用于对给定数据集进行汇总和计算统计量。 agg 是aggregate()函数的别名。

语法

以下是groupby的语法-

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

其中,

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

  • axis - 此值指定轴(列:0或’index’和行:1或’columns’)。

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

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

结合Groupby和多个聚合函数

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

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()函数计算列 ‘成本’ 的“最小值”,“最大值”,“总和”,“计数”,“平均值” –

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’ 按照列 ‘fare’ 进行”mean”、”max”、”sum”等操作 –

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]

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程