coding过程中的一些小积累

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

2019-06-20  本文已影响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

上一篇 下一篇

猜你喜欢

热点阅读