当前位置: 首页 > news >正文

【Pandas】Python中None、null和NaN

经常混淆。

空值一般表示数据未知、不适用或将在以后添加数据。缺失值指数据集中某个或某些属性的值是不完整的。

一般空值使用None表示,缺失值使用NaN表示。

注意: python中没有null,但是有和其意义相近的None。


目录

1、None

2. NaN

3. Pandas特别说明

判断缺失值方法

个人理解的等式


1、None

None表示空值,它是一个特殊 Python 对象, None的类型是NoneType
None 是 NoneType 数据类型的唯一值,我们不能再创建其它 NoneType 类型的变量,但是可以将 None 赋值给任何变量。

>>> type(None)
<class 'NoneType'>

该对象在Python解释器启动时自动创建,解释器停止时销毁。

特点

  • None 不支持任何运算
  • None 和任何其他的数据类型比较永远返回False
  • None 有自己的数据类型NoneType,不能创建其他NoneType对象(它只有一个值None)
  • None 与0、空列表、空字符串不一样
  • 可以将None赋值给任何变量,也可以给None值变量赋值
  • None是没有像len,size等属性的,要判断一个变量是否为None,直接使用
>>> None == 0 
False
>>> None == '' 
False
>>> None == False 
False

作为没有return关键函数的返回值

对于所有没有 return 语句的函数定义,Python 都会在末尾加上 return None,使用不带值的 return 语句(也就是只有 return 关键字本身),那么就返回 None。

def func()没有写返回值,那么返回值就是None

>>> def function():print('hanshu')result = function() print(result)
hanshu
None

2. NaN

当使用Numpy或者Pandas处理数据的时候,经常会遇到条目中没有没有数据,然后当我们在去打印的时候就会出现NaN。

  • NaN是没有办法和任何数据进行比较。
  • 它和任何值都不相等,包括他自己。
  • 它的类型是float,但是和任何值做计算的结果都是NaN
import pandas as pd
df = pd.read_excel('/Users/mac/Desktop/test.xlsx',header=None)
df 0   1   2
0   1   2.0 3
1   4   NaN 6
2   7   8.0 9

原数据为下图:

>>> num = df.loc[1,1] 
>>> num
nan
>>> result = num + 2  # nan+2是nan哦
>>> result 
>>> nan

nan和np.nan的关系是?一样的。

3. Pandas特别说明

  • 在pandas中的空值是""(直接一对双引号);空字符串:" ",中间多了一个空格
  • 缺失值在DataFrame指的是NaN或者NaT,在Series中指的是none或者nan
  • 当我们需要人为指定一个缺失值的时候,默认用None和np.nan来表示

 其次,我们看看Pandas中None和NaN的关联:np.nan就是NaN,数据类型float64

  • 在我们创建的时候,默认二者是相同的;
  • 如果我们指定赋值为None,在Series中依然会变成none,并且是以float64的数据类型显示。

下面截图有问题,None不允许赋值。

 有问题

判断缺失值方法

 Pandas中提供了一些用于检查处理空值缺失值的函数或方法

  • 使用isnull()notnull()函数可以判断数据集中是否存在空值和缺失值
  • 对于缺失数据可以使用dropna()fillna()方法对缺失值进行删除和填充,如果是None则不生效。

个人理解的等式

  • NULL(数据库)=None(python列表)=NaN(pandas)
  • 空字符(数据库)=空字符(python列表)=空字符(pandas)
  • 从csv中获取数据时:空值(csv)=NULL(数据库)=NaN(pandas)
  • 转为csv数据时:数据库中的NULL\空字符pandas中的NaN\空字符,都变成csv中的空值。


 


参考:

None、null和NaN - 简书

图解pandas缺失值处理_pandas none赋值_尤尔小屋的猫的博客-CSDN博客

http://www.lryc.cn/news/43528.html

相关文章:

  • 线性表的学习
  • 51单片机学习笔记_13 ADC
  • 类和对象的基本认识之内部类
  • 【操作系统】进程和线程是什么之间是如何通信的
  • setup、ref、reactive、computed
  • 【Gem5】有关gem5模拟器的资料导航
  • 【CSS】清除浮动 ① ( 清除浮动简介 | 清除浮动语法 | 清除浮动 - 额外标签法 )
  • Shell test 命令
  • pytorch项目实战之实时人脸属性检测系统
  • JS和Jquery
  • Linux设置固定IP
  • 面试准备啊
  • 机器人工程专业师生的第二张名片
  • 【云原生之企业级容器技术 Docker实战一】Docker 介绍
  • 【Microsoft】与 Bing AI 进行 ⌈狂飙⌋
  • PyDolphinScheduler发布4.0.2版本,修复无法提交工作流到DolphinScheduler 3.1.4的问题
  • go-cqhttp安装使用
  • 论文阅读和分析:Hybrid Mathematical Symbol Recognition using Support Vector Machines
  • 05期:面向业务的消息服务落地实践
  • 代码随想录|day26|回溯算法part03● 39. 组合总和● 40.组合总和II● 131.分割回文串
  • linux-文件切割-splitcsplit
  • USB键盘实现——设备限定描述符(五)
  • 【C++】map和set(一文拿捏,包教包会)
  • 爬虫Day2 正则表达式
  • LeetCode-0324~28
  • Vue2自己封装的基础组件库或基于Element-ui再次封装的基础组件库,如何发布到npm并使用(支持全局或按需引入使用),超详细
  • 【开发】中间件——MongoDB
  • C++进阶 — 【C++11】
  • Mac安装Homebrew
  • 【详细】利用VS2019创建Web项目,并发送到IIS,以及IIS与ASP.NET配置