我不明白为什么下面的主代码从一个相对简单的python数据帧操作中给出了不一致的输出。主代码中似乎有问题的部分如下:
dfResult = dfPrices/dfPrices.shift(1)
“dfPrices”和“dfResult”都是数据帧。你知道吗
主代码首先检索价格数据并以pandas面板类型的形式存储它。然后使用相同的固定/不变的数据,我循环了1000次,做了简单的数据帧分割操作,应该会得到相同的结果。每当输出不一致时,它就会打印出不一致的值。从1000个循环中,我通常得到5-20个不一致的输出。大多数被认为不一致的输出都有一个0.0的值,但有时也会是一些非零数。所以平均错误率是1%,但是如果我使用更复杂的操作,如果下载的数据量增加,错误率可以达到10%。pandas模块中可能有bug还是我的代码?你知道吗
import pandas as pd
import pandas_datareader.data as web
startDate = pd.datetime(2007,7,1)
endDate = pd.datetime(2014,7,1)
stockList = ['RWX','VNQ','IJJ','IVW','VWO','IVE','TLT','GLD','SHY']
data = web.DataReader(stockList, 'yahoo', startDate,endDate)
#The for loop below is not necessary, it's just filling out some NaN values
for i in data.items:
data.loc[i,:,:].fillna(method='ffill', inplace=True)
dfPrices = data['Adj Close']
dfResult = dfPrices/dfPrices.shift(1)
reference = dfResult.loc[:,'GLD'][-1]
print 'Reference: '+str(reference)
for i in xrange(1000):
dfResult = dfPrices/dfPrices.shift(1)
actualResult = dfResult.loc[:,'GLD'][-1]
if actualResult != reference:
print actualResult
仅供参考,我使用的是Windows10和Anaconda发行版。我有Pandas版本0.17.0和Pandas datareader版本0.2.0
如果您对此有任何建议,我将不胜感激。非常感谢。你知道吗
@Jeff在上面的评论中回答了我的问题。通过将numexpr从2.4.4更新到2.4.6版本,问题就不存在了。你知道吗
相关问题 更多 >
编程相关推荐