我每天都会收集一些不同的数据集,执行一些简单的数据质量检查,如果数据集没有通过检查,我就会发送电子邮件
我的检查与检查数据集中的重复项以及检查数据集中的行数和列数是否没有改变一样简单——见下文
assert df.shape == (1016545, 8)
assert len(df) - len(df.drop_duplicates()) == 0
由于这些数据集每天都会更新,并且可能会更改行数,是否有更好的方法来检查而不是硬编码特定的行数
例如,一个数据集可能只有400行,而另一个数据集可能有200万行。 我可以说检查昨天行数的“一个标准偏差”以内吗?但在这种情况下,我需要开始在一个单独的表中收集前几天的计数,这可能会变得很糟糕
现在,对于每天变化的表,我正在进行以下初步检查:
assert df.shape[0] <= 1016545 + 100
assert df.shape[0] >= 1016545 - 100
但显然,这是不可持续的
任何建议都将不胜感激
是的,你需要存储一些以前的信息,但因为你似乎并不关心完全统计准确,我认为你可以欺骗一点。如果根据以前的样本、计算的以前的偏差以及采集的样本数量保留记录的平均数,则通过查找以前偏差与当前偏差的加权平均数,可以合理地接近您要查找的内容
例如:
如果10个样本的平均计数为1016545,偏差为85,那么今天的计数为1016612。如果计算平均值
(1016612 - 1016545 = 67)
的差值,则为先前偏差和当前偏差((85*10 + 67)/11 ≈ 83)
的加权平均值这使得您只为每个数据集存储了少量变量,而不是所有的记录计数,但这也意味着它实际上不是标准偏差
至于存储,您可以存储数据in a database或a json file或任何数量的其他位置,我将不详细介绍,因为不清楚您在什么环境中工作,也不清楚您有什么可用资源
希望有帮助
相关问题 更多 >
编程相关推荐