2012-11-21 93 views
4

我有一个熊猫数据帧df包含两个股票的财务比率数据:如何barplot通过子索引对齐熊猫数据框列?

>>> df 
        ROIC ROE 
STK_ID RPT_Date    
600141 20110331 0.012 0.022 
     20110630 0.031 0.063 
     20110930 0.048 0.103 
     20111231 0.063 0.122 
     20120331 0.017 0.033 
     20120630 0.032 0.077 
     20120930 0.050 0.120 
600809 20110331 0.536 0.218 
     20110630 0.734 0.278 
     20110930 0.806 0.293 
     20111231 1.679 0.313 
     20120331 0.666 0.165 
     20120630 1.039 0.257 
     20120930 1.287 0.359 

我尝试绘图比例‘‘的股票‘ROIC’&’ROE 600141’&‘600809’放在同'RPT_Date'来衡量他们的表现。

df.plot(kind='bar'),给出以下的

enter image description here

图表绘制 '600141' 的左侧, '600809' 的右侧。在同一报告日期'RPT_Date'比较两只股票的'ROIC'&'ROE'有些不便。

我想要将'ROI'&'ROE'条放在同一组中(同组每组4条),并且x轴仅标记'RPT_Date',即相同'RPT_Date'将清楚地告诉两只股票的区别。

如何做到这一点?

如果我df.plot(kind='line'),那只能说明两行,但它应该是四行(2股* 2倍的比例): enter image description here

它是一个错误,或者我能做些什么来纠正呢?谢谢。

我正在使用熊猫0.8.1。

回答

8

如果您取消堆栈STK_ID,则可以根据每个RPT_Date创建并排图。

In [55]: dfu = df.unstack("STK_ID") 

In [56]: fig, axes = subplots(2,1) 

In [57]: dfu.plot(ax=axes[0], kind="bar") 
Out[57]: <matplotlib.axes.AxesSubplot at 0xb53070c> 

In [58]: dfu.plot(ax=axes[1]) 
Out[58]: <matplotlib.axes.AxesSubplot at 0xb60e8cc> 

enter image description here

+1

很好的解决方案。谢谢。 – bigbug