【问题标题】:Generalized Data Quality Checks on Datasets数据集的广义数据质量检查
【发布时间】:2020-02-11 19:23:18
【问题描述】:

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

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

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

但显然这是不可持续的。

非常感谢任何建议。

【问题讨论】:

    标签: python pandas airflow standard-deviation data-quality


    【解决方案1】:

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

    例如:

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

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

    至于存储,您可以将数据存储在in a databasea json file 或任何其他位置——我不会对此进行详细说明,因为不清楚您在什么环境中工作或您使用什么资源有货。

    希望有帮助!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-26
      • 2019-02-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-14
      相关资源
      最近更新 更多