Pandas 分组聚合操作详解
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 分组聚合操作详解的更多相关文章
- Pandas 常见操作详解
Pandas 常见操作详解 很多人有误解,总以为Pandas跟熊猫有点关系,跟gui叔创建Python一样觉得Pandas是某某奇葩程序员喜欢熊猫就以此命名,简单介绍一下,Pandas的命名来自于面板 ...
- Django框架 之 ORM查询操作详解
Django框架 之 ORM查询操作详解 浏览目录 一般操作 ForeignKey操作 ManyToManyField 聚合查询 分组查询 F查询和Q查询 事务 Django终端打印SQL语句 在Py ...
- [Android新手区] SQLite 操作详解--SQL语法
该文章完全摘自转自:北大青鸟[Android新手区] SQLite 操作详解--SQL语法 :http://home.bdqn.cn/thread-49363-1-1.html SQLite库可以解 ...
- MySQL 操作详解
MySQL 操作详解 一.实验简介 本节实验中学习并实践 MySQL 上创建数据库.创建表.查找信息等详细的语法及参数使用方法. 二.创建并使用数据库 1. 创建并选择数据库 使用SHOW语句找出服务 ...
- python/ORM操作详解
一.python/ORM操作详解 ===================增==================== models.UserInfo.objects.create(title='alex ...
- Linq实战 之 DataSet操作详解
Linq实战 之 DataSet操作详解 一:linq to Ado.Net 1. linq为什么要扩展ado.net,原因在于给既有代码增加福利.FCL中在ado.net上扩展了一些方法. 简单一 ...
- nosql Redis命令操作详解
Redis命令操作详解 一.key pattern 查询相应的key (1)redis允许模糊查询key 有3个通配符 *.?.[] (2)randomkey:返回随机key (3)type key: ...
- MongoDB各种查询操作详解
这篇文章主要介绍了MongoDB各种查询操作详解,包括比较查询.关联查询.数组查询等,需要的朋友可以参考下 一.find操作 MongoDB中使用find来进行查询,通过指定find的第一个参数可 ...
- Linux Shell数组常用操作详解
Linux Shell数组常用操作详解 1数组定义: declare -a 数组名 数组名=(元素1 元素2 元素3 ) declare -a array array=( ) 数组用小括号括起,数组元 ...
- shell字符串操作详解
shell字符串操作详解的相关资料. 1.shell变量声明的判断 表达式 含义 ${var} 变量var的值, 与$var相同 ${var-DEFAULT} 如果var没有被声明, 那么就以$DE ...
随机推荐
- linux top中 VSS,RSS,PSS,USS 4个字段的解读
参考文章:linux中top命令 VSS,RSS,PSS,USS 四个内存字段的解读
- React:TypeError: Cannot read properties of undefined (reading 'map')
解决方案 js中?问号代表可选项 可选链式操作符 参考链接 https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Oper ...
- @ControllerAdvice 注解使用及原理探究
最近在新项目的开发过程中,遇到了个问题,需要将一些异常的业务流程返回给前端,需要提供给前端不同的响应码,前端再在次基础上做提示语言的国际化适配.这些异常流程涉及业务层和控制层的各个地方,如果每个地方都 ...
- OpenLayers示例
http://develop.smaryun.com:81/API/JS/OL3InterfaceDemo/index.htm
- Vu3+Element-Plus根据路由配置生成菜单导航栏
先看效果,整体界面结构如下 点击左侧菜单栏,右侧切换显示不同页面内容. Vue3使用路由–南河小站 1 路由配置 路由配置如下: const routes = [ { path: "&quo ...
- 记一次Android项目升级Kotlin版本(1.5 -> 1.7)
原文地址: 记一次Android项目升级Kotlin版本(1.5 -> 1.7) - Stars-One的杂货小窝 由于自己的历史项目Kotlin版本比较老了,之前已经升级过一次了(1.4-&g ...
- 产品代码都给你看了,可别再说不会DDD(二):DDD概念大白话
这是一个讲解DDD落地的文章系列,作者是<实现领域驱动设计>的译者滕云.本文章系列以一个真实的并已成功上线的软件项目--码如云(https://www.mryqr.com)为例,系统性地讲 ...
- 【HCDG城市行东莞站】松山湖开发者村助力企业释放数字新动能
本文分享自华为云社区<[HCDG城市行东莞站]从"数据治理"洞察"数字化运营之道",松山湖开发者村助力企业释放数字新动能!>,作者:华为云社区精选. ...
- 深入理解Linux内核——内存管理(4)——伙伴系统(1)
提要:本系列文章主要参考MIT 6.828课程以及两本书籍<深入理解Linux内核> <深入Linux内核架构>对Linux内核内容进行总结. 内存管理的实现覆盖了多个领域: ...
- 想让你的工作轻松高效吗?揭秘Java + React导出Excel/PDF的绝妙技巧!
前言 在B/S架构中,服务端导出是一种高效的方式.它将导出的逻辑放在服务端,前端仅需发起请求即可.通过在服务端完成导出后,前端再下载文件完成整个导出过程.服务端导出具有许多优点,如数据安全.适用于大规 ...