python - 如何绘制股票数据的滚动平均值?

标签 python pandas matplotlib

我能够使用以下代码绘制数据:

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

url = "http://real-chart.finance.yahoo.com/table.csv?s=YHOO&a=03&b=12&c=2006&d=01&e=9&f=2016&g=d&ignore=.csv"

df = pd.read_csv(url)
df.index = df["Date"]
df.sort_index(inplace=True)

df['Adj Close'].plot()
plt.show()

但现在我想计算数据的滚动平均值并绘制它。这是我试过的:

pd.rolling_mean(df.resample("1D", fill_method="ffill"), window=3, min_periods=1)
plt.plot()

但这给了我错误:

Only valid with DatetimeIndex, TimedeltaIndex or PeriodIndex

我只想绘制数据的滚动平均值。为什么会这样?

最佳答案

为什么不直接使用datareader呢?

import pandas.io.data as web

aapl = web.DataReader("aapl", 'yahoo', '2010-1-1')['Adj Close']
aapl.plot(title='AAPL Adj Close');pd.rolling_mean(aapl, 50).plot();pd.rolling_mean(aapl, 200).plot()

enter image description here

为了更好地控制绘图:

aapl = web.DataReader("aapl", 'yahoo', '2010-1-1')['Adj Close']
aapl.name = 'Adj Close'
aapl_50ma = pd.rolling_mean(aapl, 50)
aapl_50ma.name = '50 day MA'
aapl_200ma = pd.rolling_mean(aapl, 200)
aapl_200ma.name = '200 day MA'
aapl.plot(title='AAPL', legend=True);aapl_50ma.plot(legend=True);aapl_200ma.plot(legend=True)

enter image description here

关于python - 如何绘制股票数据的滚动平均值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35328399/

相关文章:

Python 大学名称和缩写以及网络链接

python - 用股票报价识别 Pandas 数据框中的价格波动/趋势

python - 使用 pyplot.scatter() 方法绘制元组列表(x 坐标、y 坐标、颜色)

python - 将两列文本文件中的 float 读取到 Python 中的数组中时出错

python - Numpy fft 结果出乎意料

python - 打印链表队列中的元素

python - ValueError : Length mismatch: Expected axis has 0 elements, 新值有 8 个元素

python - 在 matplotlib 中屏蔽等高线图的一部分

python - 感染效率 - Pygame

python - 如何正确读取groupby结果生成的csv文件?