• python 的 None and nan


    由于None的存在,我们使用一些函数时就总会收到干扰,因此需要增加一个判断条件去完善它

    None表示空值,它是一个特殊 Python 对象, None的类型是NoneType

    None在 Python 解释器启动时自动创建, 解释器退出时销毁。
    在一个解释器进程中只有一个 None 存在, 因为不可能有其他对象会使用 None 已占用的内存(它就是占了个坑)
    所以只有: None is None and None == None

    • None不支持任何运算也没有任何内建方法
    • None和任何其他的数据类型比较永远返回False
    • None有自己的数据类型NoneType,不能创建其他NoneType对象(它只有一个值None)
    • None与0、空列表、空字符串不一样
    • None是没有像len,size等属性的
    import numpy as np
    print(None ==0,None == ' ',None == None,None == False, None==np.nan,None is np.nan)
    #False False True False False False

    要判断一个变量是否为None,直接使用,这个是本文中重要的点

    if a is None:
        pass

    1.nan的类型居然是float

    2.nan 该如何和其他数值区分开来

    import math
    import numpy as np
    type(np.nan)  #float
    math.isnan(np.nan)  #True
    math.isnan(x)==False  #即可表示

    nan,NaN,NAN,None比较

    nan来自于numpy中numpy.nan,字面意思应该是Not a Number。在不同代码中有nan,有NaN,有NAN,但其实他们都一样的

    import numpy as np
    np.nan is np.NaN is np.NAN
    #True

    None等于None,但是对于nan,nan并不等于nan

    None == None
    #True
     
    np.nan == np.nan
    #False

    判断时可以用

    np.isnan(np.nan)  #True

    下面介绍一个非nan的求和

    np.nansum([11,np.nan,123])
    #134.0

    nan个数的计算(利用nan !=nan 为True)

    a = np.array([1,2,3,4,np.nan,5,np.nan,np.nan])
    #array([  1.,   2.,   3.,   4.,  nan,   5.,  nan,  nan])
     
    np.count_nonzero(a != a)
    #3

    还可以使用pd.isnull()

    def employmentLength_to_int(s):
        if pd.isnull(s):
            return s
        else:
            return np.int8(s.split()[0])
  • 相关阅读:
    python-列表生成式
    python-迭代
    python接口自动化测试-requests下载图片
    python接口自动化测试-requests请求异常处理
    python接口自动化测试-requests.get()
    什么是单元测试?如何做好单元测试?
    Elasticsearch 6 Mapping设置
    git pull报“unable to update local ref”解决方式
    Artifactory 简介
    maven项目版本管理
  • 原文地址:https://www.cnblogs.com/cgmcoding/p/14153513.html
Copyright © 2020-2023  润新知