对数据集的通用数据质量检查

问题描述 投票:0回答:1

[我每天都会收集少量不同的数据集,执行一些简单的数据质量检查,然后在数据集检查失败的情况下关闭电子邮件。

我的检查就像检查数据集中的重复项一样简单,并且检查数据集中的行数和列数是否未更改-参见下文。

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个回答
1
投票

是的,您需要存储一些以前的信息,但是由于您似乎不太在乎统计上的准确性,因此我认为您可以作弊。如果您根据以前的样本,计算出的先前偏差和所获取的样本数来保留平均记录数,则可以通过找到当前值与先前偏差的加权平均值来合理地接近所需的值。偏差。

例如:

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

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

关于存储,您可以存储数据in a databasea json file或其他任意数量的位置,在此不做详细说明,因为尚不清楚您正在使用什么环境或拥有哪些资源可用。

希望有帮助!

© www.soinside.com 2019 - 2024. All rights reserved.