Pandas groupby
函数以及如何应用自定义函数
在本文中,我们将介绍Pandas中的groupby
函数以及如何应用自定义函数。
阅读更多:Pandas 教程
1. Pandas Groupby简介
Pandas中的groupby
函数是一种用于分组数据并按组应用函数的强大工具。它可以将数据按照某个列或多个列的值进行分组,并对每个组应用特定的函数。
假设我们有一个包含以下列的DataFrame:
import pandas as pd
data = {
'Name': ['Alice', 'Bob', 'Charlie', 'Alice', 'Bob', 'Charlie'],
'Age': [25, 30, 35, 40, 45, 50],
'Salary': [5000, 6000, 7000, 8000, 9000, 10000]
}
df = pd.DataFrame(data)
数据如下所示:
Name | Age | Salary |
---|---|---|
Alice | 25 | 5000 |
Bob | 30 | 6000 |
Charlie | 35 | 7000 |
Alice | 40 | 8000 |
Bob | 45 | 9000 |
Charlie | 50 | 10000 |
我们可以使用groupby
函数按照姓名对数据进行分组,并对每个组应用一些函数。
2. 通过groupby
分组
使用groupby
函数,我们可以根据姓名将数据分组为三个组:Alice、Bob和Charlie。如果我们想根据多个列分组,只需将列名以列表形式传递给groupby
函数即可。
grouped = df.groupby('Name')
我们现在有一个GroupBy
对象,可以应用各种函数。
3. 应用函数
在groupby
对象上可以使用许多不同的函数,如sum()
、mean()
、count()
等。同时,我们还可以通过自定义函数来操作每个组。
3.1 内置函数
以下是一些常用的内置函数示例:
- 计算每个组的平均工资:
average_salary = grouped['Salary'].mean()
结果如下:
Name | Average Salary |
---|---|
Alice | 6500 |
Bob | 7500 |
Charlie | 8500 |
- 计算每个组的最大年龄:
max_age = grouped['Age'].max()
结果如下:
Name | Max Age |
---|---|
Alice | 40 |
Bob | 45 |
Charlie | 50 |
3.2 自定义函数
除了内置函数外,我们还可以使用自定义函数对每个组进行操作。下面是一个示例,我们定义了一个函数calculate_bonus
,根据每个人的年龄和工资计算他们的奖金:
def calculate_bonus(group):
bonus = group['Age'] * 0.1 + group['Salary'] * 0.05
return bonus
custom_function_result = grouped.apply(calculate_bonus)
应用自定义函数后,我们得到以下结果:
Name | Bonus |
---|---|
Alice | 500 |
Bob | 675 |
Charlie | 850 |
总结
通过groupby
函数,我们可以将数据按照某个列或多个列的值分组,并应用各种函数。这使得数据的分组和聚合变得非常简单。同时,我们还可以应用自定义函数,根据每个组的要求进行操作。
希望本文可以帮助你更好地理解Pandas中的groupby
和应用自定义函数的方法。