如何在Python中获得明确的答案而不是nan?

如何在Python中获得明确的答案而不是nan?,python,pandas,financial,Python,Pandas,Financial,我需要帮助来理解这段代码的输出。为什么我得到的是Nan而不是浮点值?请建议进行必要的修改,要求: import matplotlib.pyplot as plt from scipy import stats import pandas as pd import fix_yahoo_finance as fyf from pandas_datareader import data as pdr import numpy as np fyf.pdr_override() p=pdr.get_dat

我需要帮助来理解这段代码的输出。为什么我得到的是Nan而不是浮点值?请建议进行必要的修改,要求:

import matplotlib.pyplot as plt
from scipy import stats
import pandas as pd
import fix_yahoo_finance as fyf
from pandas_datareader import data as pdr
import numpy as np
fyf.pdr_override()
p=pdr.get_data_yahoo('IBM',start ='2009-01-01',end ='2013-01-01')
p.to_csv('YF_IBM_2009_2013.csv')
print(p.head())
ret = (p.Close[1:]-p.Close[:-1])/p.Close[1:]
print ('ticker=','IBM','W-test, and P-value')
print (stats.shapiro(ret))
输出为:

ret = (p.Close[1:]-p.Close[:-1])/p.Close[1:]

print ('ticker=','IBM','W-test, and P-value')

print (stats.shapiro(ret))

ticker= IBM W-test, and P-value

(nan, 1.0)

您的代码有一个小问题。当你直接减去两个熊猫系列,指数就出现了。下面是的输出

p.Close[1:]

将索引与值放在一起是获得nan值的原因。要仅选择熊猫系列中的值,必须执行以下操作

p.Close[1:].values
所以ret=线现在是

ret = ((p.Close[1:].values-p.Close[:-1].values)/(p.Close[1:].values))

这应该符合你的要求。如果需要任何其他内容,请进行注释。

请将格式改为代码而不是引号。谢谢,这就足够了。