代码之家  ›  专栏  ›  技术社区  ›  Suhail Gupta

合并后绘制2个数据帧

  •  0
  • Suhail Gupta  · 技术社区  · 6 年前

    我有两个不同的数据帧,它们具有相同的列 date . 现在,我要绘制这些数据帧,其中的值 X 轴是 日期 Y 轴是 value

    df1 = pd.DataFrame({'value': [1,2,3,4,5], 'date': [20,40,60,80,100]})
    df2 = pd.DataFrame({'value': [11,21,31,41,51], 'date': [20,40,60,80,100]})
    df3 = pd.concat([df1, df2], keys=['df1','df2'], axis=1)
    df3.plot()
    plt.show()
    

    但最终的情节不是我想要的。从传说中可以看出,它产生了4个情节。

    enter image description here

    我怎么能有两个相同的情节 轴和轴之间的差异反映在 是的 轴心国?请注意,我想在连接数据帧之后执行此操作 df1 df2 通过打电话 plot df3

    2 回复  |  直到 6 年前
        1
  •  2
  •   ImportanceOfBeingErnest    6 年前

    在连接之前,可以使用“date”列作为索引。

    df1 = pd.DataFrame({'value': [1,2,3,4,5], 'date': [20,40,60,80,100]})
    df2 = pd.DataFrame({'value': [11,21,31,41,51], 'date': [20,40,60,80,100]})
    df3 = pd.concat([df1.set_index("date"), df2.set_index("date")], keys=['df1','df2'], axis=1)
    df3.plot()
    

    打印时,索引用作x值,并为每列绘制一条线。

    enter image description here

    df3 = pd.concat([df1.set_index("date"), df2.set_index("date")], axis=1, ignore_index =True)
    df3.columns=['df1','df2']
    

    enter image description here

    df3 = pd.concat([df1.set_index("date"), df2.set_index("date")], keys=['df1','df2'], axis=1)
    df3.columns = df3.columns.droplevel(level=1)
    
        2
  •  1
  •   Sruthi    6 年前

    尝试:

    df3=pd.merge(df1,df2,on='date')
    df3.plot.line(x="date")
    plt.show()
    

    enter image description here

    首先,由于日期似乎相同,因此可以在“日期”列上合并

    df3=pd.merge(df1,df2,on='date')
    
       value_x  date  value_y
    0        1    20       11
    1        2    40       21
    2        3    60       31
    3        4    80       41
    4        5   100       51
    

    使用matplotlib的另一种方法: 绘制日期与值x和日期与值y

    plt.plot(df3["date"],df3["value_x"],label="df1")
    plt.plot(df3["date"],df3["value_y"],label="df2")
    
    plt.legend()
    plt.show()
    

    enter image description here