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函数的优点在于:可以应用多种统计分析方法,支持自定义函数,可以与多个分组变量进行配合使用,将数据分析变得更加简单和高效。

评论关闭