使用matplotlib绘制数据帧时,图表不连续但数据没有不连续性

时间:2016-10-10 18:59:14

标签: python pandas matplotlib

我正在尝试使用scikit-learn,pandas和matplotlib绘制预测。 我能够预测数据并能够将它们保存在数据帧中。但现在当我绘制它们时,有两种情况。

第一个案例

我为预测预测创建了一个新列,并使用我预测的值绘制它们 Adj. Close是我的功能,forecast是我的预测。如你所见,日期完全匹配,所以不应有任何差距。

我的数据:

            HL_Precentage  Adj. High  Adj. Low  Adj. Close  Adj. Volume  \
Date                                                                      
2016-08-19       0.545879     801.23    796.88      799.65    1120763.0   
2016-08-22       0.625685     799.30    794.33      796.95     853365.0   
2016-08-23       0.629405     801.00    795.99      796.59     917513.0   
2016-08-24       0.973747     798.46    790.76      793.60    1284437.0   
2016-08-25            NaN        NaN       NaN         NaN          NaN   
2016-08-26            NaN        NaN       NaN         NaN          NaN   
2016-08-27            NaN        NaN       NaN         NaN          NaN   
2016-08-28            NaN        NaN       NaN         NaN          NaN   
2016-08-29            NaN        NaN       NaN         NaN          NaN   
2016-08-30            NaN        NaN       NaN         NaN          NaN 



             label    Forecast  
Date                            
2016-08-19  802.79         NaN  
2016-08-22  801.23         NaN  
2016-08-23  803.08         NaN  
2016-08-24  800.71         NaN  
2016-08-25     NaN  797.835059  
2016-08-26     NaN  799.896814  
2016-08-27     NaN  802.552861  
2016-08-28     NaN  798.483859  
2016-08-29     NaN  795.999011  
2016-08-30     NaN  797.866796 

Image Link: red is Adj. Close and blue is forecast

(红色为Adj. Close,预测为蓝色)

第二案

为了消除这一差距,我只在Adj. Close栏中插入了预测值,而且我觉得这个图表是连续的。

数据:

            HL_Precentage  Adj. High  Adj. Low  Adj. Close  Adj. Volume  \
Date                                                                      
2016-08-19       0.545879     801.23    796.88  799.650000    1120763.0   
2016-08-22       0.625685     799.30    794.33  796.950000     853365.0   
2016-08-23       0.629405     801.00    795.99  796.590000     917513.0   
2016-08-24       0.973747     798.46    790.76  793.600000    1284437.0   
2016-08-25            NaN        NaN       NaN  796.877634          NaN   
2016-08-26            NaN        NaN       NaN  799.448407          NaN   
2016-08-27            NaN        NaN       NaN  801.340352          NaN   
2016-08-28            NaN        NaN       NaN  798.130538          NaN   
2016-08-29            NaN        NaN       NaN  794.900353          NaN   
2016-08-30            NaN        NaN       NaN  796.483742          NaN   

             label  Forecast  
Date                          
2016-08-19  802.79       NaN  
2016-08-22  801.23       NaN  
2016-08-23  803.08       NaN  
2016-08-24  800.71       NaN  
2016-08-25     NaN       NaN  
2016-08-26     NaN       NaN  
2016-08-27     NaN       NaN  
2016-08-28     NaN       NaN  
2016-08-29     NaN       NaN  
2016-08-30     NaN       NaN 

Image Link: red line is for Adj. close

我的问题是如何使我的第一张图连续,以使我的预测不连续?

2 个答案:

答案 0 :(得分:0)

如果您希望线条连续,则数据需要重叠,或者从1列开始连续序列。一个简单的方法就是在封测之前用adj替换预测中的NA<

df['Adj. Close'].fillna(df.Forecast, inplace=True).plot()

答案 1 :(得分:0)

您的数据中存在不连续性 - 最后Adj. close值记录在08/24,第一个Forecast值是08/25。

为了在行中没有中断,您需要两个系列的末端重叠至少一个时间点。例如,您可以为08/24计算Forecast,其中您还有Adj. close值。