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

发布于:2022-12-14 ⋅ 阅读:(481) ⋅ 点赞:(0)

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()

 

本文含有隐藏内容,请 开通VIP 后查看

网站公告

今日签到

点亮在社区的每一天
去签到