在Pandas中编写自定义聚合函数可以通过.agg
函数实现,该函数可以接受一个自定义函数作为参数,并在分组操作中调用该函数。下面就来详细介绍如何编写自定义聚合函数。
首先,定义一个简单的数据集:
import pandas as pd
data = {
'name': ['Alice', 'Bob', 'Charlie', 'David', 'Eric', 'Frank', 'Grace'],
'age': [25, 30, 35, 40, 45, 50, 55],
'gender': ['F', 'M', 'M', 'M', 'M', 'F', 'F'],
'income': [5000, 6000, 7000, 8000, 9000, 10000, 11000]
}
df = pd.DataFrame(data)
接下来,我们定义一个聚合函数,计算一个分组的收入总和。聚合函数需要一个参数(分组数据)并返回一个值(聚合结果):
def total_income(group_data):
return group_data['income'].sum()
使用.groupby
函数将数据集按gender
列分组,并使用.agg
函数将自定义聚合函数total_income
应用于每个分组:
grouped = df.groupby('gender')
result = grouped.agg(total_income)
print(result)
输出结果为:
income
gender
F 16000
M 39000
从输出结果可以看出,使用自定义聚合函数成功地计算了每个分组的收入总和。需要注意的是,自定义聚合函数中的聚合逻辑可以随意更改,您可以根据实际需求自由编写。
此外,我们还可以在自定义聚合函数中实现更加复杂的统计逻辑,例如:
def max_income_in_last_two_years(group_data):
year_max = group_data.groupby(group_data['age'] // 2 * 2).max()
return year_max['income'].max()
该函数计算每个分组在过去两年中收入最高的年份的最高收入。可以使用.groupby
函数按照分组数据中的age
列将数据集分组,然后使用.max
函数计算每个年份的最高收入。最后,返回所有年份中的最高收入。
使用.agg
函数将自定义聚合函数应用于每个分组:
grouped = df.groupby('gender')
result = grouped.agg(max_income_in_last_two_years)
print(result)
输出结果为:
income
gender
F 10000
M 9000
从输出结果可以看出,自定义聚合函数成功地计算了每个分组在过去两年中收入最高的年份的最高收入。
总之,在Pandas中编写自定义聚合函数是一个非常有用的技能,可以方便地实现各种统计需求。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:在Pandas中编写自定义聚合函数 - Python技术站