码农知识堂 - 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好书推荐

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

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

  • 相关阅读:
    DDD架构
    Codeforces Round 901 (Div. 1) B. Jellyfish and Math(思维题/bfs)
    基于黏菌优化的BP神经网络(分类应用) - 附代码
    点击试剂Methyltetrazine-PEG4-NHS ester,甲基四嗪-PEG4-琥珀酰亚胺酯,CAS:1802907-9
    1123 舍入(测试点2,6,7,8)
    ES性能优化最佳实践- 检索性能提升30倍!
    360 G800行车记录仪,不使用降压线如何开机,8芯插头的定义。
    ubuntu命令
    一云多芯 | 云轴科技ZStack助力张家口建设信创资源池
    二叉搜索树相关题目总结(一) 力扣 Python
  • 原文地址:https://blog.csdn.net/robot_learner/article/details/126535158
  • 最新文章
  • 沪漂五周年了:我越来越迷茫了
    Agentic Skill Routing 实战:别再把所有 Skill 塞进 AI Agent 上下文
    MySQL-Seconds_behind_master的精度误差
    [MAF预定义ChatClient中间件-03]CachingChatClient——利用缓存省钱省时间
    AI的至暗历史:从万众期待到被政府撤资,AI的两次死亡徘徊
    Agent OS :五种驯服不确定性的范式
    PortSwigger SQL注入LAB11
    数据库即时编译JIT
    [Begin]AI Learn Data Day 0
    深度学习进阶(二十七)现代 LLM 的核心架构设计其二:SwiGLU
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号