我希望在同一个图中显示两条不同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()中是否有类似简单设置的东西 - 功能。
答案 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')
更像是散点图:
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')