Python中的缺失值
1、情景描述
在使用Pandas中的文件读取API读取Excel、CSV或TXT等文件时,我们可能需要对读取到的数据进行简单清洗。例如,将其中的表示空值的字符串替换为真正意义上的缺失值
来看一个例子:
data = pd.read_table(path,sep)
data.replace(['Null', 'None', 'NaN'], np.NaN, inplace=True)
上述代码中的Null、None、NaN
都是文件中表示空值的字符串,我们使用replace()
方法将它们替换为缺失值
实际上,Pandas读取API会自动将一些Python认识的表示空值的字符串解析为缺失值np.NaN
,也许上述的replace()
方法多余了
那么,到底哪些字符串可以表示Python中的缺失值呢?
2、Python中的缺失值
Python中的缺失值包括但不限于有如下:
import numpy as np
import pandas as pd
print(np.NaN) # NaN
print(type(np.NaN)) # <class 'float'>
print(pd.isnull(np.NaN)) # True
print(pd.isna(np.NaN)) # True
print(np.nan) # NaN
print(type(np.nan)) # <class 'float'>
print(pd.isnull(np.nan)) # True
print(pd.isna(np.nan)) # True
print(pd.NA) # <NA>
print(type(pd.NA)) # <class 'pandas._libs.missing.NAType'>
print(pd.isnull(pd.NA)) # True
print(pd.isna(pd.NA)) # True
# 时间格式的缺失值
print(pd.NaT) # NaT
print(type(pd.NaT)) # <class 'pandas._libs.tslibs.nattype.NaTType'>
print(pd.isnull(pd.NaT)) # True
print(pd.isna(pd.NaT)) # True
print(None) # None
print(type(None)) # <class 'NoneType'>
print(pd.isnull(None)) # True
print(pd.isna(None)) # True
# 空字符串不是缺失值
print('') #
print(type('')) # <class 'str'>
print(pd.isnull('')) # False
print(pd.isna('')) # False
经验证,Pandas能自动识别的Python缺失值字符串有:None、NA、nan、NaN、null、NULL、N/A、<NA>、''
等,不能自动识别的缺失值字符串有:na、Na、none、Null
等
因此,情景描述中的None
和NaN
字符串无需使用replace()
进行替换,而Null
需要使用replace()
替换,全大写和全小写的NULL
和null
也无需进行替换
感兴趣的同学快去试试吧