0

我每天都会提取一些不同的数据集,执行一些简单的数据质量检查,然后如果数据集未通过检查,就会发送电子邮件。

我的检查就像检查数据集中的重复项一样简单,以及检查数据集中的行数和列数是否没有改变——见下文。

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

但显然这是不可持续的。

任何建议都非常感谢。

4

1 回答 1

3

是的,您需要存储一些以前的信息,但是由于您似乎并不关心完全准确的统计信息,我认为您可以作弊。如果您根据先前的样本、先前计算的偏差以及所采集的样本数保留平均记录数,则可以通过找到先前偏差与当前偏差的加权平均值来合理地接近您正在寻找的结果偏差。

例如:

如果平均计数为 1016545,在 10 个样本中捕获的偏差为 85,而今天的计数为 1016612。如果您计算与平均值的差异,则为(1016612 - 1016545 = 67)先前偏差和当前偏差的加权平均值((85*10 + 67)/11 ≈ 83)

这样一来,您只需为每个数据集存储少数变量,而不是所有记录都及时计数,但这也意味着它实际上不是标准偏差。

至于存储,您可以将数据存储在数据库json 文件或任意数量的其他位置——我不会对此进行详细介绍,因为不清楚您正在工作的环境或可用的资源。

希望有帮助!

于 2020-02-11T20:58:15.930 回答