Python 雅虎财务数据阅读器

Python 雅虎财务数据阅读器,python,pandas,Python,Pandas,我正试图将雅虎财经的调整收盘价纳入一个数据框架。我有我想要的所有股票,但我不能按日期排序 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] dataFr

我正试图将雅虎财经的调整收盘价纳入一个数据框架。我有我想要的所有股票,但我不能按日期排序

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'

希望有人能帮我添加日期。

使用
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()

f
是一个
面板
您可以使用以下方法获取
数据帧
并重置索引(日期):

但我不确定
reset\u index()
是否非常有用,因为您可以使用

f.loc['Adj Close',:,:].index
你可以看看
关于索引日期在索引值中

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'] 
因为“Date”现在将是dataframe列中的键之一

打印(dataFrame.index[0])


2014-01-02 00:00:00

子包pandas.io.data已从最新的pandas软件包中删除,并可根据需要单独安装

使用git安装该软件包。 在linux终端中:

git clone https://github.com/pydata/pandas-datareader.git
cd pandas-datareader
python setup.py install
现在,您可以使用
import pandas\u datareader
对python脚本进行远程数据访问


有关详细信息

Date是您的索引,因此dataFrame.index,这将为您提供日期列。如果您想添加一个名为“Date”的列,并在其中添加索引值,可以执行以下操作:
dataFrame[“Date”]=dataFrame.index
。现在一切正常首先,用pandas'datareader将数据输入pandas'dataframe',第二,切片'dataframe'索引(包含日期信息)以获得日期,第三,将'date'日期添加到'dataframe'…
df=web.datareader('GOOGL','yahoo',start,end)
然后
打印(df)
你能看看这个问题吗?我也使用列表作为datareader的输入,但有些代码无法读取。
git clone https://github.com/pydata/pandas-datareader.git
cd pandas-datareader
python setup.py install
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)