超实用!用Python快速实现数据分组统计与透视表

勒令课程 2024-03-13 13:48:40

在Python数据分析领域,Pandas库中的GroupBy功能提供了强大的数据分组和聚合能力。通过GroupBy,我们可以根据一个或多个列对DataFrame进行分割、应用函数并重新组合结果,从而实现数据集的深入分析和统计。本文将详细介绍如何使用Pandas GroupBy进行分组统计,并结合实际代码示例展示其应用场景。

GroupBy基础操作

假设我们有一个包含用户购买记录的数据集:

import pandas as pd# 创建一个简单的DataFramedata = {'User': ['Alice', 'Bob', 'Charlie', 'Alice', 'Bob', 'Charlie'], 'Product': ['Apple', 'Banana', 'Orange', 'Apple', 'Banana', 'Orange'], 'Quantity': [3, 2, 1, 4, 5, 3], 'Price': [0.5, 0.25, 0.75, 0.5, 0.25, 0.75]}df = pd.DataFrame(data)print(df)按单一列分组grouped = df.groupby('User')# 计算每个用户的总购买量(Quantity之和)total_quantity = grouped['Quantity'].sum()print(total_quantity)# 计算每个用户的总消费金额(Quantity * Price之和)total_spending = grouped[['Quantity', 'Price']].sum().prod(axis=1)print(total_spending)按多个列分组grouped_multi = df.groupby(['User', 'Product'])# 每个用户对每种产品的购买总量product_purchases = grouped_multi['Quantity'].sum()print(product_purchases)更复杂的分组统计操作

1. 应用自定义函数

# 计算每个用户购买产品种类的数量unique_products_per_user = df.groupby('User')['Product'].nunique()print(unique_products_per_user)

2. 使用agg方法进行多重聚合

# 对每个用户计算购买量的平均值和总和aggregated_stats = df.groupby('User')['Quantity'].agg(['mean', 'sum'])print(aggregated_stats)

3. 分层索引与透视表

# 创建一个带有层次索引的分组统计结果multi_index_grouped = df.groupby(['User', 'Product']).sum()# 将多级索引的结果转换为透视表形式pivot_table = multi_index_grouped.unstack()print(pivot_table)进阶应用及注意事项分组后的过滤操作:可以结合filter()方法,在分组后对满足特定条件的组进行筛选。处理缺失值:在执行分组操作前,应先对数据进行清洗,处理缺失值,以避免影响分组结果。性能优化:对于大型数据集,可利用groupby()配合apply()函数分块处理数据,提高运算效率。总结

Pandas GroupBy功能是数据分析过程中的重要工具,它能够帮助我们从不同维度深入理解数据,发现隐藏的规律和趋势。熟练掌握GroupBy的各种用法,将极大地提升Python Web开发中数据处理的能力,特别是在数据挖掘、报表生成以及机器学习特征工程等场景中发挥关键作用。

关注我,手把手带你快速入门 AI 机器学习编程!

0 阅读:1

勒令课程

简介:感谢大家的关注