问题描述:
ValueError: Input contains NaN, infinity or a value too large for dtype('float64').
- 空值排查
nan_list = df.isnull().sum().tolist()#把每一列的空值个数加起来
sum(nan_list) #如果sum(nan_list) 仍为0,则不存在空值;如果不为0,则存在空值。
同理:
- 无穷值排查
这里的df的列都必须是数值型,非数值会报错。或者可以用df[num_cols]
inf_list= np.isinf(df).sum().tolist()#把每一列的无穷值个数加起来
sum(inf_list)#如果sum(nan_inf) 仍为0,则不存在无穷值;如果不为0,则存在。
-
定位异常
以无穷值异常为例
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
网友评论