首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >为什么分类数据类型不能正确处理!= NaN比较?

为什么分类数据类型不能正确处理!= NaN比较?
EN

Stack Overflow用户
提问于 2020-03-03 16:48:59
回答 1查看 81关注 0票数 0

根据项目是否属于类别,在!=比较中似乎存在不一致的行为。如果值在类别中,!= NaN将返回False,这似乎与正常的!= NaN比较的评估方式不一致。当值不在类别中时,行为似乎是预期的。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import pandas as pd
import numpy as np

# Standard evaluation
'11' != np.NaN
#True

'A' != np.NaN
#True

s = pd.Series([np.NaN, '11']).astype('category')

s.ne('11')
#0    False   # <- What?
#1    False
#dtype: bool

s.ne('A')
#0    True
#1    True
#dtype: bool

# Without the category type the behavior is correct
pd.Series([np.NaN, '11']).ne('11')
#0     True
#1    False
#dtype: bool

这是一个错误,或者出于某种原因,categories?pd.__version__ = 0.25.0中的预期NaN行为,但也出现在1.0上。

EN

回答 1

Stack Overflow用户

发布于 2020-03-03 17:17:38

原因似乎是在处理类别类型数据时对待NaN的方式。对于分类数据,没有包含在类别中的值被NaN替换,即NaN被视为不存在的类别。我们可以通过创建一个序列来检查,如下所示并指定现有的类别:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
c = pd.Categorical(values=['1','2',np.nan,'3','4'], categories=['1','2','3'])

print(c)
[1, 2, NaN, 3, NaN]
Categories (3, object): [1, 2, 3]

通过检查docs,我们可以看到:

缺少的值不应包含在分类的类别中,而应仅包含在值中。相反,可以理解,NaN是不同的,并且始终是一种可能性

因此,当与现有类别中的值进行比较时,会始终认为缺少值是一种可能性。

使用上面的示例,我们可以看到缺少值NaN和不存在的类别'4'的值的相同行为

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
c != '3'
array([ True,  True, False, False, False])
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60511951

