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 进行数据分析时的创造力。