数据的分组运算(GroupBy)——基础篇

本文介绍Pandas中分组运算的基本使用方法,包括Series和DataFrame的分组、GroupBy对象的使用、依据不同条件进行分组及分组后的运算操作等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

分组运算的标准术语**“拆分—应用—合并”(split-apply-combine)**,具体如下图,
在这里插入图片描述
pandas对象的分组与聚合使用的是 groupby方法

参数解读

在这里插入图片描述
在这里插入图片描述

基本使用

首先构建如下DataFrame对象,
在这里插入图片描述

1)Series分组

使用 key1 这一列对 data1 这一列进行分组,通过by参数将 key1 这一列传入,
在这里插入图片描述
这个GroupBy对象只包含了分组的中间数据,具有进一步分组进行运算的能力。
在这里插入图片描述
聚合得到的是一个索引为key1列唯一值,索引列名也为“key1”的对象,groupby方法同样支持根据多个不同的列进行分组
在这里插入图片描述
根据多个列进行分组后得到的是层次化索引,可以看做是两列不同元素之间构成的笛卡尔积。可以使用unstack方法去除堆叠,
在这里插入图片描述
分组也支持使用长度与DataFrame行数等长的numpy数组、列表进行分组,
在这里插入图片描述

2)DataFrame的分组

依旧使用最开始构建的DataFrame,
在这里插入图片描述
使用一列或多列对DataFrame进行分组的方式与Series分组方式是相同的。
在这里插入图片描述

GroupBy对象size方法

GroupBy对象的size方法有时候是很有用的,它能返回各个分组的大小,
在这里插入图片描述
在这里插入图片描述

分组进行迭代

groupby方法产生的GroupBy对象支持迭代,产生一组二元tuple,
在这里插入图片描述
在这里插入图片描述
如果是多个列同时进行分组,则GroupBy对象的tuple的第一个元素是个tuple,
在这里插入图片描述

依据每列数据类型进行分组

使用dtype对列进行分组,
在这里插入图片描述
因为是按列进行分组,所以是在水平方向上进行拆分。故axis参数值为1。

分组后选取一个或一组列进行运算

选取一列进行运算,
在这里插入图片描述
上面的一行代码实际上可以分为两步进行理解,
在这里插入图片描述

使用字典或者Series进行分组

除了numpy数组,分组的信息还可以以其他形式存在。不同于numpy数组,字典和Series不要求一定与Dataframe或者Series等长,通过键值和索引匹配即可,

1)字典形式进行分组

在这里插入图片描述
创建一个用于分组的字典,字典的键值可以不与DataFrame的列名数目相等,
在这里插入图片描述
在这里插入图片描述

2)Series形式进行分组

在这里插入图片描述
在这里插入图片描述

通过函数进行分组

任何用于分组的函数都会在各个索引上执行一次,函数返回值会被用作分组的名称,
在这里插入图片描述
使用 len方法对DataFrame进行分组,
在这里插入图片描述
在这里插入图片描述
函数与数组、字典、列表、Series等序列混合使用,
在这里插入图片描述
混合使用后生成的是层次化索引。

依据索引级别进行分组

当Dataframe和Series存在层级化索引时,使用 groupby方法的 level参数可以指定使用哪一层索引进行分组,
在这里插入图片描述
上面的代码依据 cty 这一层列索引将DataFrame在水平方向上进行分组。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值