在同一图上绘制数据帧

时间:2015-09-27 01:40:21

标签: python pandas merge

我有两个数据帧:

a.head()

             AAPL             SPY       date
0  1000000.000000  1000000.000000 2010-01-04
1   921613.643818   969831.805642 2010-02-04
2   980649.393244  1000711.933790 2010-03-04
3   980649.393244  1000711.933790 2010-04-04
4  1232535.257461  1059090.504583 2010-05-04

b.head()

                 date           test
0 2010-01-26 22:17:44  990482.664854
1 2010-03-09 22:37:17  998565.699784
2 2010-03-12 02:11:23  989957.374785
3 2010-04-05 18:01:37  994315.860439
4 2010-04-06 11:06:50  987887.723816

在设置abset_index('date'))的索引后,我可以使用pandas plot()函数创建一个漂亮的图,日期为x -axis和各列作为y值。 我想要做的是在同一个数字上绘制两个具有不同索引的数据框。从ab可以看出,索引是不同的,我想在同一个数字上绘制它们。

我尝试mergeconcat将数据框连接在一起,但结果图不是我想要的,因为这些函数在日期不是的地方插入numpy.NaN同样,这使我的情节不连续。我可以使用pd.fillna(),但这不是我想要的,因为我宁愿只将点连接在一起而不是下降到0。

1 个答案:

答案 0 :(得分:1)

假设您想在x轴上使用相同的时间刻度,那么在连接列之前,您需要时间戳作为ab的索引。

然后,您可以使用interpolation填写缺失的数据,如果您想要填写最后观察到的数据点,可以选择使用ffill()作为附加操作。

df = pd.concat([a, b.set_index('date')], axis=1)
df.interpolate(method='time').plot()  # interpolate(method='time').ffill()