import pandas as pd
stocks = pd.read_excel('./pandas/ant-learn-pandas/datas/stocks/互联网公司股票.xlsx')
print(stocks.head())
'''
日期 公司 收盘 开盘 高 低 交易量 涨跌幅
0 2019-10-03 BIDU 104.32 102.35 104.73 101.15 2.24 0.02
1 2019-10-02 BIDU 102.62 100.85 103.24 99.50 2.69 0.01
2 2019-10-01 BIDU 102.00 102.80 103.26 101.00 1.78 -0.01
3 2019-10-03 BABA 169.48 166.65 170.18 165.00 10.39 0.02
4 2019-10-02 BABA 165.77 162.82 166.88 161.90 11.60 0.00
'''
# 查看每个公司的收盘平均价
res = stocks.groupby('公司')["收盘"].mean()
print(res)
'''
公司
BABA 166.80
BIDU 102.98
IQ 15.90
JD 28.35
'''
# Series的分层索引MultiIndex
ser = stocks.groupby(['公司', '日期'])['收盘'].mean()
# unstack把二级索引变成列
res2 = ser.unstack()
print(res2)
'''
日期 2019-10-01 2019-10-02 2019-10-03
公司
BABA 165.15 165.77 169.48
BIDU 102.00 102.62 104.32
IQ 15.92 15.72 16.06
JD 28.19 28.06 28.80
'''
ser.reset_index()
# Series有多层索引MultiIndex怎样筛选数据?
res3 = ser.loc['BIDU']
print(res3)
'''
日期
2019-10-01 102.00
2019-10-02 102.62
2019-10-03 104.32
'''
# 多层索引,可以用元组的形式筛选
res4 = ser.loc[('BIDU', '2019-10-02')]
print(res4)
'''
102.62
'''
# 每一个公司,2019-10-02的收盘价格
res5 = ser.loc[:, '2019-10-02']
print(res5)
'''
公司
BABA 165.77
BIDU 102.62
IQ 15.72
JD 28.06
'''
# DataFrame的多层索引MultiIndex
stocks.set_index(['公司', '日期'], inplace=True)
# 排序
stocks.sort_index(inplace=True)
'''
DataFrame有多层索引MultiIndex怎样筛选数据?
【重要知识】在选择数据时:
元组(key1,key2)代表筛选多层索引,其中key1是索引第一级,key2是第二级,比如key1=JD, key2=2019-10-02
列表[key1,key2]代表同一层的多个KEY,其中key1和key2是并列的同级索引,比如key1=JD, key2=BIDU
'''
# 查看百度的股价情况
ret = stocks.loc['BIDU']
# 查看百度2019-10-02的股价情况
ret2 = stocks.loc[('BIDU', '2019-10-02'), :]
print(ret2)
'''
收盘 102.62
开盘 100.85
高 103.24
低 99.50
交易量 2.69
涨跌幅 0.01
'''
# 查看百度2019-10-02的开盘价
ret3 = stocks.loc[('BIDU', '2019-10-02'), '开盘']
# 查看百度和京东的股价详情
ret4 = stocks.loc[['BIDU', 'JD'], :]
print(ret4)
'''
收盘 开盘 高 低 交易量 涨跌幅
公司 日期
BIDU 2019-10-01 102.00 102.80 103.26 101.00 1.78 -0.01
2019-10-02 102.62 100.85 103.24 99.50 2.69 0.01
2019-10-03 104.32 102.35 104.73 101.15 2.24 0.02
JD 2019-10-01 28.19 28.22 28.57 27.97 10.64 0.00
2019-10-02 28.06 28.00 28.22 27.53 9.53 0.00
2019-10-03 28.80 28.11 28.97 27.82 8.77 0.03
'''
# 查看百度和京东2019-10-03的股价详情
ret5 = stocks.loc[(['BIDU', 'JD'], '2019-10-03'), :]
print(ret5)
'''
公司 日期
BIDU 2019-10-03 104.32 102.35 104.73 101.15 2.24 0.02
JD 2019-10-03 28.80 28.11 28.97 27.82 8.77 0.03
'''
# 查看百度和京东2019-10-03的收盘价
ret6 = stocks.loc[(['BIDU', 'JD'], '2019-10-03'), '收盘']
# slice(None)代表筛选这一索引的所有内容
# 查看所有公司2019-10-02和2019-10-03的股价详情
ret7 = stocks.loc[(slice(None), ['2019-10-02', '2019-10-03']), :]
pandas的分层索引MultiIndex
最新推荐文章于 2022-09-03 03:54:54 发布