美文网首页coding过程中的一些小积累
Python 如果提示出现NaN 或 Inf 该怎么排查?

Python 如果提示出现NaN 或 Inf 该怎么排查?

作者: 徐卜灵 | 来源:发表于2019-06-20 11:18 被阅读0次

    问题描述:

    ValueError: Input contains NaN, infinity or a value too large for dtype('float64').

    1. 空值排查
    nan_list = df.isnull().sum().tolist()#把每一列的空值个数加起来
    sum(nan_list) #如果sum(nan_list) 仍为0,则不存在空值;如果不为0,则存在空值。
    

    同理:

    1. 无穷值排查

    这里的df的列都必须是数值型,非数值会报错。或者可以用df[num_cols]

    inf_list= np.isinf(df).sum().tolist()#把每一列的无穷值个数加起来
    sum(inf_list)#如果sum(nan_inf) 仍为0,则不存在无穷值;如果不为0,则存在。
    
    1. 定位异常
      以无穷值异常为例
    abnormal_index = [ [inf_list.index(i)] for i in inf_list if i != 0 ]#遍历列表,找到所有非0值的索引。
    print(df.columns[abnormal_index])#当出现相同的值时,会出现index相同的情况建议使用下一种方法:
    
    abnormal_index = [i for i,v in enumerate(inf_list) if v!=0]
    print(df.columns[abnormal_index])
    

    异常值的处理,就是另一个问题了!

    2019-06-20

    相关文章

      网友评论

        本文标题:Python 如果提示出现NaN 或 Inf 该怎么排查?

        本文链接:https://www.haomeiwen.com/subject/fqldqctx.html