我无法创建情节,也无法将时间戳转换为日期。
下面的代码将yahoo finance的数据提取到pandas数据框中。日期用作该文件中数据集的索引,如下所示:
2007-05-01 00:00:00
首先,我想将该索引从datetime转换为date格式,但更重要的是,我想弄清楚在下面的代码中使用matplotlib重现从rels.plot()
获得的图,以便我可以在给定日期添加一条垂直线(格式不需要完全相同。)
import pandas.io.data as web
import pandas as pd
import matplotlib.pyplot as plt
%matplotlib inline
all_data = {}
for ticker in ['AAPL','MSFT']:
all_data[ticker] = web.get_data_yahoo(ticker, '5/1/2007','10/1/2007')
price = pd.DataFrame({tic:data['Adj Close']
for tic, data in all_data.iteritems()})
volume = pd.DataFrame({tic:data['Volume']
for tic, data in all_data.iteritems()})
returns = price.pct_change()
rels = price/price.ix[0]
rels.plot()
plt.Line2D(rels.index,rels.AAPL)
plt.show()
上面的代码会下载所有数据,以便您可以使用我在您的计算机上使用的相同数据(如果需要)。现在,在我的IP [y]笔记本电脑上,此代码运行,但plt.show()不生成绘图。代码应该生成两个图(第一个是我试图用matplotlib重新创建的参考图。)
答案 0 :(得分:0)
[从评论中移出来关闭此:]
而不是Line2D
,它只是创建一个线对象,如果你想真正制作一个你想要的新的完整情节
plt.plot(rels.index, rels.AAPL)
代替。
答案 1 :(得分:0)
您可以使用strptime和格式来获取要插入到yahoo web.get中的日期字符串:
import datetime as dt
startdate = '5/1/2007'
enddate = '10/1/2007'
time_format = "%Y,%m,%d"
dt_start = dt.datetime.strptime(startdate, time_format)
dt_end = dt.datetime.strptime(enddate, time_format)
The rest of the code example****** = web.get_data_yahoo(ticker, dt_start,dt_end)