在我们每天接触的Python中,狭义的缺失值一般是指DataFrame中的NaN。从广义上讲,它可以分为三种类型。缺失值:Pandas中存在三种缺失值:np.nan(NotaNumber)、None和pd.NaT(时间格式的空值,注意大小写)空值:空值是指Pandas中的null字符串"";最后一类是字符“-”、“?”等,原来在导入的Excel等文件中用来表示缺失值。今天就来说说Python中查询缺失值的4种方式。缺失值NaN①Pandas中查询缺失值最常用的方法是isnull(),返回True表示这是一个缺失值。我们可以将它与any()方法一起使用来查询具有缺失值的行,或者与sum()方法一起使用来查询具有缺失值的列。isnull():缺失值返回True,非缺失值返回False。any():如果序列中存在True,则返回True,否则返回False。sum():计算序列的和。在交互环境中输入以下命令:df.isnull()输出:在交互环境中输入以下命令:df.isnull().any(axis=1)输出:在交互环境中输入以下命令:df.isnull().any(axis=1)isnull().sum()输出:注意:isna()和isnull()的用法是一样的,这里不再演示。缺失值NaN②由于Pandas中的isnull()方法返回True表示这是一个缺失值,所以我们可以对数据集进行切片,寻找缺失值。在交互环境中输入以下命令:df[df.isnull().values==True]输出:注意:如果一行中有多个值是空值,它们会重复出现,所以我们可以使用df[df.isnull().values==True].drop_duplicates()删除重复项。另外notnull()方法对应isnull(),可以直接查询非缺失值的数据行。df[df["A列"].notnull()]输出:空值。Null值是指Pandas中的空字符串""。我们还可以对数据集进行切片以找到空值。在交互环境中输入如下命令:df[df["B列"]==""]输出:另外,空值和正常值的区别也可以用来区分两者,比如作为isnumeric()方法来检测字符串是否仅由数字组成。在交互式环境中输入以下命令:df[df["B列"].str.isnumeric()==False]输出:如上所示,也查询到了数据集中的空值。字符“-”、“?”等。很多时候,我们要处理本地的历史数据文件,这些Excel中往往不规范,比如可能会使用“*”、“?”、“—”,“!”和其他字符来指示缺失值。对于这种类型的文本,我们可以使用正则表达式来匹配缺失值。importredf[df["Ccolumn"].apply(lambdax:len(re.findall('NA|[*|?|!|#|-]',x))!=0)]输出:同上如图,我自定义了匿名函数lambda,在text列的每一行中查找如下文本值:“NA”、“*”、“?”、“!”、“#”、“-”和检查它找到的列表的长度。如果列表非零,则表示找到了表示缺失值的字符,因此该行中至少有一个缺失值。df[df["columnD"].apply(lambdax:len(re.findall('NA|[*|?|!|#|-]',x))!=0)]输出:我们可以应用对不同的列执行相同的缺失值查询。另外,大家可以根据自己的实际情况替换正则表达式中代表缺失值的字符。以上就是本次分享的全部内容。想了解更多Python知识,请前往公众号:Python编程学习圈,每日干货分享,送“J”,海量学习资料。
