首页 > 解决方案 > 如何在 Python 中得到明确的答案而不是 nan?

问题描述

我需要帮助来理解这段代码的输出。为什么我得到 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)

标签: pythonpandasfinancial

解决方案


您的代码有一个小问题。当您直接减去两个熊猫系列时,索引就会出现。下面是输出

p.Close[1:]

在此处输入图像描述

拥有索引和值是您获得 nan 值的原因。要仅从熊猫系列中选择值,您必须这样做

p.Close[1:].values

所以现在的 ret = 线是

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

这应该可以满足您的需求。如果需要其他任何内容,请发表评论。


推荐阅读