Pandas groupby函数以及如何应用自定义函数

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和应用自定义函数的方法。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程