Pandas检测None和Nan的实现方式

 更新时间:2025年09月01日 16:36:01   作者:SunnyRivers  
文章总结:Pandas中None(空值)和NaN(非数)需区分检测,isnull/isna用于识别缺失值,math.isnan检测NaN,is运算符或==检测None,两者概念不同,需根据场景选择合适方法

前言

使用pandas的时候经常需要检测空值,但每次感觉都判断不全或者感觉很困惑,因此这里做个简单的总结

None

None是Python的特殊类型,NoneType对象,它只有一个值None.它不支持任何运算也没有任何内建方法。

None和任何其他的数据类型比较永远返回False。

None有自己的数据类型NoneType。你可以将None复制给任何变量,但是你不能创建其他NoneType对象。

  • 数据类型
>>>type(None)
<class 'NoneType'>

Nan

python 中Nan是not a number(非数)它即不是无穷大, 也不是无穷小,无穷大减无穷大会导致NaN,无穷大乘以0或无穷小或除以无穷大会导致NaN,有NaN参与的运算, 其结果也一定是NaN,NaN != NaN

  • 数据类型
>>>type(np.nan)
<class 'float'>

Null

  • 空字符串
>>>type('')
<class ''str'>

如何检测

个人感觉最好用的是pd.isnull(或pd.isna)

isnull和isna区别

isnull是isna的别名,既然一样为什么要搞两个名字?Pandas dataframe是根据R的dataframe设计的,而R语言中na和null是两种不同的数据类型,因此有isna和isnull,python就保留了这两个方法,isnull是isna的别名而已;

另一方面,pandas是建立在numpy之上的,numpy中又没有na或null值,而是用np.nan来表示缺失值,所以pd.isnull不仅可以检测np.nan也可以检测None

注意

pd.isnull是不可以检测字符串的,比如’',‘nan’,‘None’。这个也很好理解,字符串有字符串的判断方式。

比较全面的判断这些与空值有关的方法

i == '' or pd.isnull(i) or pd.isnull(float('nan')) (或者 i =='nan') or i =='None'

煮个栗子

list = ['nan', '', 'None', None, np.nan]
for i in list:
    if i == '' or pd.isnull(i) or pd.isnull(float('nan')) or i == 'None':
        print(i)

结果

nan

None
None
nan

后记

当然除了用pandas,python中还有其他方式检测None和Nan。

  • math.isnan

首先,让我们看一下如何检测NaN。Python提供了一个名为math.isnan()的函数,可以用来检测一个值是否为NaN。这个函数需要导入math模块才能使用。下面是一个示例代码:

import math

x = float('nan')
if math.isnan(x):
    print("x is NaN")

在上面的代码中,我们将一个NaN值赋给变量x,然后使用math.isnan()函数来检测x是否为NaN。如果是,就会打印出"x is NaN"。

  • is运算符检测None
x = None
if x is None:
    print("x is None")

在上面的代码中,我们将None赋给变量x,然后使用is运算符来检测x是否为None。

如果是,就会打印出"x is None"。另外,还可以使用==运算符来检测变量是否等于None,这与使用is运算符的结果是等效的。

需要注意的是:

  • NaN和None是两种不同的概念。NaN用于表示非法的数字,而None表示空值或缺失值。
  • 因此,在不同的情况下,我们需要使用不同的方法来检测它们。

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Python对PDF文件的常用操作方法详解

    Python对PDF文件的常用操作方法详解

    PDF是Portable Document Format的缩写,这类文件通常使用`.pdf`作为其扩展名。在日常开发工作中,最容易遇到的就是从PDF中读取文本内容以及用已有的内容生成PDF文档这两个任务。本文为大家介绍了几个Python中常见的PDF操作,需要的可以参考一下
    2022-05-05
  • django用户注册、登录、注销和用户扩展的示例

    django用户注册、登录、注销和用户扩展的示例

    本篇文章主要介绍了django用户注册、登录、注销和用户扩展的示例,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-03-03
  • Python scipy实现差分进化算法

    Python scipy实现差分进化算法

    差分进化算法是广义的遗传算法的一种,核心思想是变异,这篇文章主要为大家介绍的则是著名的scipy库中对差分进化算法的实现,希望对大家有所帮助
    2023-08-08
  • pycharm配置当鼠标悬停时快速提示方法参数

    pycharm配置当鼠标悬停时快速提示方法参数

    这篇文章主要介绍了pycharm中配置当鼠标悬停时快速提示方法参数,本文图文并茂给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-07-07
  • 使用PyCharm批量爬取小说的完整代码

    使用PyCharm批量爬取小说的完整代码

    这篇文章主要介绍了使用PyCharm批量爬取小说,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-04-04
  • Python web实战教程之Django文件上传和处理详解

    Python web实战教程之Django文件上传和处理详解

    Django和Flask都是Python的Web框架,用于开发Web应用程序,这篇文章主要给大家介绍了关于Python web实战教程之Django文件上传和处理的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2023-12-12
  • 如何使用python读取Excel指定范围并转为数组

    如何使用python读取Excel指定范围并转为数组

    python处理数据文件的途径有很多种,下面这篇文章主要给大家介绍了关于如何使用python读取Excel指定范围并转为数组的相关资料,文中通过图文以及实例代码介绍的非常详细,需要的朋友可以参考下
    2022-11-11
  • Python使用贪婪算法解决问题

    Python使用贪婪算法解决问题

    这篇文章主要介绍了Python使用贪婪算法解决问题,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-10-10
  • Python自动化操作Excel方法详解(xlrd,xlwt)

    Python自动化操作Excel方法详解(xlrd,xlwt)

    Excel是Windows环境下流行的、强大的电子表格应用。本文将详解用Python利用xlrd和xlwt实现自动化操作Excel的方法详细,需要的可以参考一下
    2022-06-06
  • 解决Django Haystack全文检索为空的问题

    解决Django Haystack全文检索为空的问题

    这篇文章主要介绍了解决Django Haystack全文检索为空的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-05-05

最新评论