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. Linux 中设备的分类及网络设备接口路径

    设备分类 字符设备 块设备 网络设备 参考文档: 手把手教Linux驱动 网络设备位置 [root@localhost ~]# cd /sys/class/net/ [root@localhost n ...

  2. java读取txt文件解决乱码问题

    说明:由于txt文件有bom和不同的编码方式,导致导入数据时产生乱码,以下代码完美解决乱码问题. 参考他人代码,结合自己的业务加工完成,费了大半天功夫完成,希望对大家有点用处. 废话不多说,直接上代码 ...

  3. 【解惑】介绍三大数据库的with语句的写法及使用场景

    WITH 子句通常被称为 "Common Table Expressions"(CTE),俗称内存临时表,当使用 WITH 语句时,应注意具体的数据库版本和支持情况.以下是对 My ...

  4. 学好Elasticsearch系列-索引的批量操作

    本文已收录至 Github,推荐阅读 Java 随想录 微信公众号:Java 随想录 先看后赞,养成习惯. 点赞收藏,人生辉煌. 目录 基于 mget 的批量查询 基于 bulk 的批量增删改 增加 ...

  5. mybatis-plus+nacos配置中心和服务发现保姆级教程

    默认你已经看了我的Mybatis-Plus+Mysql的教程,现在有了一个简单的项目如下(之前的教程:  https://www.cnblogs.com/leafstar/p/17638741.htm ...

  6. ThreadLocal的学习心得

    ThreadLocal是Java提供的线程本地存储机制,可以实现多线程环境下数据的隔离.主要特点是: 每个线程都有自己的实例副本,实现了线程的数据隔离.ThreadLocal中存储的值对其他线程都不可 ...

  7. Java爬虫实战系列——常用的Java网络爬虫库

    常用的Java网络爬虫库 Java 开发语言是业界使用最广泛的开发语言之一,在互联网从业者中具有广泛的使用者,Java 网络爬虫可以帮助 Java 开发人员以快速.简单但广泛的方式为各种目的抓取数据. ...

  8. 如何使用Grid中的repeat函数

    在本文中,我们将探索 CSS Grid repeat() 函数的所有可能性,它允许我们高效地创建 Grid 列和行的模式,甚至无需媒体查询就可以创建响应式布局. 不要重复自己 通过 grid-temp ...

  9. vscod 配置 morkdown 快捷键

    vscod 配置 morkdown 快捷键 1.首先在根目录添加.vscode 文件夹 ️1.1 新建一个 settings.json 文件 { "[markdown]": { & ...

  10. 小知识:OCI实例的私钥文件权限

    在OCI上创建新的实例时,会提示你保存私钥用于连接,而且该界面不会再次显示,所以一定要保存好这个私钥. 实例创建完成后,当使用保存的私钥进行连接时,却发现由于私钥文件的权限问题无法连接,查看当前私钥文 ...