python dataframe groupby_Python学习笔记(4)— 数据聚合和分组运算

6518d0786272259135b0557f95909827.png

本文是作者学习《利用Python进行数据分析》第二版,数据聚合和分组运算章节的学习笔记。

如果想要掌握建议过一遍代码并尝试改变代码和思考原理。

本章知识点

36d19235d584089918b2295bbe054124.png

代码

import 

1、GroupBy机制

例如,DataFrame可以 在其行(axis=0)或列(axis=1)上进行分组。然后,将一个函数应用(apply)到 各个分组并产生一个新值。最后,所有这些函数的执行结果会被合并(combine) 到最终的结果对象中。结果对象的形式一般取决于数据上所执行的操作。

df 

data1 data2 key1 a 1.666667 11.666667 b 2.500000 12.500000

grouped

data1 data2 key2 key1 a 3 3 3 b 2 2 2

means 

实际上,分组键可以是任何长度适当的数组(其实就是一一对应的)

states 

注意,任何分组关键词中的缺失值,都会被从结果中除去。

df1 

对分组进行迭代

for 

对于多重键的情况,元组的第一个元素将会是由键值组成的元组

for 

将这些数据片段做成一个字典

print

选取一列或者列的子集

对于由DataFrame产生的GroupBy对象,如果用一个(单个字符串)或一组(字符 串数组)列名对其进行索引,就能实现选取部分列进行聚合的目的。

## 生成一个GroupBy对象

通过字典或Series进行分组

people 

现在,假设已知列的分组关系,并希望根据分组计算列的和

mapping 

通过函数进行分组

print

根据索引级别分组

print

2、数据聚合

count,sum,mean,median,std,var,min,max,prod,first,last

如果要使用你自己的聚合函数,只需将其传入aggregate或agg方法即可

笔记:自定义聚合函数要比表10-1中那些经过优化的函数慢得多。这是因为在 构造中间分组数据块时存在非常大的开销(函数调用、数据重排等)

def 

如果传入一组函数或函数名,得到的DataFrame的列就会以相应的函数命名

print

现在,假设你想要对一个列或不同的列应用不同的函数。具体的办法是向agg传入 一个从列名映射到函数的字典

print

以“没有行索引”的形式返回聚合数据

print

3、apply 一般性的拆分-应用-合并(apply和age的区别,apply是对整个分组df进行操作,age是对某一列)

tips 

如果传给apply的函数能够接受其他参数或关键字,则可以将这些内容放在函数名后 面一并传入

print

禁止分组键

print

分位数和桶分析

frame 

由cut返回的Categorical对象可直接传递到groupby。

def 

4、透视表和交叉表

回到小费数据集,假设我想要根据day和smoker计算分组平均数(pivot_table的默 认聚合类型)

print
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值