- 我已将数据转换为以下组,并在底部生成输出
- 我不知道如何提取子级数据来创建两个表。一个用于PUT,另一个用于CALL。
- x轴=罢工
- y轴= oi sum
- 我想用matplotlib将两个条形图叠加成一个。喜欢附图像
从下面的输出创建此图表的任何指针或更好的方法?
。
df_OI = df[['oi','strike','type','expiry']].groupby([pd.Grouper(freq='D'),'strike','type','expiry']).agg(['sum'])
Created oi
sum
datetime strike type expiry
2017-09-29 130.0 PUT 2017-10-06 12
145.0 PUT 2017-10-06 21
147.0 PUT 2017-10-06 1
149.0 PUT 2017-10-06 2
150.0 CALL 2017-10-06 1
PUT 2017-10-06 111
152.5 CALL 2017-10-06 12
PUT 2017-10-06 100
155.0 CALL 2017-10-06 10
PUT 2017-10-06 66
157.5 CALL 2017-10-06 8
PUT 2017-10-06 29
160.0 CALL 2017-10-06 21
PUT 2017-10-06 1405
162.5 CALL 2017-10-06 14
PUT 2017-10-06 327
165.0 CALL 2017-10-06 56
PUT 2017-10-06 2383
167.5 CALL 2017-10-06 12
PUT 2017-10-06 2804
170.0 CALL 2017-10-06 354
PUT 2017-10-06 1945
172.5 CALL 2017-10-06 438
PUT 2017-10-06 3022
175.0 CALL 2017-10-06 3373
PUT 2017-10-06 2093
177.5 CALL 2017-10-06 1688
PUT 2017-10-06 1201
180.0 CALL 2017-10-06 8241
PUT 2017-10-06 2269
182.5 CALL 2017-10-06 2152
PUT 2017-10-06 219
185.0 CALL 2017-10-06 4008
PUT 2017-10-06 469
187.5 CALL 2017-10-06 2006
PUT 2017-10-06 270
190.0 CALL 2017-10-06 1354
PUT 2017-10-06 37
192.5 CALL 2017-10-06 484
195.0 CALL 2017-10-06 377
197.5 CALL 2017-10-06 31
200.0 CALL 2017-10-06 109
PUT 2017-10-06 3
202.5 CALL 2017-10-06 5
205.0 CALL 2017-10-06 5
1 个答案:
答案 0 :(得分:0)
因为我有bar
列出的2列,所以我的总空间为2
。所以我使用width=2
使两个条的宽度都为2。
df.reset_index().set_index(['strike', 'type'])['sum'].unstack() \
.plot.bar(width=2, alpha=.5, figsize=(10, 4), ec='white')