【问题标题】:How to barplot Pandas dataframe columns aligning by sub-index?如何按子索引对齐 Pandas 数据框列?
【发布时间】:2012-11-09 15:51:51
【问题描述】:

我有一个 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

我尝试在同一“RPT_Date”上绘制股票“600141”和“600809”的比率“ROIC”和“ROE”,以衡量它们的表现。

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

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

我想要的是将由相同“RPT_Date”索引的“ROIC”和“ROE”条并排放置在同一组中(每组 4 个条),并且 x 轴仅标记“RPT_Date”,这将清楚地分辨出两只股票的区别。

怎么做?

如果我 df.plot(kind='line') ,它只显示两行,但应该是四行(2 个股票 * 2 个比率):

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

我正在使用 Pandas 0.8.1。

【问题讨论】:

    标签: python matplotlib pandas


    【解决方案1】:

    如果您取消堆叠 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>
    

    【讨论】:

      猜你喜欢
      • 2020-10-08
      • 1970-01-01
      • 2018-08-27
      • 1970-01-01
      • 2016-10-16
      • 2012-12-01
      • 2017-12-26
      • 2018-12-06
      • 2017-05-22
      相关资源
      最近更新 更多