【问题标题】:How to get definite answer instead of nan in Python?如何在 Python 中得到明确的答案而不是 nan?
【发布时间】:2018-11-14 04:46:45
【问题描述】:

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

【问题讨论】:

  • 请重新格式化为代码而不是引用。

标签: python pandas financial


【解决方案1】:

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

的输出
p.Close[1:]

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

p.Close[1:].values

所以现在的 ret = 行是

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

这应该可以满足您的需求。如有其他需要,请发表评论。

【讨论】:

  • 谢谢,够用了。
猜你喜欢
  • 1970-01-01
  • 2023-03-04
  • 1970-01-01
  • 2018-05-31
  • 1970-01-01
  • 2022-11-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多