Python 数据帧列验证

Python 数据帧列验证,python,pandas,Python,Pandas,我有一个熊猫数据框,有30列和4000行 对于大约5列,我需要验证它是否符合数据验证 有没有一种方法可以这样说“如果df.Gender包含任何不是'M'或'F'的值,那么打印错误” 或者如果df.MaritalStatus包含的值不是M、S、D,则打印错误。 maritalstatus_series = df.MaritalStatus.values for x in maritalstatus_series: if x not in ('M', 'S', 'D'):

我有一个熊猫数据框,有30列和4000行

对于大约5列,我需要验证它是否符合数据验证 有没有一种方法可以这样说“
如果df.Gender包含任何不是'M'或'F'的值,那么打印错误

或者
如果df.MaritalStatus包含的值不是M、S、D,则打印错误。

maritalstatus_series = df.MaritalStatus.values

for x in maritalstatus_series:
    if x not in ('M', 'S', 'D'):
        print("error")

有谁有最好的方法来应用这些条件吗

df = pd.read_csv("C:/Users/ABV1234/Desktop/DailyReport.csv")

##如果df.Gender包含的值不在['m',f']打印错误中

您可以检查
['m',f']
中的任何值是否在
df.Gender
中:

if not any(x in df.Gender.values for x in ['M','F'])
    print("Error")

您可以检查
['M',F']
中的任何一个是否在
df.Gender
的值中:

if not any(x in df.Gender.values for x in ['M','F'])
    print("Error")

检查第一个条件

如果df.Gender包含任何不是'M'或'F'的值,则打印错误

gender_series = df.Gender.values

for x in gender_series:
    if x not in ('M', 'F'):
        print("error")
检查第二个条件:

如果df.MaritalStatus包含的值不是M、S、D,则打印错误。

maritalstatus_series = df.MaritalStatus.values

for x in maritalstatus_series:
    if x not in ('M', 'S', 'D'):
        print("error")

感谢检查第一个条件

如果df.Gender包含任何不是'M'或'F'的值,则打印错误

gender_series = df.Gender.values

for x in gender_series:
    if x not in ('M', 'F'):
        print("error")
检查第二个条件:

如果df.MaritalStatus包含的值不是M、S、D,则打印错误。

maritalstatus_series = df.MaritalStatus.values

for x in maritalstatus_series:
    if x not in ('M', 'S', 'D'):
        print("error")

感谢

对上述答案的一个可能改进是在评估整个专栏之后收集并报告所有故障案例

这将返回性别列不等于“M”或“F”的所有情况的筛选数据框

将熊猫作为pd导入
df=pd.DataFrame({“MaritalStatus”:[“M”、“S”、“F”],“Gender”:[“M”、“S”、“F”]})
df.loc[~df.loc[:,“性别”].isin(['M','F']),:]
>>>MaritalStatus性别
1 S S
婚姻状况也是如此:

df.loc[~df.loc[:,“MaritalStatus”].isin(['M','S','D']),:]
>>>MaritalStatus性别
二楼
如果要抽查数据中的意外值,则可以获得不符合以下条件的值:

expected_值={“MaritalStatus”:['M','S','D','Gender:['M','F']}
对于预期_值中的特征:
print(f)“在{feature}列中发现以下意外值:”,
集合(df.loc[~df.loc[:,feature].isin(预期值[feature]),:][feature]))
>>>在MaritalStatus列中发现以下意外值:{'F'}
>>>在性别列中找到以下意外值:{S'}
或者,您可以使用该库,它允许您建立数据集的期望值,并根据这些期望值验证数据集。通过执行延迟评估,您可以一次查看所有失败案例,而不是在每个案例中获得失败

将pandera导入为pa
schema=pa.DataFrameSchema(
{
“MaritalStatus”:pa.Column(pa.String,checks=pa.Check.isin([“M”、“S”、“D”),
“性别”:pa.Column(pa.String,checks=pa.Check.isin([“M”,“F”]))
},strict=False
)
schema.validate(df,lazy=True)
>>> 
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
文件“C:\Daten\venv\lib\site packages\pandera\schemas.py”,第592行,在validate中
错误处理程序。已收集错误,请检查对象
pandera.errors.SchemaErrors:共发现2个架构错误。
错误计数
------------
-架构\组件\检查:2
架构错误摘要
--------------------
失败案例n失败案例
schema\u上下文列检查
列性别isin({F',M'})[S]1
海洋生物状态信息素({'M','D','S'})[F]1

对上述答案的一个可能改进是在评估整个专栏之后收集并报告所有故障案例

这将返回性别列不等于“M”或“F”的所有情况的筛选数据框

将熊猫作为pd导入
df=pd.DataFrame({“MaritalStatus”:[“M”、“S”、“F”],“Gender”:[“M”、“S”、“F”]})
df.loc[~df.loc[:,“性别”].isin(['M','F']),:]
>>>MaritalStatus性别
1 S S
婚姻状况也是如此:

df.loc[~df.loc[:,“MaritalStatus”].isin(['M','S','D']),:]
>>>MaritalStatus性别
二楼
如果要抽查数据中的意外值,则可以获得不符合以下条件的值:

expected_值={“MaritalStatus”:['M','S','D','Gender:['M','F']}
对于预期_值中的特征:
print(f)“在{feature}列中发现以下意外值:”,
集合(df.loc[~df.loc[:,feature].isin(预期值[feature]),:][feature]))
>>>在MaritalStatus列中发现以下意外值:{'F'}
>>>在性别列中找到以下意外值:{S'}
或者,您可以使用该库,它允许您建立数据集的期望值,并根据这些期望值验证数据集。通过执行延迟评估,您可以一次查看所有失败案例,而不是在每个案例中获得失败

将pandera导入为pa
schema=pa.DataFrameSchema(
{
“MaritalStatus”:pa.Column(pa.String,checks=pa.Check.isin([“M”、“S”、“D”),
“性别”:pa.Column(pa.String,checks=pa.Check.isin([“M”,“F”]))
},strict=False
)
schema.validate(df,lazy=True)
>>> 
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
文件“C:\Daten\venv\lib\site packages\pandera\schemas.py”,第592行,在validate中
错误处理程序。已收集错误,请检查对象
pandera.errors.SchemaErrors:共发现2个架构错误。
错误计数
------------
-架构\组件\检查:2
架构错误摘要
--------------------
失败案例n失败案例
schema\u上下文列检查
列性别isin({F',M'})[S]1
海洋生物状态信息素({'M','D','S'})[F]1

Plz添加示例代码。。所以每个人都可以