Pandas 中的 groupby、apply 和自定义函数的用法

Pandas 中的 groupby、apply 和自定义函数的用法

在本文中,我们将介绍 Pandas 中的 groupby、apply 和自定义函数的用法。Pandas 是一个强大的数据分析工具,通过 groupby 和 apply,我们可以对数据进行分组并应用自定义函数进行处理。

阅读更多:Pandas 教程

分组和聚合

在数据分析中,常常需要根据某一列或几列对数据进行分组,并对每个组进行聚合操作。Pandas 的 groupby 函数可以满足这种需求。首先,我们需要导入 Pandas 库和一个示例数据集,作为本文的数据来源。

import pandas as pd

# 创建示例数据
data = {
    'Name': ['Alice', 'Bob', 'Charlie', 'David', 'Eve'],
    'Gender': ['Female', 'Male', 'Male', 'Male', 'Female'],
    'Age': [25, 30, 35, 40, 45],
    'Salary': [50000, 60000, 70000, 80000, 90000]
}

df = pd.DataFrame(data)

接下来,我们可以使用 groupby 函数将数据按照性别进行分组,并计算每个组的平均薪资。

grouped = df.groupby('Gender')
mean_salary = grouped['Salary'].mean()
print(mean_salary)

输出结果为:

Gender
Female    70000.0
Male      66666.666667
Name: Salary, dtype: float64

可以看到,通过 groupby 函数,我们成功地对数据进行了分组,并计算了每个组的平均薪资。在上述示例中,我们以单个列进行分组,但也可以使用多个列进行分组。

自定义函数

除了使用 Pandas 提供的内置聚合函数(如 mean、sum 等),我们还可以使用自定义函数来对每个组进行处理。我们可以通过 apply 函数将自定义函数应用到每个组上。

下面是一个示例,我们定义一个自定义函数来计算每个组的薪资中位数。

def median_salary(group):
    return group['Salary'].median()

median_salary = grouped.apply(median_salary)
print(median_salary)

输出结果为:

Gender
Female    70000
Male      70000
dtype: int64

可以看到,通过 apply 函数,我们成功地将自定义函数应用到每个组上,并计算了每个组的薪资中位数。

自定义函数示例

接下来,我们将通过一个更复杂的示例来演示如何创建和应用自定义函数。

假设我们有一个包含多个城市销售数据的数据集,其中包括城市名称、销售额和利润。我们希望根据不同城市的销售额和利润,计算每个城市的销售利润率。

首先,我们需要创建示例数据集。

data = {
    'City': ['New York', 'New York', 'Los Angeles', 'Los Angeles', 'Chicago', 'Chicago'],
    'Revenue': [100000, 150000, 200000, 250000, 300000, 350000],
    'Profit': [50000, 75000, 80000, 100000, 120000, 150000]
}

df = pd.DataFrame(data)

接下来,我们定义一个自定义函数来计算销售利润率。

def profit_rate(group):
    group['Profit Rate'] = group['Profit'] / group['Revenue'] * 100
    return group

df = df.groupby('City').apply(profit_rate)
print(df)

输出结果为:

          City  Revenue  Profit  Profit Rate
0     New York   100000   50000    50.000000
1     New York   150000   75000    50.000000
2  Los Angeles   200000   80000    40.000000
3  Los Angeles   250000  100000    40.000000
4  Chicago   300000  120000    40.000000
5  Chicago   350000  150000    42.857143

可以看到,通过定义自定义函数并将其应用于每个组,我们成功地计算出了每个城市的销售利润率并添加到了数据集中。

总结

通过使用 Pandas 的 groupby 和 apply 函数,我们可以方便地对数据进行分组和应用自定义函数进行处理。在本文中,我们介绍了如何使用 groupby 函数进行分组和聚合操作,以及如何使用 apply 函数将自定义函数应用于每个组。

在实际数据分析中,你可能会遇到更复杂的需求和更多的数据处理操作,但基本的 groupby、apply 和自定义函数的概念是相同的。希望本文能为你提供一些帮助,并启发你在使用 Pandas 进行数据分析时的创造力。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程