数据集的通用数据质量检查
Generalized Data Quality Checks on Datasets
我每天都会提取一些不同的数据集,执行一些简单的数据质量检查,然后在数据集未通过检查时发送电子邮件。
我的检查很简单,就像检查数据集中的重复项,以及检查数据集中的行数和列数是否没有改变 -- 见下文。
assert df.shape == (1016545, 8)
assert len(df) - len(df.drop_duplicates()) == 0
由于这些数据集每天更新并且可能会改变行数,是否有更好的方法来检查而不是硬编码具体数字?
例如,一个数据集可能只有 400 行,而另一个数据集可能有 200 万行。
我可以说检查昨天的行数 'one standard deviation' 以内吗?但在那种情况下,我需要开始在单独的 table 中收集前几天的计数,这可能会变得很丑陋。
现在,对于每天变化的 table,我正在进行以下基本检查:
assert df.shape[0] <= 1016545 + 100
assert df.shape[0] >= 1016545 - 100
但显然这是不可持续的。
非常感谢任何建议。
是的,您需要存储一些以前的信息,但由于您似乎并不关心完全统计准确,我认为您可以稍微作弊。如果您保留基于先前样本的平均记录数、您计算的先前偏差以及您采集的样本数,您可以通过找到先前偏差与当前偏差的加权平均值来合理地接近您正在寻找的结果偏差.
例如:
如果平均计数为 1016545,在 10 个样本中捕获的偏差为 85,而今天的计数为 1016612。如果计算与平均值的差异 (1016612 - 1016545 = 67)
,则前一个偏差的加权平均值和当前偏差((85*10 + 67)/11 ≈ 83)
。
这样一来,您只需为每个数据集存储少量变量,而不是及时存储所有记录计数,但这也意味着它实际上不是标准偏差。
至于存储,您可以存储数据 in a database or a json file 或任意数量的其他位置——我不会对此进行详细说明,因为不清楚您在什么环境中工作或您使用什么资源有空。
希望对您有所帮助!
我每天都会提取一些不同的数据集,执行一些简单的数据质量检查,然后在数据集未通过检查时发送电子邮件。
我的检查很简单,就像检查数据集中的重复项,以及检查数据集中的行数和列数是否没有改变 -- 见下文。
assert df.shape == (1016545, 8)
assert len(df) - len(df.drop_duplicates()) == 0
由于这些数据集每天更新并且可能会改变行数,是否有更好的方法来检查而不是硬编码具体数字?
例如,一个数据集可能只有 400 行,而另一个数据集可能有 200 万行。 我可以说检查昨天的行数 'one standard deviation' 以内吗?但在那种情况下,我需要开始在单独的 table 中收集前几天的计数,这可能会变得很丑陋。
现在,对于每天变化的 table,我正在进行以下基本检查:
assert df.shape[0] <= 1016545 + 100
assert df.shape[0] >= 1016545 - 100
但显然这是不可持续的。
非常感谢任何建议。
是的,您需要存储一些以前的信息,但由于您似乎并不关心完全统计准确,我认为您可以稍微作弊。如果您保留基于先前样本的平均记录数、您计算的先前偏差以及您采集的样本数,您可以通过找到先前偏差与当前偏差的加权平均值来合理地接近您正在寻找的结果偏差.
例如:
如果平均计数为 1016545,在 10 个样本中捕获的偏差为 85,而今天的计数为 1016612。如果计算与平均值的差异 (1016612 - 1016545 = 67)
,则前一个偏差的加权平均值和当前偏差((85*10 + 67)/11 ≈ 83)
。
这样一来,您只需为每个数据集存储少量变量,而不是及时存储所有记录计数,但这也意味着它实际上不是标准偏差。
至于存储,您可以存储数据 in a database or a json file 或任意数量的其他位置——我不会对此进行详细说明,因为不清楚您在什么环境中工作或您使用什么资源有空。
希望对您有所帮助!