python空值的一些问题

在数据处理的过程中,经常会遇到数据为空的情况,然后踩到很多坑浪费很久的时间,今天总结一下Python中空值的情况,以防后续再掉进坑里。

Python中空值一般有四种情况,None," ",False和NaN:

前三种类型中 打印 None == None ," " == " " ,False == False都能返回判断True,但是np.NaN == np.NaN 却返回为False,如图:

要创建一个空值可以用np.NaN,而且type(np.NaN)是float类型,而type(None)是NoneType类型,type(" ")是字符串类型,而在pandas中的数据类型例如Series和DataFrame中如果数组中除了空值之外全部是数值类型则None会转化正NaN

在Series或者DataFrame整体判断是否为空时,用isnull(),返回一个布尔型的矩阵;而且只有None 和NaN才被判断为空值

要是判断某一列中有空值存在,可以使用isnull().any():

当判断单个值是否为空时,要用np.isnan(),但是np.isnan()只能用于数值型,NaN是Not a Number的缩写;其他类型可以用type(x).__name__ == 'float'来判断是否为空值,也可以利用np.NaN != np.NaN的特性来判断(即自身不等于自身时,该值为空值),这些方法只适用于空值为NaN类型的,当空值类型为None时,可以使用type(x) .__name__ == 'NoneType'来判断

可以用data[data.isnull().values==True]来筛选含有空值的行,但是如果某行有多个值是空值,则会重复次数出现,所以利用data[data.isnull().values==True].drop_duplicates()来去重:

为了将空值统一格式处理,可以在读取数据是限制一下,read_csv(na_values='NULL')将空值统一成NaN处理。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180705G1CQ0Y00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券