码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • None 和 NaN分不清? pandas 难点彻底搞懂


    Pandas 和 Numpy 是数据挖掘和数据科学中广泛使用的工具,但有时人们会对 None 和 NaN 感到困惑,它们非常相似但略有不同的数据类型。 在这里,我们通过一些示例彻底把问题弄清楚。

    主要区别

    Pandas 中 None 和 NaN 的区别可以总结为:

    1. None 表示信息确实,但其类型不是数字。 因此,任何包含 None 值的列(比如 Pandas Series)肯定不是数字类型,例如 int 或 float。
    2. NaN 代表非数字,是数字类型。 这意味着可以在 int 或 float 类型的数值列中找到 NaN。

    动手测试

    在下面的测试中,None 值会自动转换为 NaN 值,因为该list中的其他数值是数字, Pandas 自动将 None 转换为 NaN。NaN类型对于很多算术操作来更简单,因此被优先考虑。

    import pandas as pd
    pd.Series([1,None])
    
    • 1
    • 2
    0    1.0
    1    NaN
    dtype: float64
    
    • 1
    • 2
    • 3

    在下面的测试中,该list系列中的另一个值是一个字符串,因此 None 值保持为 None 值。 这使得整个系列对象类型。

    import pandas as pd
    pd.Series(["1",None])
    
    • 1
    • 2
    0       1
    1    None
    dtype: object
    
    • 1
    • 2
    • 3

    None 类型会导致更多的数值操作错误

    为什么我们说,使用 NaN 类型对于许多常用操作会更有利?
    因为NaN对许多算术运算来说是合法的。 例如,下面涉及None的操作会报错:

    None + 1
    
    • 1
    ---------------------------------------------------------------------------
    
    TypeError                                 Traceback (most recent call last)
    
     in 
    ----> 1 None + 1
    
    
    TypeError: unsupported operand type(s) for +: 'NoneType' and 'int'
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    但如果是NaN类型,就不会报错。

    import numpy as np
    np.nan + 1
    
    • 1
    • 2
    nan
    
    • 1

    怎么查看dataframe中的数值是None或者NaN

    有几种不同的方法可以检查数据类型是 None 还是 NaN 值;
    首先可以使用 numpy,函数 np.isnan() 可以检查一个值是否为 NaN 值,但它不适用于 None 值。

    np.isnan(np.nan)
    
    • 1
    True
    
    • 1

    零一方法,在 Pandas 中,有 isnull() 和 isna() 两个函数,它们实际上是同样的函数。 isnull() 只是 isna() 方法的别名; 基本上 isnull() 可以用来检测缺失值,因此 nan 或 None 都将为 True。

    pd.isnull(np.nan)
    
    • 1
    True
    
    • 1
    pd.isnull(None)
    
    • 1
    True
    
    • 1

    英文链接

    AI好书推荐

    北大出版社,人工智能原理与实践 人工智能和数据科学从入门到精通 详解机器学习深度学习算法原理

    人工智能原理与实践 全面涵盖人工智能和数据科学各个重要体系经典

  • 相关阅读:
    文字生成图片
    java文件上传下载漏洞修复工具类
    简单几个配置 Go 实现敏感数据脱敏,可以自定义数据脱敏规则(附完整实现源码)
    搜索引擎RAG召回效果评测MTEB介绍与使用入门
    servlet中doGet方法无法读取body中的数据
    第4章 前馈神经网络
    windows安装配置JDK和Tomcat
    【JavaWeb】JSP学习笔记
    [springboot专栏]使用redisson实现分布式锁
    Windows 批处理的应用(ProtoBuf编译自动化工具)
  • 原文地址:https://blog.csdn.net/robot_learner/article/details/126535158
  • 最新文章
  • 【JVM】编译执行与解释执行的区别是什么?JVM 使用哪种方式?
    用 Hashids 优雅解决 C 端自增 ID 暴露问题
    V8引擎 精品漫游指南--Ignition篇(上) 指令 栈帧 槽位 调用约定 内存布局 基础内容
    LLVM Pass快速入门(四):代码插桩
    milkup:桌面端 markdown AI续写和即时渲染
    基于项目工程构建SBOM(软件物料清单)的研究
    鸿蒙应用开发UI基础第二节:鸿蒙应用程序框架核心解析与实操
    .NET 中如何快速实现 List 集合去重?
    扣子Coze实战:从0到1打造抖音+小红书热点监控智能体
    浅谈数据访问层
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号