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

因此,情景描述中的NoneNaN字符串无需使用replace()进行替换,而Null需要使用replace()替换,全大写和全小写的NULLnull也无需进行替换

感兴趣的同学快去试试吧


猜你喜欢

转载自blog.csdn.net/weixin_55629186/article/details/134783987