pandas DataFrame和Yahoo Finance API

MJM*_*rty 1 api dataframe python-2.7 yahoo-finance pandas

我正在尝试使用Yahoo Finance API将数据读入DataFrame.但是,当我从列表中读取符号的值时,它们最终会出现在DataTable中的单个列中.我正在使用API​​,因为我实际上想要分红,P/E等数据,我认为你不能用datareader访问这些数据.我有两个问题:

  1. 如何从列表中获取值以映射到DataFrame中的列(而不是行)
  2. 我将如何完成我想要为股票代码列表做的事情

    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
    
    Run Code Online (Sandbox Code Playgroud)

使用此代码,我得到一个ValueError,因为形状不匹配,但实质上我想从列表中读取每个值到DataTable中的一列,并最终迭代一个符号列表.

谢谢你的帮助

Max*_*axU 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
Run Code Online (Sandbox Code Playgroud)

在为多个代码提取数据时构建pandas Panel的演示

演示拉定制雅虎的报价(例如:Market Cap,Div Yield,EPS Est Next Quarter等)