问题描述
我正在努力在纵向数据集上实现自动化/半自动化验证任务,非常感谢您提供任何帮助和提示。
下表代表部分数据结构:
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 (将#修改为@)