在同一图中绘制具有不同x-datapoints的两条曲线(Python,Pandas)

时间:2017-12-04 10:29:22

标签: python pandas

我希望在同一个图中显示两条不同x-datapoints的曲线:

import pandas as pd

df1 = pd.DataFrame()
df1['Date']= ['2014-12-31', '2015-12-31', '2016-12-31', '2017-12-31']
df1['Value'] = [22, 44, 11, 55]
df2 = pd.DataFrame()
df2['Date']= ['2015-03-31', '2015-07-31', '2015-8-31', '2015-12-31']
df2['Value'] = [34, 39, 31, 27]

ax1 = df1.plot(x='Date', marker='o')
df2.plot(ax=ax1, marker='o')

在上面的代码中,第二条曲线(df2-data)使用df1-data的x-datapoints,而不是它自己的x-datapoints。

我可以通过操纵数据使其工作(例如,在df1和df2中添加缺少的日期与NaN相应),但我想知道df.plot()中是否有类似简单设置的东西 - 功能。

1 个答案:

答案 0 :(得分:3)

  

注意:我确实使用df [' Date'] =将这些日期转换为日期时间   pd.to_datetime(df.Date)

执行此操作的一种方法是使用pd.concat然后使用pandas plot:

pd.concat([df1,df2], keys=['df1','df2'])\
  .set_index('Date', append=True)\
  .unstack(0)['Value']\
  .reset_index(0, drop=True)\
  .fillna(0).plot(marker='o')

enter image description here

更像是散点图:

pd.concat([df1,df2], keys=['df1','df2'])\
   .set_index('Date', append=True)\
   .unstack(0)['Value']\
   .reset_index(0, drop=True)\
   .plot(marker='o',linestyle='none')

enter image description here