学习到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维。
但是编写代码的时候ÿ