pandas,将多列的多个函数应用于groupby对象

作者:编程家 分类: pandas 时间:2025-11-09

使用pandas库进行数据处理和分析时,经常需要对数据进行分组操作,并对每个分组应用一系列函数。pandas提供了强大的groupby功能,可以方便地对数据进行分组,并且可以同时应用多个函数。本文将介绍如何使用pandas的groupby功能,并同时应用多个函数。

在pandas中,groupby函数可以根据某个列或多个列的值将数据进行分组。一旦数据被分组,我们可以对每个分组应用各种函数,如求和、平均值、计数等。下面是一个简单的示例代码,演示如何使用groupby函数和多个函数对数据进行分组处理。

python

import pandas as pd

# 创建一个包含姓名、科目和成绩的DataFrame

data = {'姓名': ['张三', '李四', '王五', '张三', '李四', '王五'],

'科目': ['数学', '数学', '数学', '英语', '英语', '英语'],

'成绩': [90, 80, 85, 95, 75, 90]}

df = pd.DataFrame(data)

# 根据姓名和科目进行分组,并同时应用求和和平均值函数

result = df.groupby(['姓名', '科目']).agg({'成绩': ['sum', 'mean']})

print(result)

以上代码首先创建了一个包含姓名、科目和成绩的DataFrame。然后,利用groupby函数将数据按姓名和科目进行分组,并使用agg函数同时应用求和和平均值函数。最后,打印出了分组后的结果,包含了每个分组的成绩总和和平均值。

分组后的结果如下所示:

成绩

sum mean

姓名 科目

张三 数学 90 90

英语 95 95

李四 数学 80 80

英语 75 75

王五 数学 85 85

英语 90 90

从结果中可以看出,数据根据姓名和科目进行了分组,并且分别计算了每个分组的成绩总和和平均值。

在实际应用中,我们可能需要同时应用多个函数,如求和、平均值、计数等。pandas的groupby功能可以很方便地实现这一需求。下面是一个更复杂的示例代码,演示了如何使用groupby函数和多个函数对数据进行分组处理。

python

import pandas as pd

# 创建一个包含姓名、科目和成绩的DataFrame

data = {'姓名': ['张三', '李四', '王五', '张三', '李四', '王五'],

'科目': ['数学', '数学', '数学', '英语', '英语', '英语'],

'成绩': [90, 80, 85, 95, 75, 90]}

df = pd.DataFrame(data)

# 根据姓名和科目进行分组,并同时应用求和、平均值和计数函数

result = df.groupby(['姓名', '科目']).agg({'成绩': ['sum', 'mean', 'count']})

print(result)

以上代码与之前的示例代码类似,只是在agg函数中增加了一个计数函数。运行代码后,可以得到如下的分组结果:

分组后的结果如下所示:

成绩

sum mean count

姓名 科目

张三 数学 90 90 1

英语 95 95 1

李四 数学 80 80 1

英语 75 75 1

王五 数学 85 85 1

英语 90 90 1

从结果中可以看出,除了计算成绩的总和和平均值外,还计算了每个分组的计数。

本文介绍了如何使用pandas的groupby功能,并同时应用多个函数对数据进行分组处理。通过groupby函数,我们可以方便地将数据按照某个或多个列的值进行分组,并对每个分组应用各种函数。这种灵活的功能可以大大简化数据处理和分析的过程,提高工作效率。