Python 3.x:确定缺失值的函数

Posted

技术标签:

【中文标题】Python 3.x:确定缺失值的函数【英文标题】:Python 3.x: function to determine missing values 【发布时间】:2020-09-13 02:45:23 【问题描述】:

我有以下数据:

import pandas as pd

data = 'var1': ['pero03930', 'pero03930', ' '],
        'var2': ['121324', '232434', ' '],
        'var3': [343, 937, 989],
        

df = pd.DataFrame (data, columns = ['var1', 'var2', 'var3'])

print(df)

我正在尝试开发一个识别缺失值的函数,这就是我目前所拥有的:

def missing_values(var1, var2, var3):
    if var1 is None:
        return 'Missing var1 in data'
    if var2 is None:
        return 'Missing var2 in data'
    if var3 is None:
        return 'missing var3 value in data'
    else:
        return 'No missing values in data'

print(missing_values(df))

我得到这个错误:

TypeError: missing_values1() missing 2 required positional arguments: 'var2' and 'var3'

我知道这是因为函数试图找到另外两个参数。如何让函数识别参数在数据集中?还是一般有更好的方法来编写这个函数?

【问题讨论】:

这能回答你的问题吗? Find empty or NaN entry in Pandas Dataframe 【参考方案1】:

我相信你应该使用内置函数来查找None。还有" " != None

import pandas as pd

data = 'var1':  ['pero03930', 'pero03930', None],
        'var2': ['121324', '232434', ' '],
        'var3': [343, 937, 989],
        

df = pd.DataFrame (data, columns = ['var1', 'var2', 'var3'])

print(df[df.isnull().any(axis=1)])

输出

   var1 var2  var3
2  None  nan   989

您的代码

如果您愿意,您的代码可以正常工作,然后检查以下代码。但是你的代码有很多问题。

当找到第一个None 时,它将返回。它永远不会在同一行中找到其他 None
import pandas as pd

data = 'var1':  ['pero03930', 'pero03930', None],
        'var2': ['121324', '232434', ' '],
        'var3': [343, 937, 989],
        

df = pd.DataFrame (data, columns = ['var1', 'var2', 'var3'])


def missing_values(var1,var2,var3):
    if var1 is None:
        return 'Missing var1 in data'
    if var2 is None:
        return 'Missing var2 in data'
    if var3 is None:
        return 'missing var3 value in data'
    else:
        return 'No missing values in data'

for index, row in df.iterrows():
    print(missing_values(row["var1"], row["var2"], row["var3"]))

输出

No missing values in data
No missing values in data
Missing var1 in data

如果此解决方案解决了您的问题,请接受它,否则请评论问题所在。

【讨论】:

嗨,谢谢。你能解释一下为什么代码有很多问题吗?没关系,一旦发现 null 或 None 就停止搜索,我只需要知道是否有 1 个或多个 null。使用您在此处使用该功能的方式确实有效 如果您在找到其他 None 时不关心,那么您的代码就可以了。如果您的问题得到解决,请接受。

以上是关于Python 3.x:确定缺失值的函数的主要内容,如果未能解决你的问题,请参考以下文章

python和R对dataframe的缺失值的统计与填充:dplyrtidyrfillnaisnaisnullsum

数据分析中缺失值的处理

Python,Pandas:只返回那些有缺失值的行

Python3 DataFrame缺失值的处理

Python3 DataFrame缺失值的处理

机器学习基础:缺失值的处理技巧(附Python代码)