python蓝胖python绘图笔记数据分析

Pandas的分层索引MultiIndex使用

2021-08-15  本文已影响0人  测试探索

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

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

本次目标:

一、Series的分层索引MultiIndex
1、数据准备
import pandas as pd
stocks = pd.read_excel('/Users/hathaway/PycharmProjects/untitled/MzTest/互联网公司股票.xlsx',engine = "openpyxl")
print(stocks.head(3))
print(stocks["公司"].unique())
image.png
2、分层索引
ser = stocks.groupby(["公司","日期"])["收盘"].mean()
print(ser)
print(ser.index) #分层索引
image.png
image.png
3、把二级索引变成列
# unstack把二级索引变成列
a = ser.unstack()
print(a)
image.png
4、把ser变成dafaframe
b = ser.reset_index()
print(b)
image.png
二、Series有多层索引怎样筛选数据?
a = ser.loc["BIDU"]
print(a)
image.png
1、多层索引,可以用元祖的形式筛选
b = ser.loc[("BIDU","2019-10-02")]
print(b)
image.png
2、筛选二级索引
c = ser.loc[:,"2019-10-02"]
print(c)
image.png
三、DataFrame的多层索引MultiIndex
stocks.set_index(["公司","日期"],inplace = True)
print(stocks)
image.png
排序,提高查询效率
stocks.sort_index(inplace = True)
print(stocks)
image.png
四、DataFrame有多层索引怎样筛选数据?

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

1、筛选一级索引为“BIDU”的值
stocks.set_index(["公司","日期"],inplace = True)
a = stocks.loc["BIDU"]
print(a)
image.png
2、筛选一级索引为"BIDU",二级索引为"2019-10-02"的值
a = stocks.loc[("BIDU","2019-10-02")]
print(a)
image.png
3、筛选一级索引为"BIDU","JD"的值
b = stocks.loc[["BIDU","JD"]]
print(b)
image.png
4、查询一级索引为"BIDU","JD",二级索引为2019-10-02的值
c = stocks.loc[(["BIDU","JD"],"2019-10-02"),:]
print(c)
image.png
5、筛选一级索引的所有内容,但是过滤条件通过二级索引过滤
# slice(None)代表筛选这一索引的所有内容
d = stocks.loc[(slice(None), ['2019-10-02', '2019-10-03']), :]
print(d)
image.png
6、多级索引变成普通的列,普通的dataframe
e = stocks.reset_index()
print(e)
image.png
上一篇下一篇

猜你喜欢

热点阅读