2013-09-28 208 views
-1

我試圖定義,計算平均日回報每一個安全的程序:IndexError:列表索引超出範圍// numpy?

def Adj_mean(): 
    return np.loadtxt('my_file.csv', skiprows=1, usecols=(1,2,3,4,5,6)).mean(axis=0) 

這裏是my_file.csv

Date Open High Low Close   Volume Adj Close 
2013-09-27 874.82 877.52 871.31 876.39 1258800 876.39 
2013-09-26 878.3 882.75 875 878.17 1259900  878.17 
2013-09-25 886.55 886.55 875.6 877.23 1649000 877.23 
2013-09-24 886.5 890.1 881.4 886.84 1467000 886.84 
2013-09-23 896.15 901.59 885.2 886.5 1777400 886.5 
2013-09-20 898.39 904.13 895.62 903.11 4345300 903.11 
2013-09-19 905.99 905.99 895.4 898.39 1597900 898.39 
2013-09-18 886.35 903.97 883.07 903.32 1934700 903.32 
2013-09-17 887.41 888.39 881 886.11 1259400  886.11 
2013-09-16 896.2 897 884.87 887.76 1336500  887.76 

當我運行它:

print Adj_mean() 

我有以下錯誤:

IndexError: list index out of range 

我該如何解決這個問題?

謝謝。

注:日收益公式:(X - Y)/ Y(X/Y) - 1;其中x =今天調近,且y =昨天ADJ接近

+0

它可能是cols從索引0開始而不是1? – zenpoy

+1

代碼運行,並給出'陣列([8.89666000e + 02,+ 8.93799000e 02,8.82847000e + 02,+ 8.88382000e 02,1.78859000e + 06,+ 8.88382000e 02])'。給我們一個可重複的樣品。 – Veedrac

+1

是 - 該代碼爲我工作,並給出:[8.89666000e + 02 8.93799000e + 02 8.82847000e + 02 8.88382000e + 02 1.78859000e + 06 + 8.88382000e 02] – zenpoy

回答

0

檢查你的* .csv文件,最後一行不爲Adj Close列具有價值。從谷歌下載的金融股票,這些歷史數據的最後一行表示第一天數據集中。根據你的日常回報公式,第一天沒有價值。

相關問題