python—分层索引

什么是分层索引?

分层索引是Pandas的重要特性,它允许你在一个轴向上(行、列)拥有多个索引层级。
举一个简单的例子:

data=pd.Series(np.random.randn(9),index=[['a','a','a','b','b','c','c','d','d'],
               [1,2,3,1,3,1,2,2,3]])
print(data)
print(data.index)

在这里插入图片描述
在这里插入图片描述
以上构建的 Series 即为以 MultiIndex 作为索引。此处的行索引是双层索引,可以使用 level 0 和 level 1 分别来代表。

为什么需要用分层索引?

分层索引提供了一种,在更低维度的形式中处理更高维度数据的方式。
啥意思呢,简单举例来说,假设现在你有一个列数很多的DataFrame,有了分层索引功能(当然还要配合下面会讲到的分层索引中的stack方法),你就可以把众多的列转换为index,从而将一个多列的DataFrame转换为一个分层索引的Series。

分层索引具体能干什么,怎么使用?

  1. 通过分层索引,可以选择出数据的子集
data['b']

在这里插入图片描述
data[‘b’:‘d’] #包含末尾
data.loc [ [ ‘b’,‘d’ ] ]

  1. 重塑数据
    多层索引再DataFrame中提供了一种一致性方式用于重排列数据,以下是两个基础操作:
    stack(堆叠) :将列中的数据透视到行
    unstack(拆堆):将行中的数据透视到列
    data
    使用unstack方法将数据重排列后放入一个DataFrame中:
data.unstack()

在这里插入图片描述
在这份数据上使用stack方法会将列透视到行,产生一个新的Series:

data.unstack().stack()

在这里插入图片描述
默认情况下,堆叠和拆堆的操作是可逆的。
当在DataFrame中拆堆时,被拆堆的层级会变为结果中最低的层级
3. 重排序和层级排序
有时候,我们需要重新排列轴上的层级顺序,或者按照特定层级的值对数据进行排序。

重排序
swaplevel方法可以接收两个层级的序号或者层级的名称,返回一个进行了层级变更的新对象。
在这里插入图片描述
单一层级数据排序
sort_index可以在单一层级上对数据进行排序。
在这里插入图片描述

  1. 按照层级进行汇总统计
    DataFrame和Series的很多描述性和汇总性统计中,会有一个level选项,通过level选项你可以指定你想要在某个特定的轴上进行聚合。(使用了pandas的groupby机制)
    在这里插入图片描述

  2. 使用DataFrame的列进行索引(set_index,reset_index函数)
    在这里插入图片描述
    set_index函数会生成一个新的DataFrame,新的DataFrame使用一个或多个列作为索引:
    在这里插入图片描述

reset_index的功能跟set_index刚好相反,层次化索引的级别会 被转移到列⾥
在这里插入图片描述
把列做下排序:
在这里插入图片描述
总结:以上是分层索引功能的一些理论知识,后面的文章会再用案例来展示,分层索引如何在实际问题的解决中发挥作用。

有任何疑问欢迎在留言区里和我讨论,互相学习!如果有帮助到你,也麻烦点点赞哦~

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值