【问题标题】:Create line plot from dataframe with two columns index从具有两列索引的数据框创建线图
【发布时间】:2021-04-24 14:20:54
【问题描述】:

我有以下数据框:

>>>                          mean_traf_tie
    a      d        c
    0.22  0.99      0.11      22
                    0.23      21
                    0.34      34
                    0.46      45
    0.44  0.99      0.11      45
                    0.23      65
                    0.34      66
                    0.46      68
    0.50  0.50      0.11      22
                    0.23      12
                    0.34      34
                    0.46      37
...

我想从这个数据框中绘制图,c 将是 X 轴,y 将是平均速度,线条将根据 a 和 d 列,例如,一条线将用于a=0.22 和 d=0.99,x 为 c,y 为平均速度,然后第二行是 a=0.44 和 d=0.99 等。

我尝试过这样做:

df.plot()

(原始数据框中的值不同)。

如您所见,由于某种原因,它在 x 轴上绘制 a、d 并仅创建一条线。

我尝试过这样修复它:

df.unstack(level=0).plot(figsize=(10,6))

但后来我得到了非常奇怪的图表,a 和 d 的线正确,但 x 轴错误:

如您所见,它以某种方式绘制 a,d 值,但这不是我想要的 - 我希望它是 c 列,然后根据 a,d 列创建行,假设创建连续线。 我也试过了:

df[('mean_traf_tie')].unstack(level=0).plot(figsize=(10,6))
plt.xlabel('C')
plt.ylabel('mean_traf_tie')

但又得到了:

所需的输出将 c 列作为 x 轴,将 mean_traf_tie 作为 y 轴,并且将在 a 和 d 列上生成线(0.22 和 0.99 的线,0.44 和 0.99 等的线)。

【问题讨论】:

    标签: python pandas matplotlib multi-index line-plot


    【解决方案1】:

    更新: 在像这样绘制之前,我已经设法通过将两个索引列连接到一个来解决它:

    df['a,d'] = list(zip(df.a, df.d))
    
    df=df.groupby(['a,d','C']).mean()
    
    df.unstack(level=0).plot(figsize=(10,6))
    

    传说仍然不理想,但我得到了我想要的线条和轴。

    如果有人对如何使用原始专栏有更好的想法,我仍然愿意学习。

    【讨论】:

      猜你喜欢
      • 2020-02-22
      • 2021-01-14
      • 2022-01-03
      • 2017-05-04
      • 1970-01-01
      • 2020-06-28
      • 2017-11-10
      • 2023-03-23
      相关资源
      最近更新 更多