Python agg函数用法介绍
Python agg函数用法介绍
Python agg函数是pandas库中实现各种数据分析操作的重要函数之一。AGG函数完美地实现了数据的分组处理、数据的筛选以及数据的统计分析。本文将从多个方面对Python agg函数做详细的阐述,并给出代码示例。
一、基本概念
agg函数根据分组进行统计分析,包括平均数、标准差、中位数、最大值、最小值,以及用户自定义的数学运算等。通俗说,agg函数可以让我们快速地了解数据的分布情况。
二、基本使用方法
agg函数基本语法如下:
dataframe.groupby('column_name').agg({'column_name': ['mean', 'std', 'max', 'min']})
其中,groupby参数指定分组的列名,agg函数的参数是包含了所有需要进行统计分析的列名以及对应的函数。可以使用mean、std、max、min、sum、count等标准函数,也可以使用自定义的函数,例如:lambda x: x.quantile(0.75)。
下面的代码示例演示了如何使用agg函数进行数据分组的功能:
import pandas as pd data = { "name": ["Alice", "Bob", "Charlie", "David", "Ellen", "Frank"], "gender": ["female", "male", "male", "male", "female", "female"], "age": [25, 32, 18, 47, 21, 19], "score": [78, 92, 65, 81, 84, 76] } df = pd.DataFrame(data) # 按照gender分组,计算每个分组中age的平均值、标准差、最大值、最小值 df.groupby('gender').agg({'age': ['mean', 'std', 'max', 'min']})
三、自定义函数
除了使用标准函数,agg函数还支持使用自定义函数。自定义函数需要满足以下要求:
- 接受一个参数,就是分组后的数据集
- 返回一个标量值
示例代码如下:
import pandas as pd data = {"A": [1, 1, 1, 2, 2, 2], "B": [2, 3, 4, 5, 6, 7], "C": [1, 3, 5, 7, 9, 11]} df = pd.DataFrame(data) # 自定义函数,计算标量值 def my_agg(x): return sum(x)*0.5+x.max()*0.5 # 按照列A分组,应用自定义函数my_agg df.groupby('A').agg({'B': my_agg, 'C': ['mean', 'std']})
四、同时应用多个函数
一个常用的业务场景是:对于分组数据,同时应用多个函数进行统计分析。这个时候,可以通过列表的方式传入所有需要应用的函数。
示例代码如下:
import pandas as pd data = { "name": ["Alice", "Bob", "Charlie", "David", "Ellen", "Frank"], "gender": ["female", "male", "male", "male", "female", "female"], "age": [25, 32, 18, 47, 21, 19], "score": [78, 92, 65, 81, 84, 76] } df = pd.DataFrame(data) # 按照gender分组,计算每个分组中age的平均值、标准差,以及score的平均值、标准差、最大值、最小值 df.groupby('gender').agg({'age': ['mean', 'std'], 'score': ['mean', 'std', 'max', 'min']})
五、使用元组重命名列名
agg函数的输出结果,列名的命名方式可以使用元组进行重命名,这个功能十分常用。
示例代码如下:
import pandas as pd data = { "name": ["Alice", "Bob", "Charlie", "David", "Ellen", "Frank"], "gender": ["female", "male", "male", "male", "female", "female"], "age": [25, 32, 18, 47, 21, 19], "score": [78, 92, 65, 81, 84, 76] } df = pd.DataFrame(data) # 按照gender分组,计算每个分组中age的平均值、标准差;score的平均值、标准差,以及对应的列名 df_group = df.groupby('gender').agg( age_mean=('age', 'mean'), age_std=('age', 'std'), score_mean=('score', 'mean'), score_std=('score', 'std') ) print(df_group)
六、使用多级分组进行统计
agg函数还可以使用多个列进行分组统计,例如按照性别和姓名进行分组,统计每个人的平均年龄和平均分数。
示例代码如下:
import pandas as pd data = { "name": ["Alice", "Bob", "Charlie", "David", "Ellen", "Frank"], "gender": ["female", "male", "male", "male", "female", "female"], "age": [25, 32, 18, 47, 21, 19], "score": [78, 92, 65, 81, 84, 76] } df = pd.DataFrame(data) # 按照gender和name进行分组,计算每个人的平均年龄和平均分数 df_group = df.groupby(['gender', 'name']).agg({'age': 'mean', 'score': 'mean'}) print(df_group)
七、总结
本文对Python agg函数进行了详细的介绍,包括基本概念、基本使用方法、自定义函数、同时应用多个函数、使用元组重命名列名以及使用多级分组进行统计等方面。agg函数的优点在于:可以应用多种统计分析方法,支持自定义函数,可以与多个分组变量进行配合使用,将数据分析变得更加简单和高效。
评论关闭