数据聚合和分组运算

本文介绍了Pandas的groupby功能,用于数据分组和聚合操作,包括计算分组摘要统计、分组概述统计、应用组内转换、创建透视表等。讨论了如何按照不同键进行分组,利用apply方法执行自定义函数,以及进行分位数分析和缺失值处理。此外,还提到了透视表的创建和交叉表分析。

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

0.

对所有数据进行分组

然后对每一个组应用一个函数

之后进行分组统计或者生成透视

以上

pd有一个groupby功能  这是上述内容的核心 可以切片、切块、摘要

pd可以进行:

计算分组摘要统计  如计数、平均值、标准差、自定义函数

计算分组概述统计 如数量、平均值、标准差、自定义函数(这俩有啥区别。。)

应用组内转换或其它运算 如规格化、线性回归、排名、选取子集

计算透视表或交叉表

执行分位数分析以及其他统计分组分析

对事件序列数据的聚合  叫做重采样 (chong)

 

1.

groupby机制

在一个指定的轴上进行三步:拆分、应用、合并

特别的,拆分 是沿着一个轴把同样的放在一起 这就进行了分组

分组除了根据上边这个名字,还可以根据长度

如果是字典或是Series 可以按照待分组轴上的值 和分组名的对应关系

也可以用函数处理轴索引或索引中的各个标签

第一个是关键 后三个是快捷方式

 

1.5

按照key1进行分组  计算data1的平均值

这ged就是个groupby类型的对象

这是个Series  他根据data1的分组键a,b进行了聚合产生了新的Series

默认转的是最靠里的那行

所分组的可以不是df里边的内容 

只要等长 其他内容也可以

可以直接出所有内容

key2 不是数值  被称为麻烦列 (我估计是直译的 名字是真的low。。)

这个是size()

可以返回一个 含有多少分组的Series

缺失值会被从结果中除去

叫不叫name group 不重要 都可以迭代

重要的是 会把这个groupby key1的  名字和内容  给分出来

也可以多个键

可以把一个groupby设成字典

可以通过k查v

也可以groupby dtype

然后出来的是一个可迭代的东西

for循环就可以挨个看到

df.groupby(['key1','key2])[['data2]].mean()

就看分组k1k2后data2的平均值

 

1.75

通过字典 对表头分组然后进行拆分

轴需要选择axis=1  不然就是空的了

也可以先转换成Series再进行这个拆分的操作

也可以groupby len                   #就这三个字母len就好了

也可以加一个keylist   然后groupby([len,keylist])

可以分级索引 level关键字传递级别序号或者名字

 

2.

前边有说在一个指定的轴上进行三步:拆分、应用、合并

这个应用 包括一个内容 叫做 聚合

聚合是指从数组产生的标量值的数据转换过程

包括但不限于mean count min sum

 

2.5

这里有一个新的quanlite  样本分位数   就是四分之一分位点那种

定义一个函数然后可以用agg方法    aggregate聚合

ged也可以describe   ged是按照k1 groupby的 

虽然describe不是聚合函数   但也可以做类似聚合函数的操作

 

3.

apply

df.groupby('d1').apply(函数)

这个函数会在df的各个片段调用 然后再由pd.concat组装在一起

apply(函数,函数中的参数n=。。。)

上边的describe()也是这个意思:

f=lambda x:x.describe()

grouped.apply ( lambda x:x.describe() )

 

3.5

分位数  quantile   四分之一分位点

桶分析  bucket  等量的数据

可以用qcut  就能取得样本分位数大小相等的桶

传入labels=False  就可以获得分位数的编号

 

3.75

用特定分组的值填充缺失值

 

4.

透视表叫 pivot table

df有一个pivot_table

pandas也可以添加顶级的pivot_table函数

margins是为分项进行小计

df.pivot_table(index=['d1','d2'])

就出现了这个透视表

然后左边的index是d1 d2  然后其他项都在column

df.pivot_table(['d1','d2'],index='k1',columns='k2')

最上边的column是d1d2 然后下一级是k2

k1是在左边

里边有两个参数

一个是margins 前边有提过

margins=True 就是求和 默认是不求的

aggfunc=len是可以得到有关分组大小的交叉表

还有其他参数

同样的参数  在每一个名字前边加上df的名字.  

可以做出交叉表

pd.crosstab()

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值