我正在尝试使用Yahoo Finance API将数据读入DataFrame。但是,当我从列表中读取符号的值时,它们最终会出现在DataTable中的单个列中。我正在使用API,因为我实际上想要分红,P / E等数据,我认为你不能用datareader访问这些数据。我有两个问题:
我如何完成我想要的股票代码列表
import urllib2
from pandas import DataFrame
def get_data2(symbol):
columns = ['last','date','change','high','low','vol']
url = "http://download.finance.yahoo.com/d/quotes.csv?s=%s&f=sl1d1c1hgv" % symbol
file =urllib2.urlopen(url)
s = file.read()
file.close()
s= s.strip()
L = s.split(',')
L[0] = L[0].replace('"','')
L[2] = L[2].replace('"','')
D = DataFrame(L, columns=columns)
return D
使用这段代码我得到一个ValueError,因为形状不匹配,但实质上我想从列表中读取每个值到DataTable中的一列,最后迭代一个符号列表。
感谢您的帮助
答案 0 :(得分:5)
试试这个:
In [23]: from pandas_datareader import data
In [24]: data.DataReader('GOOG', 'yahoo', '2016-06-01', '2016-06-13')
Out[24]:
Open High Low Close Volume Adj Close
Date
2016-06-01 734.530029 737.210022 730.659973 734.150024 1250800 734.150024
2016-06-02 732.500000 733.020020 724.169983 730.400024 1337600 730.400024
2016-06-03 729.270020 729.489990 720.559998 722.340027 1222700 722.340027
2016-06-06 724.909973 724.909973 714.609985 716.549988 1565300 716.549988
2016-06-07 719.840027 721.979980 716.549988 716.650024 1336200 716.650024
2016-06-08 723.960022 728.570007 720.580017 728.280029 1582100 728.280029
2016-06-09 722.869995 729.539978 722.335999 728.580017 985900 728.580017
2016-06-10 719.469971 725.890015 716.429993 719.409973 1206000 719.409973
Demo for building pandas Panel when pulling data for multiple tickers