Python

None、null和NaN

2020-12-04  本文已影响0人  Panda_phc

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

1、None

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

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

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

特征

>>> None == 0 
False
>>> None == '' 
False
>>> None == False 
False
>>> dir(None)
['__bool__',
 '__class__',
 '__delattr__',
 '__dir__',
 '__doc__',
 '__eq__',
 '__format__',
 '__ge__',
 '__getattribute__',
 '__gt__',
 '__hash__',
 '__init__',
 '__init_subclass__',
 '__le__',
 '__lt__',
 '__ne__',
 '__new__',
 '__reduce__',
 '__reduce_ex__',
 '__repr__',
 '__setattr__',
 '__sizeof__',
 '__str__',
 '__subclasshook__']

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

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

原数据为下图:


Xnip2020-12-03_14-36-57.png
>>> num = df.loc[1,1] 
>>> num
nan
>>> result = num + 2
>>> result 
>>> nan

个人理解的等式

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

猜你喜欢

热点阅读