Pandas pct_change对手动

时间:2017-08-01 12:02:17

标签: python pandas finance

任何人都可以解释为什么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 个答案:

答案 0 :(得分:3)

问题是第二个公式是错误的:

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