重大发现,nan原来是float类型。。。。

89 篇文章 6 订阅
58 篇文章 2 订阅

        数据分析里缺失值处理是个常见的任务,我一直以为nan或者NAN是个numpy或者pandas自定义的类型,但是今天做项目的时候,无意中发现,原来nan是个float类型,真是刷新了我的认知,当然也可能是我见识短浅吧:)。

        事情是这样的,我有个需求,我数据里有两个列,长度不一致,从excel里读取出来pandas默认处理给短的那列添加了nan,我会提供给用户一个下拉框,让用户选择要处理的列,然后我会把用户选择的列和索引转成一个字典,那么,有时字典里就会出现有的key的值为nan,因为实际上这些没有值的列没什么用,所以我想把这些key直接删掉,然后我就遍历,如果data[key]==np.nan,就del data[key],但我这样做了,发现没有找到缺失值的key,所以我就打印了一下value的type,发现不管是数字还是nan,都是float类型,至此,我才发现,nan根本就不是什么自定义类型,就是可以认为是float类型的一种内置类型。

        知道了这个点后,那么到底怎么才能找到缺失值的key呢,于是我百度了一下,缺失值判断,发现了以下几种方法

1.numpy判断

import numpy as np
nan = float('nan')
print(np.isnan(nan))

2.pandas判断

import pandas as pd
nan = float('nan')
print(pd.isna(nan))

3.math判断

import math
nan = float('nan')
print(math.isnan(nan))

从以上几种方法里可以看到,就是说nan是用float强转来的,而且只有少数一个字符串可以这样操作,比如inf,nan等,如果用其它字符串,你这么操作会报错,所以,本质来说,nan其实是python的一种内置类型(可能以前学过,但是后来忘了),很明显python对nan,inf做了特殊处理,所以我们才可以用float('nan')这样强转,math.isnan()才能判断。

  • 5
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

羸弱的穷酸书生

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值