Part16:Pandas的分层索引MultiIndex怎么用?【详解】

Pandas的分层索引Multilndex

1为什么要学习分层索引Multilndex?

1、分层索引:在一个轴向上拥有多个索引层级,可以表达更高维度数据的形式;

2、方便的进行数据筛选,如果有序则性能更好;

3、groupby等操作的结果,如果是多KEY,结果是分层索引,需要会使用。

4、一般不需要自己创建分层索引(Multilndex有构造函数但一般不用)

演示数据:百度、阿里巴巴、爱奇艺、京东四家公司的10天股票数据数据来自:英为财经

—、Series的分层索引Multilndex

二、Series有多层索引怎样筛选数据?

三、DataFrame的多层索引Multilndex

四、DataFrame有多层索引怎样筛选数据?

import pandas as pd
%matplotlib inline
stocks=pd.read_excel('./datas/stocks/互联网公司股票.xlsx')
stocks.shape
stocks

 

stocks['公司'].unique()
stocks.index
#计算每个公司收盘的平均值
stocks.groupby('公司')['收盘'].mean()

一、Series的分层索引MultiIndex 

ser=stocks.groupby(['公司','日期'])['收盘'].mean()
ser
ser.index
# unstack把二级索引变成列
ser.unstack()
ser
#全部变成一维的普通索引模式
ser.reset_index()

 

 二、Series有多层索引Multilndex怎样筛选数据?

 

ser
ser.loc['BIDU']
# 多层索引,可以用元组的形式进行筛选
ser.loc[('BIDU','2019-10-02')]

#求所有公司中指定月份的收盘价
ser.loc[:,'2019-10-02']

 三、DataFrame的多层索引Multilndex

stocks.head()
stocks.set_index(['公司','日期'],inplace=True)
stocks

stocks.index
#自动根据索引进行排序,默认为升序排列
stocks.sort_index(inplace=True)
stocks

 

 

四、DataFrame有多层索引Multilndex怎样筛选数据?

【重要知识】在选择数据时:

。元组(key1.key2)代表筛选多层索引,其中key1是索引第一级,key2是第二级,比如key1=JD, key2=2019-10-02

·列表[key1,key2]代表同一层的多个KEY,其中key1和key2是并列的同级索引,比如key1=JD, key2=BIDU

stocks.loc['BIDU']

#  'BIDU'是一级索引  '2019-10-02'是二级索引
stocks.loc[('BIDU','2019-10-02'),:]

 

stocks.loc[('BIDU','2019-10-02'),'开盘']

#设置日期的同一级索引的格式
stocks.loc[('BIDU',['2019-10-03','2019-10-02']),'收盘']

#slice(None)代表筛选中一索引的所有内容---在这里的意思就是筛选一级索引‘公司’的所有内容
stocks.loc[(slice(None),['2019-10-03','2019-10-02']),:]

 

#将多重索引全部重置,转换为一维索引
stocks.reset_index()

 

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

夏天的学习日记

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值