pandas 中的 groupby 对于不同的列具有不同的功能

pandas

1个回答

写回答

17301591102

2025-07-09 16:55

+ 关注

Pandas
Pandas

<Pandas> 是一个强大的数据分析工具,可以用来处理和分析大型数据集。其中的 groupby 函数可用于按照指定的列对数据进行分组,然后对每个分组应用不同的功能。这使得我们可以轻松地统计、汇总和分析数据。

基本概念

在使用 groupby 前,让我们先了解一些基本概念。数据可以被分为两类,一类是分组依据(grouping key),另一类是被分组的数据。分组依据可以是单个列,也可以是多个列的组合。被分组的数据可以是单个列,也可以是多个列。

分组依据的类型

分组依据可以是以下几种类型之一:

1. 列名:可以直接使用列名作为分组依据。例如,可以使用 df.groupby('column_name') 对数据按照指定列进行分组。

2. 函数:可以使用函数对列的值进行处理后作为分组依据。例如,可以使用 df.groupby(lambda x: x % 2) 对数据进行奇偶分组。

3. 字典或 Series:可以使用字典或 Series 对象作为分组依据。字典的键将被用作分组依据,字典的值将被用作新的列名。例如,可以使用 df.groupby({'column_name': 'new_column_name'}) 对数据进行分组,并将新的列名作为结果的一部分。

应用不同的功能

一旦数据被分组,我们可以对每个分组应用不同的功能。这些功能可以是统计函数(如求和、平均值、最大值等),也可以是自定义函数。

统计函数

Pandas 提供了一些内置的统计函数,可以直接应用于分组数据。例如:

1. sum():计算分组后的总和。

2. mean():计算分组后的平均值。

3. max():计算分组后的最大值。

4. min():计算分组后的最小值。

5. count():计算每个分组中的元素数量。

6. size():计算每个分组中的元素数量,包括缺失值。

下面是一个简单的示例代码,演示如何对数据进行分组并应用统计函数:

Python

import Pandas as pd

# 创建示例数据

data = {'Name': ['Alice', 'Bob', 'Charlie', 'Alice', 'Bob', 'Charlie'],

'Age': [25, 30, 35, 40, 45, 50],

'Salary': [50000, 60000, 70000, 80000, 90000, 100000]}

df = pd.DataFrame(data)

# 按照 'Name' 列进行分组,并计算每个分组的平均薪资

average_salary = df.groupby('Name')['Salary'].mean()

print(average_salary)

输出结果为:

Name

Alice 65000

Bob 75000

Charlie 85000

Name: Salary, dtype: int64

上述代码中,我们首先创建了一个包含姓名、年龄和薪资的示例数据框。然后,我们使用 groupby 对数据按照 'Name' 列进行分组,并计算每个分组的平均薪资。最后,我们打印出结果。

自定义函数

除了内置的统计函数外,我们还可以使用自定义函数对分组数据进行处理。自定义函数可以是任何函数,只要它接受一个数据集作为输入,并返回一个结果。

下面是一个示例代码,演示如何使用自定义函数对数据进行分组并应用:

Python

import Pandas as pd

# 创建示例数据

data = {'Name': ['Alice', 'Bob', 'Charlie', 'Alice', 'Bob', 'Charlie'],

'Age': [25, 30, 35, 40, 45, 50],

'Salary': [50000, 60000, 70000, 80000, 90000, 100000]}

df = pd.DataFrame(data)

# 自定义函数,计算每个分组的薪资增长率

def salary_growth_rate(group):

return (group['Salary'].max() - group['Salary'].min()) / group['Salary'].min()

# 按照 'Name' 列进行分组,并应用自定义函数

growth_rate = df.groupby('Name').apply(salary_growth_rate)

print(growth_rate)

输出结果为:

Name

Alice 0.6

Bob 0.5

Charlie 0.428571

dtype: float64

上述代码中,我们首先创建了一个包含姓名、年龄和薪资的示例数据框。然后,我们定义了一个自定义函数 salary_growth_rate,它计算每个分组的薪资增长率。最后,我们使用 groupby 和 apply 对数据进行分组并应用自定义函数,得到每个分组的薪资增长率。

通过使用 groupby 函数,我们可以轻松地对数据进行分组并应用不同的统计函数或自定义函数。这使得我们能够更好地理解和分析数据,并从中获取有价值的信息。无论是进行数据汇总、统计还是进行更复杂的分析,groupby 都是一个非常有用的工具。

希望本文能帮助你更好地理解 groupby 在 Pandas 中的功能,并在实际的数据分析中得到应用。

举报有用(4)分享收藏

Copyright © 2025 IZhiDa.com All Rights Reserved.

知答 版权所有 粤ICP备2023042255号