Pandas的分层索引MultiIndex(十六)

为什么要学习分层索引MultiIndex?

  • 1、分层索引:在一个轴向上拥有多个索引层级,可以表达更高维度数据的形式;
  • 2、可以更方便的进行数据筛选,如果有序则性能更好;
  • 3、groupby等操作的结果,如果是多KEY,结果是分层索引,需要会使用
  • 4、一般不需要自己创建分层索引(MultiIndex有构造函数但一般不用)

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

本次演示提纲:
一、Series的分层索引MultiIndex
二、Series有多层索引怎样筛选数据?
三、DataFrame的多层索引MultiIndex
四、DataFrame有多层索引怎样筛选数据?

前期导入相关包和数据
import pandas as pd
%matplotlib inline
stocks = pd.read_excel('./datas/stocks/互联网公司股票.xlsx')
stocks.shape
stocks["公司"].unique()
stocks.index
stocks.groupby('公司')["收盘"].mean()
一、Series的分层索引MultiIndex
#注意:多维索引中,空白的意思是:使用上面的值
ser = stocks.groupby(['公司', '日期'])['收盘'].mean()
ser.index #索引是一个元组
# unstack把二级索引变成列
ser.unstack()
ser.reset_index()#让列的索引不再是二级索引,使它变为自增的默认索引
二、Series有多层索引MultiIndex怎样筛选数据?
ser.loc['BIDU']

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

三、DataFrame的多层索引MultiIndex
stocks.set_index(['公司', '日期'], inplace=True) #让公司和日期变成index索引(二层索引)
stocks.sort_index(inplace=True)#按照索引来进行排序
四、DataFrame有多层索引MultiIndex怎样筛选数据?

【重要知识】在选择数据时:
(1)元组(key1,key2)代表筛选多层索引,其中key1是索引第一级,key2是第二级,比如key1=JD, key2=2019-10-02
(2)列表[key1,key2]代表同一层的多个KEY,其中key1和key2是并列的同级索引,比如key1=JD, key2=BIDU

stocks.loc['BIDU'] #查看BIDU这一行中的数据,列出所有列数据
stocks.loc[('BIDU', '2019-10-02'), :]#查找出二层索引相关的行数据,列全部显示
stocks.loc[('BIDU', '2019-10-02'), '开盘']
stocks.loc[['BIDU', 'JD'], :] #查看同级索引行数据
stocks.loc[(['BIDU', 'JD'], '2019-10-03'), :]
stocks.loc[(['BIDU', 'JD'], '2019-10-03'), '收盘']
stocks.loc[('BIDU', ['2019-10-02', '2019-10-03']), '收盘']
# slice(None)代表筛选这一索引的所有内容
stocks.loc[(slice(None), ['2019-10-02', '2019-10-03']), :]
stocks.reset_index()#使二级索引重新变为列colums
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值