pandas中聚合函数agg的具体用法

  • Post category:Python

下面我将详细讲解“pandas中聚合函数agg的具体用法”的完整攻略。

1. 什么是agg函数

agg是pandas中的一个聚合函数,可以对数据进行聚合操作。在pandas 0.20.0版本中引入了这个函数,解决了之前不能同时使用多个聚合函数的问题。agg函数的基本语法为:

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

其中,func参数可以传入字符串、函数、字典等类型,用于执行聚合操作;axis参数指定对行或列进行聚合操作,0表示列,1表示行。其余的参数args和*kwargs都可以传递给聚合函数。

2. 聚合函数示例

下面通过两个实例来介绍agg函数的使用。

实例一

首先,我们创建一个示例数据集:

import pandas as pd

data = pd.DataFrame({'A': [1, 2, 3, 4], 'B': [5, 6, 7, 8], 'C': [9, 10, 11, 12]})
print(data)

输出如下:

   A  B   C
0  1  5   9
1  2  6  10
2  3  7  11
3  4  8  12

现在,我们要求每一列的平均值和最大值,这时可以使用agg函数:

result = data.agg(['mean', 'max'])
print(result)

输出如下:

       A    B     C
mean  2.5  6.5  10.5
max   4.0  8.0  12.0

此时agg函数传递的是一个列表,列表中包含了两个字符串’mean’和’max’,代表要求取平均值和最大值。

实例二

接下来,我们来看一下如何使用agg函数进行自定义聚合。假设我们现在有一个销售数据集,包含了商品类型、销售额和销售数量三列,现在要求每种商品类型的客单价(即每个顾客平均购买的商品金额)。

首先,我们创建一个示例数据集:

import pandas as pd

data = pd.DataFrame({'Type': ['A', 'B', 'A', 'B'], 'Sales': [100, 200, 300, 400],
                     'Number': [10, 20, 30, 40]})

print(data)

输出如下:

  Type  Sales  Number
0    A    100      10
1    B    200      20
2    A    300      30
3    B    400      40

现在,我们要对该数据集进行自定义聚合,计算每种商品类型的客单价。这时可以使用agg函数结合lambda表达式进行计算:

result = data.groupby('Type').agg({'Sales': 'sum', 'Number': 'sum'})
result['UnitPrice'] = result.apply(lambda x: x['Sales'] / x['Number'], axis=1)
print(result)

输出如下:

      Sales  Number  UnitPrice
Type                          
A       400      40       10.0
B       600      60       10.0

这里的agg函数传递的是一个字典,字典的key为列名,value为要进行的聚合操作。这里我们对销售额和销售数量进行了求和操作,接着使用apply函数来计算客单价,axis=1表示对行进行计算。