Pandas 如何使用groupby函数来计算分组后的平均值

Pandas 如何使用groupby函数来计算分组后的平均值

阅读更多:Pandas 教程

Pandas简介

Pandas是一个强大的数据分析工具,提供了高性能、易于使用的数据结构和数据分析工具,广泛用于数据处理和数据分析。其中一个常用的功能是使用groupby函数对数据进行分组操作。

数据准备

在开始使用groupby计算平均值之前,我们先准备一份示例数据,以便演示使用。假设我们有一个员工信息表,包含员工姓名、所在部门和薪水。

import pandas as pd

# 创建示例数据
data = {'姓名': ['张三', '李四', '王五', '赵六', '钱七', '孙八'],
        '部门': ['技术部', '技术部', '人力资源部', '人力资源部', '市场部', '市场部'],
        '薪水': [8000, 9000, 7000, 8000, 10000, 11000]}

df = pd.DataFrame(data)
print(df)

运行以上代码,可以得到如下员工信息表:

姓名 部门 薪水
张三 技术部 8000
李四 技术部 9000
王五 人力资源部 7000
赵六 人力资源部 8000
钱七 市场部 10000
孙八 市场部 11000

我们将使用groupby函数按照部门进行分组,并计算每个部门的平均薪水。

使用groupby计算平均值

要使用groupby计算平均值,我们需要两个步骤:首先是按照指定的列进行分组,然后对分组后的数据进行聚合计算。

# 按照部门进行分组
grouped = df.groupby('部门')

# 计算平均薪水
average_salary = grouped['薪水'].mean()
print(average_salary)

在上面的代码中,我们首先使用groupby函数按照部门进行分组,然后通过指定列名“薪水”来计算平均值。运行以上代码,可以得到如下结果:

部门 均值
技术部 8500.0
人力资源部 7500.0
市场部 10500.0

我们可以看到,通过groupby函数,我们成功地按照部门分组,并计算了每个部门的平均薪水。

按多个列进行分组

除了可以按照单个列进行分组外,我们还可以按照多个列进行分组。这样可以更加细致地划分数据。

# 按照部门和姓名进行分组
grouped = df.groupby(['部门', '姓名'])

# 计算平均薪水
average_salary = grouped['薪水'].mean()
print(average_salary)

在上面的代码中,我们通过传入一个包含多个列名称的列表[‘部门’, ‘姓名’]来按照部门和姓名进行分组。运行以上代码,可以得到如下结果:

部门 姓名 均值
人力资源部 赵六 8000.0
王五 7000.0
技术部 | 部门 | 姓名 | 均值
———- —- | ——-
张三 技术部 | 8000.0
李四 技术部 | 9000.0
市场部 钱七 市场部 | 10000.0
孙八 市场部 | 11000.0

我们可以看到,通过传入多个列名称的列表进行分组后,我们成功地计算了每个部门中各个员工的平均薪水。

重命名计算结果的列名

在上面的例子中,我们计算的结果列名默认为被计算的列名。如果我们希望自定义计算结果的列名,可以使用rename函数进行重命名。

# 按照部门进行分组
grouped = df.groupby('部门')

# 计算平均薪水并重命名列名为"平均薪水"
average_salary = grouped['薪水'].mean().rename('平均薪水')
print(average_salary)

在上面的代码中,我们使用rename函数将计算结果的列名从默认的”薪水”修改为”平均薪水”。运行以上代码,可以得到如下结果:

部门 平均薪水
技术部 8500.0
人力资源部 7500.0
市场部 10500.0

使用agg函数进行多列操作

除了计算平均值外,我们还可以在groupby后使用agg函数进行多列操作,包括计算多个统计量等。

# 按照部门进行分组
grouped = df.groupby('部门')

# 计算平均薪水和最高薪水
statistics = grouped['薪水'].agg(['mean', 'max'])
print(statistics)

在上面的代码中,我们使用agg函数同时计算平均薪水和最高薪水。运行以上代码,可以得到如下结果:

部门 mean max
技术部 8500.0 9000
人力资源部 7500.0 8000
市场部 10500.0 11000

我们可以看到,通过使用agg函数,我们成功地计算了每个部门的平均薪水和最高薪水。

过滤分组后的数据

除了计算聚合值外,我们还可以根据特定条件过滤分组后的数据。

# 按照部门进行分组
grouped = df.groupby('部门')

# 过滤出薪水高于8000的数据
filtered_data = grouped.filter(lambda x: x['薪水'].mean() > 8000)
print(filtered_data)

在上面的代码中,我们使用filter函数过滤出薪水高于8000的数据。运行以上代码,可以得到如下结果:

姓名 部门 薪水
张三 技术部 8000
李四 技术部 9000
钱七 市场部 10000
孙八 市场部 11000

我们可以看到,通过使用filter函数,我们成功地过滤出了薪水高于8000的数据。

总结

通过本文,我们学习了如何使用Pandas中的groupby函数来计算分组后的平均值。我们学习了以下几个方面:

  1. 使用groupby函数按照指定列进行分组操作,可以根据不同的需求进行数据的划分。
  2. 通过在groupby函数中指定需要聚合计算的列,可以使用mean()函数计算平均值。
  3. 可以按照一个或多个列进行分组,细化数据的划分。
  4. 可以使用rename函数对计算结果的列名进行重命名,使结果更加清晰明了。
  5. 使用agg函数可以进行多列操作,计算多个统计量等。
  6. 可以使用filter函数对分组后的数据进行过滤,根据特定条件筛选所需数据。

以上是关于在Pandas中使用groupby函数计算分组后的平均值的介绍。希望本文对你学习和理解Pandas的groupby函数有所帮助。通过这些方法,你可以对数据进行灵活的分组和计算,为数据分析提供有力的支持。祝你在数据分析的道路上越走越远!

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程