【问题标题】:Plotting two columns based on multiple variables in another column?根据另一列中的多个变量绘制两列?
【发布时间】:2020-11-28 20:10:25
【问题描述】:

我有一个如下所示的数据框:

Symbol  Date    Amount  Portfolio Value
0   BLL 2020-01-06  5116.83 5069.42
1   BLL 2020-03-16  5104.98 4615.97
5   BLL 2020-03-17  5116.83 5118.95
6   BLL 2020-06-15  5104.95 5401.712
7   BLL 2020-06-16  5116.83 5570.23
11  IBB 2014-03-04  542.98  179.48
12  IBB 2014-10-10  810.97  262.33
13  IBB 2016-09-30  810.71  289.45
14  IBB 2016-10-03  810.97  290.08
15  IBB 2016-12-29  810.69  267.19
16  IBB 2016-12-30  810.97  265.55  
52  SCHE2017-07-05  1915.76 1922.68
53  SCHE2017-08-02  1942.2  2063.10
54  SCHE2017-12-22  1891.79 2158.26
57  SCHE2017-12-26  1942.2  2208.64
60  SCHE2018-12-17  1892.65 1870.20
63  SCHE2018-12-18  1942.2  1927.48

如何为“符号”列中的每只股票创建多个图,按日期绘制“金额”列和“投资组合价值”?

这是我目前所得到的:

grouped = df.groupby(['Symbol'])
for key, group in grouped:
    group.plot('Date', 'Amount', label = key)

这为每个符号提供了一个单独的图,如下所示:

无论出于何种原因,我都不知道如何在同一张图上绘制另一列 (y2)。我如何为每个符号得到这个:

【问题讨论】:

  • 我猜想像“坚持”之类的东西,因为这是你在 Matlab 中的同一个图上做多行的方式,而 matplotlib 就是基于此。
  • 在 for 循环中试试这个:group.set_index('Date')[['Amount','Portfolio Value']].plot(label = key)
  • 我目前没有使用 matplotlib。我使用 Spyder 作为我的 IDE,当我运行程序时,它会在屏幕右上角显示绘图。认为 group.plot 在 pandas 库中,但我可能完全错了。
  • @Terry 成功了!谢谢!我还添加了 title = key,它给了我每个符号的标题。
  • 很好!我会用这个创建一个答案,好吗?

标签: python pandas pandas-groupby


【解决方案1】:

试试下面给出的一段代码。您只需将尽可能多的列放入列表并分配给 y 轴:

group.plot(x='Date', y=['Amount', 'Portfolio Value'], title=key)

【讨论】:

    【解决方案2】:

    基于此answer,您可以使用set_index()日期 列设置为索引,选择要一起绘制的2 列,然后调用.plot

    grouped = df.groupby(['Symbol'])
    for key, group in grouped:
        group.set_index('Date')[['Amount','Portfolio Value']].plot(title = key)
    

    【讨论】:

      猜你喜欢
      • 2014-12-14
      • 1970-01-01
      • 1970-01-01
      • 2016-02-19
      • 2022-01-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多