1
我的代碼是關於循環1200多個股票代碼並從yahoo飼料中檢索歷史報價(160〜200天)。因爲它需要時間,我存儲在csv報價,只是讓它下載時間增量的報價,即任何報價的日期差異或任何報價csv文件丟失...我用熊貓函數調用get_data_yahoo(stocknum ,開始,結束)。如何優化大熊貓從雅虎飼料中檢索股票報價的性能
但是,我發現整個過程所需的時間沒有任何區別,似乎有一天的d/l報價與200天的報價相同......大熊貓是如何處理來自雅虎的股票報價的?任何其他飼料更好?任何建議或提高我可以加快這一進程?
這裏下面的函數調用我爲股票報價檢索。
高清readStockPrice(股票,週期= 200,延遲= 1):
#define the period for stock filtering
now=dt.date.today()
end=now.strftime("%Y-%m-%d")
#start=(now-dt.timedelta(days=period)).strftime("%Y-%m-%d")
if os.path.isfile('cache/'+stock+'.csv'):
df=pd.read_csv('cache/'+stock+'.csv',index_col=0,parse_dates=True)
lastrecorddate=df.index.to_pydatetime()[-1].date()
delta=(now-lastrecorddate).days
if delta>delay:
#print("retrieving "+stock+" quotes from the web")
start=(lastrecorddate+dt.timedelta(days=1)).strftime("%Y-%m-%d")
try:
df_delta=web.get_data_yahoo(stock,start,end)
df=df.append(df_delta)
df_delta.to_csv('cache/'+stock+'.csv',header=False,mode='a')
except IOError:
return pd.DataFrame()
else:
#print("retrieving "+stock+" quotes from the web")
start=(now-dt.timedelta(days=period)).strftime("%Y-%m-%d")
try:
df=web.get_data_yahoo(stock,start,end)
if not df.empty:
df.to_csv('cache/'+stock+'.csv')
except IOError:
return pd.DataFrame()
return df
我的代碼是從儲存的csv(任何一種股票的整個報價)檢索報價,或從雅虎下載。因此我需要一個時間窗口,即在幾天的時間裏,我從現在開始有多遠。那爲什麼它只關心開始而不是結束。 – timeislove
@timeislove對不起,我誤解你的問題之前,現在我檢查熊貓的源代碼,並重新編輯我的答案,請看看它是否有任何幫助。 – linpingta
這就是我所猜測的...但即使雅虎只是把參數(索引作爲猜測),下載的數據塊的長度差異很大,我說的是一個約1:200的數據幀(有6〜7個列的數目,例如開放,高... adj close等等)time 1200+ nos of stocks !!!不應該有任何性能差異?如果你的猜測是正確的,我可以做什麼來增強下載時間(性能)? – timeislove