如何通过子索引对Pandas数据帧列进行条形图对齐?

big*_*bug 4 python matplotlib pandas

我有一个pandas数据框df包含两个股票的财务比率数据:

>>> 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
Run Code Online (Sandbox Code Playgroud)

我试图在同一个'RPT_Date'上绘制'600141'和'600809'股票的'ROIC'和'ROE'比例来衡量他们的表现.

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

在此输入图像描述

图表左侧绘制'600141',右侧绘制'600809'.在同一报告日期比较两只股票的"ROIC"和"ROE"有点不方便'RPT_Date'.

我想要的是将'ROIC'和'ROE'栏放在相同的'RPT_Date'并排在同一组中(每组4巴),而x轴只标记'RPT_Date',这将清楚地告诉两只股票的差异.

怎么做 ?

如果我df.plot(kind='line'),它只显示两行,但它应该是四行(2股*2比率): 在此输入图像描述

这是一个错误,或者我可以做些什么来纠正它?谢谢.

我正在使用Pandas 0.8.1.

Wou*_*ire 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>
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述