Pandas 分组聚合操作详解

Pandas 是 Python 中用于数据分析的重要工具,它提供了丰富的数据操作方法。在数据分析过程中,经常需要对数据进行分组聚合操作。本文将介绍 Pandas 中的数据分组方法以及不同的聚合操作,并结合代码示例进行说明。

完整Excel数据

读取数据并进行简单分组

首先,我们通过 Pandas 读取 Excel 文件,并使用单个列进行分组,并应用聚合函数。示例代码如下:

复制代码
df1 = pd.read_excel('C:\\Users\\liuchunlin2\\Desktop\\数据1.xlsx')
df = df1.groupby('店铺名称', as_index=False).sum()
print(df)

多列分组及聚合函数应用

接着,我们演示了如何使用多个列进行分组,并应用聚合函数:

复制代码
df2 = df1.groupby(['店铺名称','订单号'], as_index=False).sum()
print(df2)

自定义聚合函数的应用

在这个示例中,我们定义了一个自定义聚合函数 custom_agg,并将其应用在分组聚合操作中:

复制代码
def custom_agg(x):
    return x.max() - x.min()

result = df1.groupby('店铺名称', as_index=False)['销售数量'].agg(custom_agg)
print(result)

同时应用多个聚合函数

我们还可以同时应用多个聚合函数,示例如下:

复制代码
df3 = df1.groupby('店铺名称', as_index=False).agg({'销售数量': 'sum', '销售金额': 'mean'})
print(df3)

迭代分组

Pandas 支持迭代分组的操作,通过以下示例可以看到迭代分组的效果:

复制代码
for group, data in df1.groupby('店铺名称'):
    print(group)  # 分组的键值
    print(data)  # 所有属于该分组的数据

条件过滤

根据条件过滤分组:

复制代码
df4 = df1.groupby('店铺名称').filter(lambda x: x['销售金额'].sum() > 300)
print(df4)

转换分组及分组排序

最后,我们演示了分组数据的转换以及分组排序的操作:

复制代码
df1['NewColumn'] = df1.groupby('店铺名称')['销售数量'].transform(lambda x:x.sum())
print(df1)

排序

复制代码
df5 = df1.groupby('店铺名称').sum().sort_values('销售数量', ascending=True)
print(df5)

以上就是关于 Pandas 分组聚合操作的详细介绍,通过这些示例代码和解释,相信读者对 Pandas 中的分组聚合操作有了更深入的理解。

总结:在数据分析中,对数据进行分组聚合是一项常见且重要的操作,Pandas 提供了丰富的功能来实现这一目的,包括单列分组、多列分组、自定义聚合函数、迭代分组、数据导出、条件过滤、分组转换以及分组排序等操作,能够满足大部分数据分析需求。

完整代码

复制代码
import pandas as pd
import numpy as np

# 读取两个 Excel 文件
df1 = pd.read_excel('C:\\Users\\liuchunlin2\\Desktop\\数据1.xlsx')

#使用单个列进行分组,并应用聚合函数
df=df1.groupby('店铺名称', as_index=False).sum()
#df=df1.groupby('店铺名称', as_index=False).aggregate({'销售数量': 'sum'})
print(df)

#使用多个列进行分组,并应用聚合函数:
df2=df1.groupby(['店铺名称','订单号'], as_index=False).sum()
print(df2)

# 定义自定义聚合函数
def custom_agg(x):
    return x.max() - x.min()
# 使用自定义聚合函数对 'Column2' 进行聚合
result = df1.groupby('店铺名称', as_index=False)['销售数量'].agg(custom_agg)
print(result)

# 同时应用多个聚合函数
df3=df1.groupby('店铺名称', as_index=False).agg({'销售数量': 'sum', '销售金额': 'mean'})
print(df3)

# 迭代分组
for group, data in df1.groupby('店铺名称'):
    print(group)  # 分组的键值
    print(data)  # 所有属于该分组的数据

df3.to_excel('merged.xlsx', index=False)
print('这是一条数据分割线')

#根据条件过滤分组
df4=df1.groupby('店铺名称').filter(lambda x: x['销售金额'].sum() > 300)
print(df4)

#转换分组
df1['NewColumn'] = df1.groupby('店铺名称')['销售数量'].transform(lambda x:x.sum())  # 对 'Column2' 在每个分组内进行转换操作
#df=df1.groupby('店铺名称', as_index=False)['销售数量'].transform('sum')
print(df1)

#分组排序
df5=df1.groupby('店铺名称').sum().sort_values('销售数量', ascending=True)  # ascending=True 升序 ascending=False 降序
print(df5)
相关推荐
蓝婷儿22 分钟前
6个月Python学习计划 Day 16 - 面向对象编程(OOP)基础
开发语言·python·学习
chao_7891 小时前
链表题解——两两交换链表中的节点【LeetCode】
数据结构·python·leetcode·链表
大霞上仙2 小时前
nonlocal 与global关键字
开发语言·python
Mark_Aussie2 小时前
Flask-SQLAlchemy使用小结
python·flask
程序员阿龙2 小时前
【精选】计算机毕业设计Python Flask海口天气数据分析可视化系统 气象数据采集处理 天气趋势图表展示 数据可视化平台源码+论文+PPT+讲解
python·flask·课程设计·数据可视化系统·天气数据分析·海口气象数据·pandas 数据处理
ZHOU_WUYI2 小时前
Flask与Celery 项目应用(shared_task使用)
后端·python·flask
且慢.5893 小时前
Python_day47
python·深度学习·计算机视觉
佩奇的技术笔记3 小时前
Python入门手册:异常处理
python
大写-凌祁3 小时前
论文阅读:HySCDG生成式数据处理流程
论文阅读·人工智能·笔记·python·机器学习
爱喝喜茶爱吃烤冷面的小黑黑3 小时前
小黑一层层削苹果皮式大模型应用探索:langchain中智能体思考和执行工具的demo
python·langchain·代理模式