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

读取数据并进行简单分组

首先,我们通过 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)

Pandas 分组聚合操作详解的更多相关文章

  1. Pandas 常见操作详解

    Pandas 常见操作详解 很多人有误解,总以为Pandas跟熊猫有点关系,跟gui叔创建Python一样觉得Pandas是某某奇葩程序员喜欢熊猫就以此命名,简单介绍一下,Pandas的命名来自于面板 ...

  2. Django框架 之 ORM查询操作详解

    Django框架 之 ORM查询操作详解 浏览目录 一般操作 ForeignKey操作 ManyToManyField 聚合查询 分组查询 F查询和Q查询 事务 Django终端打印SQL语句 在Py ...

  3. [Android新手区] SQLite 操作详解--SQL语法

    该文章完全摘自转自:北大青鸟[Android新手区] SQLite 操作详解--SQL语法  :http://home.bdqn.cn/thread-49363-1-1.html SQLite库可以解 ...

  4. MySQL 操作详解

    MySQL 操作详解 一.实验简介 本节实验中学习并实践 MySQL 上创建数据库.创建表.查找信息等详细的语法及参数使用方法. 二.创建并使用数据库 1. 创建并选择数据库 使用SHOW语句找出服务 ...

  5. python/ORM操作详解

    一.python/ORM操作详解 ===================增==================== models.UserInfo.objects.create(title='alex ...

  6. Linq实战 之 DataSet操作详解

    Linq实战 之 DataSet操作详解  一:linq to Ado.Net 1. linq为什么要扩展ado.net,原因在于给既有代码增加福利.FCL中在ado.net上扩展了一些方法. 简单一 ...

  7. nosql Redis命令操作详解

    Redis命令操作详解 一.key pattern 查询相应的key (1)redis允许模糊查询key 有3个通配符 *.?.[] (2)randomkey:返回随机key (3)type key: ...

  8. MongoDB各种查询操作详解

    这篇文章主要介绍了MongoDB各种查询操作详解,包括比较查询.关联查询.数组查询等,需要的朋友可以参考下   一.find操作 MongoDB中使用find来进行查询,通过指定find的第一个参数可 ...

  9. Linux Shell数组常用操作详解

    Linux Shell数组常用操作详解 1数组定义: declare -a 数组名 数组名=(元素1 元素2 元素3 ) declare -a array array=( ) 数组用小括号括起,数组元 ...

  10. shell字符串操作详解

    shell字符串操作详解的相关资料. 1.shell变量声明的判断  表达式 含义 ${var} 变量var的值, 与$var相同 ${var-DEFAULT} 如果var没有被声明, 那么就以$DE ...

随机推荐

  1. 【go语言】2.4.1 如何导入和使用包

    在 Go 语言中,包(package)是代码的组织方式.每个 Go 程序都由包构成,程序从 main 包开始运行. 导入包 使用 import 关键字可以导入包.导入的包可以是 Go 标准库中的包,也 ...

  2. django.core.exceptions.ImproperlyConfigured: Specifying a namespace in include() without providing an app_name is not supported.

    django.core.exceptions.ImproperlyConfigured: Specifying a namespace in include() without providing a ...

  3. C++ 核心指南之 C++ P.哲学/基本理念(上)

    C++ 核心指南(C++ Core Guidelines)是由 Bjarne Stroustrup.Herb Sutter 等顶尖 C+ 专家创建的一份 C++ 指南.规则及最佳实践.旨在帮助大家正确 ...

  4. 【入门教程】3202年了,还有人没用stable diffusion画过自己的AI小姐姐吗。

    个人绘画作品: 说明 本文主要是讲一下如何安装.使用整合包,以及介绍画真人图片的大模型(介绍的整合包只提供二次元模型,个人不太感兴趣) 通过最简单的介绍帮助大家快速入门,开始画图,不会深入的进行讲解, ...

  5. HTTPS 是这样握手的

    HTTP协议默认是明文传输,存在一定的安全隐患,容易被中间人窃听和攻击,在 加密解决HTTP协议带来的安全问题 中提到使用哈希.对称加密.非对称加密等方式对数据加密,能解决数据安全的问题. 以上加密方 ...

  6. Hi3798MV200 恩兔N2 NS-1 (二): HiNAS海纳思使用和修改

    目录 Hi3798MV200 恩兔N2 NS-1 (一): 设备介绍和刷机说明 Hi3798MV200 恩兔N2 NS-1 (二): HiNAS海纳思使用和修改 Hi3798MV200 恩兔N2 NS ...

  7. 基于Word2Vec的诗词生成器

    基于Word2Vec制作的诗词生成器 1.什么是Word2Vec? Word2vec 是 Word Embedding 方式之一,属于 NLP 领域.它是从大量文本预料中以无监督方式学习语义知识的模型 ...

  8. Programming abstractions in C阅读笔记:p127-p129

    <Programming Abstractions In C>学习第51天,p127-p129,总结如下: 一.技术总结 1. string library 掌握常用函数如strlen,s ...

  9. Vue源码学习(三):<templete>渲染第二步,创建ast语法树

    好家伙,书接上回   在上一篇Vue源码学习(二):<templete>渲染第一步,模板解析中,我们完成了模板解析 现在我们继续,将模板解析的转换为ast语法树   1.前情提要 代码已开 ...

  10. LVS DR模式负载均衡群集部署

    LVS DR模式负载均衡群集部署 1 LVS-DR 模式的特点 直接路由直接路由 调节器仅作为客户端的访问入口,节点服务器的响应消息是直接返回客户端的,不需要经过调节器(与NAT模式的区别)节点服务器 ...