复制
相关文章
比较NaN和数字
首先要理解Python中的min函数,根据它的官方文档,有这样一句话:If multiple items are minimal, the function returns the first one encountered.
老齐
2020/07/20
1.9K0
浮点数的基本数据类型不能用 == 比较
比较两个浮点数,一个从零开始加 11 次 0.1,另一个用 0.1 乘以 11 计算。然后用 == 比较大小。
MickyInvQ
2020/09/27
7090
浮点数的基本数据类型不能用 == 比较
Java 为什么设计成 String 不能用 == 来进行比较
给一个小技巧,Java 的基本数据类型就是下面这些,这些数据类型是可以直接用 CPU 进行计算的。
HoneyMoose
2021/08/17
4440
Java 为什么设计成 String 不能用 == 来进行比较
浮点数之间的等值判断,基本数据类型不能用==来比较,包装数据类型不能用equals来判断
浮点数之间的等值判断,基本数据类型不能用==来比较,包装数据类型不能用equals来判断。
阮键
2021/01/21
3.4K0
c/c++ -nan(ind) NAN
nan -- 表示 出错,“不是一个数” not a number 的缩写。 按 IEEE 754 国际标准,当运算中出现无效数据时,给出 NaN. 许多情况会出现,例如 0 除 0,负数开平方,...
acoolgiser
2019/01/17
3.5K0
lodash源码分析之NaN不是NaN
暗恋之纯粹,在于不求结果,完全把自己锁闭在一个单向的关系里面。 ——梁文道《暗恋到偷窥》 本文为读 lodash 源码的第五篇,后续文章会更新到这个仓库中,欢迎 star:pocket-lodash gitbook也会同步仓库的更新,gitbook地址:pocket-lodash 本篇分析的是 eq 函数。 作用与用法 eq 函数用来比较两个值是否相等。遵循的是 SameValueZero 规范。 var obj1 = {test: 1} var obj2 = {test: 1} var obj3 =
对角另一面
2018/03/30
1.9K0
lodash源码分析之NaN不是NaN
本文为读 lodash 源码的第五篇,后续文章会更新到这个仓库中,欢迎 star:pocket-lodash
对角另一面
2018/01/17
1.8K0
[Go] GO数据类型分类
引用类型 1. 切片slice 2.映射map 3.函数func 4.方法(p *P)func 5.通道channel 值类型 数组 bool int string float 指针类型 nil可以赋
唯一Chat
2020/12/29
5440
文本分类常用算法比较
本文对文本分类中的常用算法进行了小结,比较它们之间的优劣,为算法的选择提供依据。
全栈程序员站长
2022/08/24
7220
可以迭代大部分数据类型的 for…of 为什么不能遍历普通对象?
我们知道,ES6 中引入 for...of 循环,很多时候用以替代 for...in 和 forEach() ,并支持新的迭代协议。for...of 允许你遍历 Array(数组), String(字符串), Map(映射), Set(集合),TypedArray(类型化数组)、arguments、NodeList对象、Generator等可迭代的数据结构等。for...of语句在可迭代对象上创建一个迭代循环,调用自定义迭代钩子,并为每个不同属性的值执行语句。
coder_koala
2020/12/17
1.2K0
可以迭代大部分数据类型的 for…of 为什么不能遍历普通对象?
python基础数据类型分类
Python属于弱类型语言,这个之前已经介绍过了,不想其他强类型语言那样,对于数据类型的定义非常严格。Python的基础数据类型有整数,浮点数,复数,字符串,布尔值,下面就来一一介绍一下。
python自学网
2021/11/28
4310
python基础数据类型分类
Go | struct 能不能进行比较
go 语言中规定 slice 之间不能比较,因此我们不能使用==操作符来判断两个slice是否含有全部相等元素。
CnPeng
2021/05/17
1.9K0
Go | struct 能不能进行比较
NULL不能和任何字段比较和运算
UPDATE dbo.PayPalPaymentInfo SET GrossAmount=TotalPrice+TaxAmount WHERE GrossAmount IS NULL --如果TaxAmount为NUll时,TotalPrice有值,会导致GrossAmount也为null --即NULL+任何数字都会是NULL --NULL不能和任何字段比较和运算 UPDATE dbo.PayPalPaymentInfo SET GrossAmount=TotalPrice+ISNULL(TaxAm
跟着阿笨一起玩NET
2018/09/18
7160
kotlin NaN坑
今天发现一个坑,在代码里尝试toBigDecimal抛出了NumberFormatException
阿超
2022/11/22
1.6K0
为什么OpenAI不能被计划?
然而,没有人说,OpenAI最初所做的这一切,注定要迎来AI的「iPhone时刻」。
新智元
2023/09/09
1680
为什么OpenAI不能被计划?
多种分类算法的性能比较
导入数据数据处理线性回归模型性能评估支持向量机回归模型性能评估K近邻分类模型性能测评回归树进行分类性能测评树模型的优缺点集成模型进行分类性能评测
用户3577892
2020/06/12
2.5K0
javascript的NaN属性
NaN 属性是代表非数字值的特殊值。该属性用于指示某个值不是数字。可以把 Number 对象设置为该值,来指示其不是数字值。
OECOM
2020/07/01
1.1K0
np.nan_to_num
numpy.nan_to_num(x, copy=True, nan=0.0, posinf=None, neginf=None)描述 使用0代替数组x中的nan元素,使用有限的数字代替inf元素(默认行为) 或者用户使用nan、posinf和neginf关键字来定义数字 参数 x : scalar or array_like 输入数据 copy : bool, optional if True,则创建x的副本 if False,则在原对象上替换 nan : int, float, optional 用
狼啸风云
2021/05/11
2.5K0
np.nan_to_num
SAP ABAP——数据类型(一)【数据类型概要及分类】
💬个人网站:【芒果个人日志】​​​​​​ 💬原文地址: SAP ABAP——数据类型(一)【数据类型概要及分类】 - 芒果个人日志 (wyz-math.cn) 💂作者简介: THUNDER王,一名热爱财税和SAP ABAP编程以及热爱分享的博主。目前于江西师范大学会计学专业大二本科在读,同时任汉硕云(广东)科技有限公司ABAP开发顾问。在学习工作中,我通常使用偏后端的开发语言ABAP,SQL进行任务的完成,对SAP企业管理系统,SAP ABAP开发和数据库具有较深入的研究。 💅文章概要:本文主
THUNDER王
2023/02/23
6790
SAP ABAP——数据类型(一)【数据类型概要及分类】
点击加载更多

相似问题

Python : Merge不能正确处理NaN

14

双数据类型将"NaN“解析为"NaN”为什么?

41

为什么Woocommerce不能正确处理“unset”?

124

正确处理PHP版本中的NAN

22

流动图像分类损失NAN

20
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文