第八章 groupby分组是什么?它有什么作用? 深入理解层次化索引

本文详细介绍了Pandas的groupby功能,它用于处理多层次索引数据的统计问题。groupby允许将高维度数据以低维度表示,通过与统计函数结合使用,实现数据的聚合。层次化索引是人为规定的,可以按需求重组数据,便于从不同角度观察。文章通过实例解释了如何使用groupby进行数据分组,并对比了与传统切片操作的差异,强调了groupby在处理高维问题时的便利性和效率。
摘要由CSDN通过智能技术生成

学习到pandas的groupby功能的时候,相当迷惑,这玩意儿干嘛用的?
网上查询了一下,全是具体的用法用列,要么就是从某些书本上“copy”下来的段落,也没清楚明白的讲groupby功能到底是什么。
大概知道它和数据库操作比较类似,可惜我没有学过数据库,因此无法对比参照。
至少我看那些文章,是越看越糊涂,它被发明出来解决什么问题的?
想象一个如下的数据集:

frame=pd.DataFrame(np.arange(12).reshape((4,3)),index=[['a','a','b','b'],[1,2,1,2]],
 columns=[['ohio','ohio','colorado'],['green','red','green']])

这里写图片描述
类似数组中的元素可以是数组,列表中的元素可以是列表的嵌套形式。
DataFrame中的值也可以是DataFrame或者series嵌套。
表现出来的外观就是多重索引,称为层次化索引。
把黄线,红线部分看成一个整体:
这里写图片描述
这个frame就是一个2行2列的dataFrame结构,行索引是’a’,‘b’,列索引是’ohio’,‘colorado’,‘ohio’的值又是一个dataFrame,‘colorado’的值是一个series。
对于frame来说,按照以前学习过的访问方法,也是能够访问的。
比如:

frame['ohio']#取一列
frame.loc['a']#取一行。
frame.loc['a','ohio']['red']  #取a行ohio列之下red列

这里写图片描述
但是当嵌套比较复杂的时候,人很容易犯晕,犯错。
个人理解,python有一个设计理念:

Flat is better than nested
扁平胜于嵌套
当需要处理高纬度数据时,用层次化索引的方式能够以低纬度表示高纬度数据,这个例子就是以2维表示了3维。
但是编写代码的时候ÿ

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值