python计算移动平均线_移动平均线计算不正确

在使用Quandl数据对微软股票进行时间序列分析时,作者发现计算的移动平均线在图表上没有延伸到最右侧,怀疑计算方法不正确。尝试了反转序列和将移动平均线作为数据框架的一部分,但问题依然存在,移动平均线的开始位置不正确,导致图表显示异常。文章中展示了部分代码和计算结果,列出了移动平均线计算初期的NaN值情况。
摘要由CSDN通过智能技术生成

我正在用Quandl提供的数据对微软股票进行时间序列分析。我想画出收盘价和移动平均线的对比图。当我绘制移动平均线时,它们不会一直到图的右侧。你知道吗

我相信有一个差距是有道理的(例如200天移动平均线不能开始,直到第200天),但担心的差距是对的。这意味着它是从最近的日期开始的(这在某种意义上是因为最近的日期是时间序列中的第一个),这显然不是正确的方法。你知道吗

我可以反转序列(新的数据帧升序而不是降序),但我相信它也会从最近的日期开始绘制图表,这显然是不可接受的。你知道吗#calculate moving averages for Microsoft

roll100 = MSFT_data['Adj. Close'].rolling(100).mean()

roll200 = MSFT_data['Adj. Close'].rolling(200).mean()

roll50 = MSFT_data['Adj. Close'].rolling(50).mean()

roll10 = MSFT_data['Adj. Close'].rolling(10).mean()

roll200.plot(label = '200 Day Moving Average')

roll50.plot(label = '50 Day Moving Average')

roll100.plot(label = '100 Day Moving Average')

MSFT_data['Adj. Close'].plot(label = 'MSFT Closing Price', color = 'blue')

plt.legend(loc = 'upper left')

因为移动平均值应该总是从最早的日期开始计算,所以我假设我缺少了一个简单的命令。你知道吗

更新:有人建议我将移动平均数作为原始数据框架的一部分(我假设它们与日期索引相关),但我得到了相同的结果:MSFT_data['roll100'] = MSFT_data['Adj. Close'].rolling(100).mean()

MSFT_data['roll200'] = MSFT_data['Adj. Close'].rolling(200).mean()

MSFT_data['roll50'] = MSFT_data['Adj. Close'].rolling(50).mean()

MSFT_data['roll10'] = MSFT_data['Adj. Close'].rolling(10).mean()

#plot Microsoft Price along with moving averages

fig = plt.figure()

fig.set_figheight(8)

fig.set_figwidth(10)

MSFT_data['roll200'].plot(label = '200 Day Moving Average')

MSFT_data['roll50'].plot(label = '50 Day Moving Average')

MSFT_data['roll100'].plot(label = '100 Day Moving Average')

MSFT_data['Adj. Close'].plot(label = 'MSFT Closing Price', color = 'blue')

plt.legend(loc = 'upper left')

v6zyP.png

另外,如果我检查列,例如:MSFT_data['roll10'].head(12)

Date

2017-12-29 NaN

2017-12-28 NaN

2017-12-27 NaN

2017-12-26 NaN

2017-12-22 NaN

2017-12-21 NaN

2017-12-20 NaN

2017-12-19 NaN

2017-12-18 NaN

2017-12-15 85.796

2017-12-14 85.711

2017-12-13 85.674

Name: roll10, dtype: float64

我可以看到最近的9个值是NaN。相反,如果我创建一个新的数据帧并尝试重新索引升序,那么尾部的最后9个值是NaN。你知道吗

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值