Python,Pandas和numpy中的NaN

本文深入探讨了在Python中处理NaN值的复杂性,包括常见判断方法的误区及正确的实现方式,特别介绍了如何利用numpy和pandas库进行高效的数据清洗。
Python3.8

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

在处理数据时NAN值是非常常见的,但是NaN值你真的了解吗?
下面让楓尘君带大家了解一下这个神奇的NAN

在csv表格中长这样:
在这里插入图片描述
在python里展示为这样:
在这里插入图片描述我们创建这个值时是这样:

import numpy as np
np.nan

但是想判断是否是np.nan还真是有点难度:

a=np.nan
print(a==np.nan)
结果是False

print(a.equal(np.nan))
报错:AttributeError: 'float' object has no attribute 'equal'

print(a=="NaN")
False

print(a==float('NaN'))
False

print(str(a)=='NaN')
False

查看类型:

print(type(a))
结果:<class ‘numpy.float64’>

在参考链接1之后,终于判断成功

from math import isnan
print(isnan(a))
结果为True

举一反三,所以我发现,一下判断也成立:


print(str(a)=='nan')
True

print(np.math.isnan(a))
True

print(np.isnan(a))
True

当楓尘君兴致勃勃,手舞足蹈的使用np.math.isnan(a)进行判断时,竟然:
在这里插入图片描述又试了
np.isnan(a)
,还是报错:
在这里插入图片描述

发现只有,number类型(int float)才能用np.math.isnan和math.isnan。
wtf,我数据80%都是String,这怎么判断呢,正当我一筹莫展时,我发现了链接2

可以用pandas库来检验:

import pandas as pd
pd.isnull(np.nan)
#此时一样输出为True
#同样的pd.notnull()用来判断不为nan值

验证一下:
在这里插入图片描述完美通过,别说这NaN还真是挺让人头痛,希望看了这篇博客的人能避免此类小错误,楓尘君可是折腾了宝贵的两个小时呢!!!

您可能感兴趣的与本文相关的镜像

Python3.8

Python3.8

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值