pandas pct_change()函数返回错误的值

时间:2016-03-29 13:20:37

标签: python pandas

我有一个不断弄乱的脚本,我不确定源是什么。它似乎有时工作而不是其他工作。这是一个例子。

In [29]: pricesEquities=financialMarketPrices['equities'].dropna(axis[0,1],how='all'))

In [30]: pricesEquities.head()
Out[30]: 
               aud      cad     chf      eur     gbp      inr     jpy     sek  \
date                                                                            
2003-01-01  3007.1  6614.54  4630.8  2386.41  3940.4  1100.15  843.29  493.20   
2003-01-02  3027.6  6740.05  4630.8  2522.24  4009.5  1093.05  843.29  514.79   
2003-01-03  3055.5  6772.66  4899.5  2502.19  4004.9  1089.60  843.29  519.75   
2003-01-06  3075.4  6837.27  4916.2  2529.86  4001.4  1084.35  860.07  519.75   
2003-01-07  3074.5  6802.78  4887.0  2504.91  3957.4  1081.80  853.93  518.66   

               usd  
date                
2003-01-01  879.82  
2003-01-02  909.03  
2003-01-03  908.59  
2003-01-06  929.01  
2003-01-07  922.93  

In [31]: returnsEquities = pricesEquities.pct_change().iloc[1:]

In [32]: returnsEquities.head()
Out [32]:    aud     cad  chf     eur  gbp     inr  jpy     sek    usd
date                                                                 
2003-01-02   -1  414.00  NaN  189.23  NaN  145.11  NaN  210.13    NaN
2003-01-03  NaN     NaN  NaN     NaN    0     NaN  NaN  217.26    NaN
2003-01-06  NaN     NaN  NaN     NaN    0     NaN    0     NaN  65.33
2003-01-07  NaN  436.00  NaN  191.79    0  146.50    0     NaN  60.63
2003-01-08  NaN  452.67  NaN  188.93    0  147.43    0  214.14  59.13

这很奇怪,老实说我不知道​​错误的来源是什么。百分比变化函数似乎是它的来源,它有时是有效的,而不是其他看似随机的。有没有其他人之前处理过这样的事情?我的代码有什么内幕或不稳定吗?它还会在代码中的其他地方混乱,但这是最简单的返回计算,它仍然会混乱。有谁知道发生了什么事?

2 个答案:

答案 0 :(得分:1)

我确认了这个问题。我遇到了pct_change的问题,看到了这个并检查了我的版本的numexpr,发现它是2.4.4。

为了公平对待pandas和numexpr的开发者,我想我可能试图通过pip而不是通过conda来升级pandas,这可能会导致这些问题。

要解决这个问题,我想在Windows上做了以下几点:

/path/to/Anaconda/Scripts/conda.exe update conda
/path/to/Anaconda/Scripts/conda.exe update anaconda

之后事情似乎正常。

答案 1 :(得分:0)

问题解决了:我们使用的是连续体anaconda,我们认为安装错误。我们重新安装,现在一切似乎都在工作。