2017-08-01 62 views
1

任何人都可以解釋爲什麼pct_change功能使用更人工計算時,給出了略有不同的數字:熊貓pct_change給出略有不同的答案手動

pct_change功能:

print(prices) 
     0                  
0 1035.23                  
1 1032.47                  


print(prices.pct_change(1)) 

      0                 
0  NaN                 
1 -0.002666                 

更多手動功能

(prices - prices.shift(1))/prices 

      0                 
0  NaN                 
1 -0.002673 

這裏的區別背後的原因是什麼?

+1

在這個公式中'(價格 - prices.shift(1))/ prices'你應該除以「price.shift(1))」。 –

回答

1

問題是第二個公式是錯誤的:

prices = pd.DataFrame({0:[1035.23,1032.47]}) 
print (prices) 

print(prices.pct_change(1)) 
      0 
0  NaN 
1 -0.002666 

print(prices/(prices.shift())-1) 
      0 
0  NaN 
1 -0.002666 

正如評論指出Andrew L

print((prices - prices.shift(1))/prices.shift(1)) 
      0 
0  NaN 
1 -0.002666