使用子集验证行/列上的数据

问题描述

我正在努力在纵向数据集上实现自动化/半自动化验证任务,非常感谢您提供任何帮助和提示

下表代表部分数据结构:

ID A1 A2 A3 B1 B2 B3 C D
1 12 18 0,012 10 50 0,5 1 0
2 480 4,8 4,8 50 50 0,5 0 1
3 1200 1600 2000 0 35 0 0 1
4 12 0,012 0,0012 80 20 0,35 1 0
... 72 72 76 100 90 0,8 1 0

A(B)1 到 A(B)3 是宽格式的时变变量。 C、D 是时不变的。我想检查(特别是)时间变量变量是否有错误。可以在行和/或列的基础上识别错误。目前,我正在根据描述性统计数据或“硬编码规则集”进行检查。

上表中包含的错误的一些示例。

  • ID 1 的 A3 应该是 12,这可以根据变量 A 的子集上 ID 1 的行值(视觉上)识别。此外,应该可以根据 A3 列标记错误,但是我在这里并不完全相信,因为我们正在谈论 ~ 15k 观察。但总的来说,0,012 是列和行的异常值(想想以 k 欧元为单位的收入)。
  • 同样适用于 ID 2 和 4 的 A2 和 A3。
  • 与列级别的变量子集 B1 到 B3 相比,可以识别 B3。 B1 和 B2 的范围从 0 到 100。B3 的范围从 0 到 1。
  • 在 B1 到 B3 子集的行比较中,异常也很明显(视觉上)。

我已经对 B 子集进行了半自动检查:

for col in col_lst:   
    if df_orig_data[col].max() < 2:
        df_orig_data[col] = df_orig_data[col]*100

        if df_orig_data[col].max() > 100:
            df_orig_data[col].values[df_orig_data[col].values > 100] = 100
           
    elif df_orig_data[col].max() > 100:
        df_orig_data[col].values[df_orig_data[col].values > 100] = 100

    else:

但这已经是纠正我通过视觉检查/描述性统计发现的错误的步骤。我想以某种方式以更自动化的方式标记可能的错误

是否有(容易)实施/理解可以帮助我的解决方案?我已经做了很多谷歌搜索,但无法真正接近 smth。也许我只是不熟悉正确的术语。

非常感谢。如果您遗漏任何信息,我非常乐意补充。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)