数据分析—学会用pandas做多层索引

数据分析—学会用pandas做多层索引,第1张

【导语】Pandas库的名字来源于3种主要数据结构开头字母的缩写:Panel,Dataframe,Series。其中Series表示一维数据,Dataframe表示二维数据,Panel表示三维数据。当数据高于二维时,一般却不用 Panel 表示,为什么呢?如果不用 Panel,又该怎么做呢?

实际上,当数据高于二维时,我们一般用包含多层索引的Dataframe进行表示,而不是使用Panel。原因是使用多层级索引展示数据更加直观, *** 作数据更加灵活,并且可以表示3维,4维乃至任意维度的数据。具体要怎么做呢?下面就从多层级索引的创建、取值与排序等内容教大家一些方法!

直接使⽤index参数创建 在使⽤index参数时,index的值是⼀个列表,其中的元素是多个列表,每个列表就是⼀层索 引,举个栗⼦:

我们来看⼀下输出结果:第⼀列的a、b、c是第⼀层的索引,第⼆层的期中、期末是 第⼆层的索引,第三列的就是对应的数据。

上面建索引的⽅式写起来很麻烦,我们要写很多重复的内容,所以pandas给我们提供了另⼀ 种⽅式(MultiIndex.from_product() )来构建多层索引

使⽤MultiIndex.from_product()方法构建,⾸先我们把每层需要的索引写⼊到⼀个列表中,将这些列表在存⼊到⼀个新的列表当中,作为 参数传⼊MultiIndex.from_product()方法中,把结果赋值给变量index,那么这个index就 是我们构造好的索引,我们只需要在创建Series的时候传入索引即可

结果:69

多层索引的应用场景一般是在数据量比较大,字段比较多,逻辑相对复杂的情况下,用来汇总数据,查找数据时使用。

希望本文的内容对大家的学习或者工作能带来一定的帮助,每天进步一点点,加油~

多层次索引Series的索引是MultiIndex结构

根据最外层索引取数时,可直接通过series[outer_index_m]完成

根据内层索引取数时,需要series[:, inner_index_m]完成

更内层索引,series[:, :, ..., inner_index_m]完成

sreies.unstack()可将双层索引的series转为dataframe,外层索引做行索引,内层索引做列索引

多层次索引的dataframe按最外层行/列索引取数时,返回的结果是一个新的dataframe,所以,可用dataframe的按行/列取数方法依次进行

可以直接指定索引的别名(这是轴的标签,并不是索引本身的名称)

也可以通过MlutiIndex对象复用

dataframe.stack()方法

            可将多层 列索引 的dataframe转成新的dataframe,将最内层 列 索引转为最内层 行 索引

            若是dataframe只有一层列索引,stack方法会返回一个多层行索引的series

dataframe.unstack()方法

            可将多层 行索引 的dataframe转成新的dataframe,将最内层 行 索引转为最 内 层列索引

            若是dataframe只有一层行索引,stack方法会返回一个多层行索引的series

stack方法与unstack方法一直调用都会将dataframe转为series,两种series的区别在于行索引的先后顺序

*注:stack/unstack方法可以将dataframe转为series,也可以将series转为dataframe

       在多层次索引pandas对象中,这两个方法可一直调用下去,实现索引重排

上面通过stack/unstack实现了索引重排,一直调用太麻烦,还可以通过swaplevel方法直接指定两个层次的索引对调其位置


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/bake/11693395.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-18
下一篇2023-05-18

发表评论

登录后才能评论

评论列表(0条)

    保存