[利用python进行数据分析 书笔记]第9章 数据聚合和分组运算

GroupBy技术

对分组进行迭代groupby对象支持迭代,可以产生一组二元元组(有分组名和数据块组成)
for name,group in df.groupby('key')
选取一个或一组列df.groupby('key1')['data1']   等于  df['data1'].groupby(df['key1'])
以key1为目标分组出data1对应数据
通过字典或Series进行分组mapping = {‘a':'red' , 'b' = 'red' , 'c':'blue'} ----->df.groupby(mapping,axis = 1)  
将原来数据中的a和b分为一组称red,c为一组称blue
通过函数进行分组people.groupby(len)  求取索引中字符串长度的数组
根据索引级别分组df.groupby(level =  )

数据聚合



面向列的多函数应用

grouped = tips.groupby(['sex'])根据sex对tips进行分组
grouped_pct = grouped['tip_pct']
grouped_pct.agg('mean')将函数名以字符串形式传入


以“无索引”的形式返回聚合数据

向groupby传入as_index = False禁用分组建组成的索引


分组级运算和转换

transform方法将一个函数应用到各个分组,然后将结果放置到适当的位置上。
如果各分组产生的是一个标量值,则该值就会被广播出去
def demean(arr) :  return arr - arr.mean()
demeaned = people .groupby(key).transform(demean)
apply方法(拆分——应用——合并)传入apply的函数在DataFrame的各个片段上调用,然后结果由pandas.concat组装到一起,并以分组名称进行标记
def top (df,n=5,column = 'tip_pct'):  return df.sort_index(by = column)[-n:]
tips.groupby('smoker').apply(top,n=1)
传给apply的函数能够接受其他参数或关键字,可以将这些内容放在函数名后面一并传入
group_key = false 传入groupby可禁止分组键


分位数和桶分析

1.  cut和qcut方法根据指定面元或样本分位数将数据拆分成多块
2.  groupby将cut与groupby结合起来就能实现对数据集的桶或分位数分析

透视表和交叉表

透视表pivot_table



交叉表:crosstab



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值