繁体   English   中英

熊猫雅虎财务DataReader

[英]Pandas yahoo finance DataReader

我试图将雅虎财经的Adj Close价格变成DataFrame。 我有我想要的所有股票,但我无法按日期排序。

stocks = ['ORCL', 'TSLA', 'IBM','YELP', 'MSFT']
ls_key = 'Adj Close'
start = datetime(2014,1,1)
end = datetime(2014,3,28)    
f = web.DataReader(stocks, 'yahoo',start,end)


cleanData = f.ix[ls_key]
dataFrame = pd.DataFrame(cleanData)

print dataFrame[:5]

我得到以下结果,这几乎是完美的。

              IBM   MSFT   ORCL    TSLA   YELP
Date                                           
2014-01-02  184.52  36.88  37.61  150.10  67.92
2014-01-03  185.62  36.64  37.51  149.56  67.66
2014-01-06  184.99  35.86  37.36  147.00  71.72
2014-01-07  188.68  36.14  37.74  149.36  72.66
2014-01-08  186.95  35.49  37.61  151.28  78.42

但是,日期不是项目。 所以当我跑:

print dataFrame['Date']

我收到错误:

KeyError: u'no item named Date'

希望任何人都可以帮我添加日期。

import pandas_datareader.data as web
import datetime    

start = datetime.datetime(2013, 1, 1)
end = datetime.datetime(2016, 1, 27)
df = web.DataReader("GOOGL", 'yahoo', start, end)

dates =[]
for x in range(len(df)):
    newdate = str(df.index[x])
    newdate = newdate[0:10]
    dates.append(newdate)

df['dates'] = dates

print df.head()
print df.tail()

日期在索引值中。

要将其添加到列值中,您应该使用:

dataframe.reset_index(inplace=True,drop=False)

然后你可以使用

dataframe['Date'] 

因为“日期”现在将成为数据框列中的键之一。

使用dataFrame.index直接访问日期或添加显式列,使用dataFrame["Date"] = dataframe.index

stocks = ['ORCL', 'TSLA', 'IBM','YELP', 'MSFT']
ls_key = 'Adj Close'
start = datetime(2014,1,1)
end = datetime(2014,3,28)    
f = web.DataReader(stocks, 'yahoo',start,end)


cleanData = f.ix[ls_key]
dataFrame = pd.DataFrame(cleanData)
dataFrame["Date"] = dataframe.index
print dataFrame["Date"] ## or print dataFrame.index

这应该做到这一点。

import pandas as pd
from pandas.io.data import DataReader

symbols_list = ['ORCL', 'TSLA', 'IBM','YELP', 'MSFT']
d = {}
for ticker in symbols_list:
    d[ticker] = DataReader(ticker, "yahoo", '2014-12-01')
pan = pd.Panel(d)
df1 = pan.minor_xs('Adj Close')
print(df1)

#df_percent_chg = df1.pct_change()

子包pandas.io.data已从最新的pandas包中删除,可以单独安装为pandas-datareader

使用git安装包。 在linux终端:

git clone https://github.com/pydata/pandas-datareader.git
cd pandas-datareader
python setup.py install

现在您可以使用import pandas_datareader到您的python脚本进行远程数据访问。

有关更多信息, 请使用此链接访问最新文档

f是一个Panel您可以使用以下命令获取DataFrame并重置索引(Date):

f.loc['Adj Close',:,:].reset_index()

但我不确定reset_index()是非常有用的,因为你可以使用Date

f.loc['Adj Close',:,:].index

您可以查看关于索引的http://pandas.pydata.org/pandas-docs/stable/indexing.html#different-choices-for-indexing

打印(dataFrame.index [0])

2014-01-02 00:00:00

import pandas_datareader.data as web
import datetime
start = datetime.datetime(2015, 1, 1)
end = datetime.datetime(2016, 1, 1)
web.DataReader('GOOGL', 'yahoo', start, end)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM