Pandas 数据聚合:深入探索 groupby 与 agg/aggregate 方法

2024年10月14日大时代

在数据分析的广阔领域中,Pandas 无疑是 Python 生态系统中最强大的工具之一。特别是其 groupby 与 agg/aggregate 方法,为数据聚合提供了极大的便利与灵活性。本文将带您深入探索 Pandas 中的这些功能,了解它们如何帮助我们高效地处理和分析数据。

Pandas 数据聚合简介

在 Pandas 中,数据聚合是指将数据按照某些条件进行分组,并对每个组的数据进行汇总计算的过程。这一过程类似于 SQL 中的 GROUP BY 语句,但 Pandas 提供了更为丰富和灵活的聚合函数。

使用 groupby 方法

groupby 方法是 Pandas 中进行数据分组的核心。它允许我们按照一个或多个列的值将数据框(DataFrame)或序列(Series)划分为多个组。每个组都是一个独立的对象,我们可以在这些对象上应用各种聚合函数来计算统计量。

python

import pandas as pd  

# 示例数据  

data = {  

    'Name': ['Alice', 'Bob', 'Carol', 'David', 'Emily', 'Bob', 'Carol'],  

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

    'City': ['Beijing', 'London', 'Paris', 'Tokyo', 'London', 'London', 'Paris'],  

    'Salary': [8000, 6000, 5500, 7000, 4500, 6000, 5500]  

}  

df = pd.DataFrame(data)  

# 按照 'City' 列进行分组  

grouped = df.groupby('City')  

# 对分组后的数据进行迭代  

for city, group in grouped:  

    print(f"City: {city}")  

    print(group)  

    print()

使用 agg/aggregate 方法

agg 和 aggregate 方法用于对分组后的数据进行聚合计算。这两个方法功能相同,只是名称不同。它们接受一个或多个聚合函数作为参数,并返回一个新的 DataFrame 或 Series,其中包含每个组的聚合结果。

Pandas 提供了多种内置的聚合函数,如 mean、sum、count、min、max 等。此外,我们还可以传入自定义函数进行聚合计算。

python

# 使用内置聚合函数  

grouped_stats = df.groupby('City').agg({'Age': 'mean', 'Salary': 'sum'})  

print(grouped_stats)  

# 自定义聚合函数  

def my_mean(values):  

    return values.mean()  

custom_grouped_stats = df.groupby('City').agg({'Age': my_mean, 'Salary': 'sum'})  

print(custom_grouped_stats)  

# 同时传入多个聚合函数  

grouped_multi_stats = df.groupby('City')['Salary'].agg(['mean', 'sum', 'min', 'max'])  

print(grouped_multi_stats)

进阶用法

除了上述基本用法外,Pandas 的 groupby 和 agg/aggregate 方法还支持更复杂的操作。例如,我们可以根据分组结果进一步筛选数据,或者对分组后的数据进行排序。

此外,Pandas 还允许我们根据其他类型的数据(如列表、字典或 Series)进行分组。这种灵活性使得 Pandas 在处理复杂数据时更加得心应手。

全国信息发布网 https://www.tiancebbs.cn
北京信息发布网 https://bj.tiancebbs.cn
上海信息发布网 https://sh.tiancebbs.cn
天津信息发布网 https://tj.tiancebbs.cn
重庆信息发布网 https://cq.tiancebbs.cn
成都信息发布网 https://cd.tiancebbs.cn
全国租赁论坛 http://zulin.china-bbs.com
木木论坛 http://www.china-bbs.com
618论坛 https://bbs.tiancebbs.cn

发表评论

需要后方可评论,如果你还没有账号请点击这里注册

评论总数: