数据库中的空值与NULL的区别以及python中的NaN和None

数据库里面的”空值”有两种:空字符(“”)、空值(NULL)。
两种存储方式在数据库中都很常见,实际中根据业务或者个人习惯可以用这两种方式来存储“空值”。那这两种到底有什么区别,下面通过例子直接来展示:

-- 创建表test
create table `test` (
`id`  int not null ,
`name`  varchar(255) null ,
`date`  timestamp null ,
`class`  varchar(255) null 
);
insert into test (id,name,date,class) values (1,'张三','2017-03-01','a班');
insert into test (id,name,date,class) values (2,'李四','2017-03-02','');
insert into test (id,name,class) values (3,'王五','c班');
select * from test;

1

select count(date),count(class) from test;

2

看到这里应该明白了,直观看空字符和NULL的区别在于,在做count计算的时候,空字符也会被计算在里面,而NULL不会。有些同学在使用where is null 和is not null 的时候也要注意数据库中的“空值”是空字符还是NULL。不然统计结果可能并不是你想要的。

平时有些数据是需要借助python 来处理的,我们来看看python获取数据的时候有哪些需要注意的。
python有两种方式获取数据:
1. 一种是把数据从MYSQL 中导出到txt或者csv,然后本地读取;
2. 另一种是python直接链接数据库,读取数据;
先看第一种:导出到csv,python 读取

3
第二种:
4

两种方式读取的数据居然不一样!

  1. 第一种把数据从MYSQL导出后,python读取时,空值即为NULL;
  2. 第二种链接数据库后,python能读取表结构,数据库的NULL对应列表中的None以及pandas中的NaN(如果字段类型是时间,则为NaT)。而数据库中的空字符,则被识别为空字符。

个人理解的等式

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

在python处理完数据后,往数据库写数据的时候也一样。注意注意!

如果对python中的None和NaN有疑问,可以看这位博主的 博文

### 回答1: A:在pandas库,isna和isnull函数都用于判断DataFrame或Series空值情况,两者的功能是相同的,没有太大的区别。isnull函数是isna函数的别名,因此isnull函数和isna函数可以互换使用,只需要根据个人习惯选择使用其一种即可。 ### 回答2: 在Python,pandas库提供了isna()函数和isnull()函数用于检查数据的缺失。 isna()函数是一个pandas.Series和pandas.DataFrame对象的方法,用于检查数据是否为缺失。如果数据是缺失,则返回True;否则,返回False。它还可以用于判断整个序列或数据框是否存在缺失。例如: ```python import pandas as pd data = pd.Series([1, 2, None, 4]) print(data.isna()) ``` 输出结果: ``` 0 False 1 False 2 True 3 False dtype: bool ``` isnull()函数是isna()函数的别名,两者功能完全相同。isnull()函数用于检查数据是否为缺失,并返回一个布尔。例如: ```python import pandas as pd data = pd.Series([1, 2, None, 4]) print(data.isnull()) ``` 输出结果: ``` 0 False 1 False 2 True 3 False dtype: bool ``` 因此,isna()函数和isnull()函数在功能上完全相同,只是命名不同。 ### 回答3: 在Python,isna函数和isnull函数都是用于检测数据的缺失的工具,主要用于数据清洗和处理的过程。 isna函数是pandas库提供的一个函数,用于判断数据是否缺失。它会对给定的数据进行遍历,并返回一个相同大小的布尔数组,数组的每个元素表示对应位置的数据是否缺失。具体来说,如果数据为空值或者NaN,则该位置的元素为True,否则为False。 而isnull函数也是pandas库的一个函数,和isna函数功能相同,用于检测数据是否缺失。和isna函数一样,isnull函数会对给定的数据进行遍历,返回一个相同大小的布尔数组,数组的每个元素表示对应位置的数据是否缺失。同样的,如果数据为空值或者NaN,则该位置的元素为True,否则为False。 因此,isna函数和isnull函数在功能上是完全相同的,两者可以互相替代。唯一的区别在于函数名称的差异。 总而言之,isna函数和isnull函数都是Python用于检测数据缺失的函数,它们返回的布尔数组反映了数据是否为空值或者NaN的情况。由于两者功能相同,可根据个人喜好和习惯选择使用其的任意一个。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值