简答:
使用pd.merge(),充分利用两个不同系列的缺失值,得到两条不同颜色的线。对于您使用的数据帧索引类型(日期、整数和字符串),此建议将非常灵活。这就是你会得到的:
长答案:
关于...的详细信息
我想关注过去 90 天,然后预测接下来的 14 天。
...我将假设您使用的是带有每日索引的数据框。我还假设您知道数据集的索引值是 90 天,数据集是 14 天。
这是一个包含 104 个观察值(随机数据)的数据框:
片段 1:
import pandas as pd
import numpy as np
np.random.seed(12)
rows = 104
df = pd.DataFrame(np.random.randint(-4,5,size=(rows, 1)), columns=['data'])
datelist = pd.date_range(pd.datetime(2018, 1, 1).strftime('%Y-%m-%d'), periods=rows).tolist()
df['dates'] = datelist
df = df.set_index(['dates'])
df.index = pd.to_datetime(df.index)
df = df.cumsum()
df.plot()
情节 1:
为了复制您的设置,我将数据框分成两个不同的帧,分别包含 90 个观察值(价格)和 14 天(预测值)。这样,您将拥有两个不同的数据集,但关联的索引将是连续的 - 我假设这是您的实际情况。
片段 2:
df_90 = df[:90].copy(deep = True)
df_14 = df[-14:].copy(deep = True)
df_90.columns = ['price']
df_14.columns = ['predictions']
df_90.plot()
df_14.plot()
情节 2:
现在您可以将它们合并在一起,这样您将获得一个包含两列(数据和预测)的数据框。当然,你最终会得到一些缺失的数据,但这正是你绘制时会给你两条不同颜色的线的原因。
片段 3:
df_all = pd.merge(df_90, df_14, how = 'outer', left_index=True, right_index=True)
df_all.plot()
情节 3:
我希望建议的解决方案符合您的实际情况。让我知道有关索引的详细信息是否会成为问题,我也会对此进行研究。
以下是简单复制粘贴的完整代码:
import pandas as pd
import numpy as np
np.random.seed(12)
rows = 104
df = pd.DataFrame(np.random.randint(-4,5,size=(rows, 1)), columns=['data'])
datelist = pd.date_range(pd.datetime(2018, 1, 1).strftime('%Y-%m-%d'), periods=rows).tolist()
df['dates'] = datelist
df = df.set_index(['dates'])
df.index = pd.to_datetime(df.index)
df = df.cumsum()
df.plot()
df_90 = df[:90].copy(deep = True)
df_14 = df[-14:].copy(deep = True)
df_90.columns = ['price']
df_14.columns = ['predictions']
df_90.plot()
df_14.plot()
df_all = pd.merge(df_90, df_14, how = 'outer', left_index=True, right_index=True)
df_all.plot()