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

问题描述:

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容