2017-08-01 61 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