下面我将详细讲解“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表示对行进行计算。