2014-04-10 65 views
13

我想從雅虎財經調整關閉價格到一個數據框。我有我想要的所有股票,但我無法按日期排序。熊貓雅虎財務數據讀取器

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' 

希望有人能幫助我添加日期。

+3

日期是索引,所以dataFrame.index,這將讓你的日期列 – Retozi

+2

你可以做'數據框[「日」] = dataframe.index'如果你想添加一個名爲'Date'的列,其中的索引值 – ejrb

+0

非常感謝您的輸入。現在它工作正常 –

回答

1

使用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 
1

這應該這樣做。

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() 
6
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() 
+0

首先,使用pandas'datareader'將數據讀入pandas的'dataframe',其次,使用'dataframe'索引(其中包含日期信息)獲取日期,第三,將'date'日期添加到'dataframe'。 .. –

4

日期處於索引值中。

要進入它的列值,你應該只使用:

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

然後你可以使用

dataframe['Date'] 

因爲「日期」,現在將在您的列的關鍵之一數據幀。

0

打印(dataFrame.index [0])

2014年1月2日00:00:00

0

子包pandas.io.data從最新熊貓包裝中取出,它是可單獨安裝爲pandas-datareader

使用git安裝軟件包。 在linux終端:

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

現在你可以使用import pandas_datareader你的Python腳本進行遠程數據訪問。

欲瞭解更多信息Use this link to visit the latest documentation

0
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) 
+0

'df = web.DataReader('GOOGL','yahoo',start,end)'then'print(df)' – noobninja