熊猫:雅虎财经缺少价值

时间:2019-09-28 13:58:15

标签: python nan yahoo infinite datareader

尽管我通过该论坛和其他来源进行搜索,但我仍然不知道如何解决此问题。

说明:我正在运行一个脚本(如下),该文件用于下载FTSE MIB 40中所有股票的价格,以便尝试最佳的协整货币对。不幸的是,似乎在运行脚本时(已在其他市场使用),它报告nans或无限值错误。我尝试使用dropna,但仍然有问题。这是我的整个代码:

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import statsmodels
from statsmodels.tsa.stattools import coint
from statsmodels.tsa.stattools import adfuller
import yfinance as yf
import pandas_datareader as pdr
import seaborn

ftse_mib40=['A2A.MI','AMP.MI','ATL.MI','AZM.MI','BAMI.MI','BPE.MI','BZU.MI','CPR.MI','CNHI.MI','DIA.MI','ENEL.MI','ENI.MI','EXO.MI','RACE.MI','FCA.MI','FBK.MI','G.MI','HER.MI','ISP.MI','IG.MI','JUVE.MI','LDO.MI','MB.MI','MONC.MI','NEXI.MI','NXEN','PIRC.MI','PST.MI','PRY.MI','REC.MI','SPM.MI','SFER.MI','SRG.MI','STM.MI','TIT.MI','TEN.MI','TRN.MI','UBI.MI','UCG.MI','UNI.MI','US.MI']
ftse_yah=pdr.get_data_yahoo(ftse_mib40,start='2017-01-01',end='2019-09-27')
ftse_matrix=ftse_yah['Adj Close']
ftse_matrix=ftse_matrix.replace([np.inf, -np.inf], np.nan).dropna(how='all')

def find_cointegrated_pairs(data):
    n = data.shape[1]#cioè numero colonne
    score_matrix = np.zeros((n, n))
    pvalue_matrix = np.ones((n, n))
    keys = data.keys()
    pairs = []
    for i in range(n):
        for j in range(i+1, n):
            S1 = data[keys[i]]
            S2 = data[keys[j]]
            result = coint(S1, S2)
            score = result[0]
            pvalue = result[1]
            score_matrix[i, j] = score
            pvalue_matrix[i, j] = pvalue
            if pvalue < 0.02:
                pairs.append((keys[i], keys[j]))
    return score_matrix, pvalue_matrix, pairs
tstat,pv,coppie=find_cointegrated_pairs(ftse_matrix)

最后一个(非常)愚蠢的问题:知道如何在矩阵中定位所有无限/ nan值吗?谢谢,抱歉,代码很长

1 个答案:

答案 0 :(得分:0)

要确定数据框各列中缺失值的数量,可以运行以下命令

pd.isnull(ftse_matrix).sum()

您将看到ftse_matrix

中仍然缺少值

要丢弃它们,请替换

ftse_matrix=ftse_matrix.replace([np.inf, -np.inf], np.nan).dropna(how='all')

与此

ftse_matrix=ftse_matrix.dropna()

对于dropna,参数how='all'仅在缺少行中所有值的情况下才会从数据框中删除行