goodtables是一个检查表格数据的框架。
goodtables的Python项目详细描述
好表py
goodtables是一个验证表格数据的框架。它可以检查结构 数据(例如,所有行的列数相同)及其内容 (例如,所有日期均有效)。
功能
- 结构检查:确保没有空行、空头等。
- 内容检查:确保值具有正确的类型("string"、"number"、"date"等),格式有效("string必须是电子邮件"),并尊重约束("age必须是大于18的数字")。
- 支持多种表格格式:csv、excel文件、libreoffice、数据包等。
- 多表数据集的并行验证
- 命令行界面
目录
开始
安装
< Buff行情>如果您在MacOS上有构建错误,请尝试使用此解决方案-https://github.com/google/jsonnet/issues/573;issuecomment-433201074
pip install goodtables
pip install goodtables[ods] # If you need LibreOffice's ODS file support
在cli上运行
goodtables data.csv
使用goodtables--help
查看不同的选项。
fromgoodtablesimportvalidatereport=validate('invalid.csv')report['valid']# falsereport['table-count']# 1report['error-count']# 3report['tables'][0]['valid']# falsereport['tables'][0]['source']# 'invalid.csv'report['tables'][0]['errors'][0]['code']# 'blank-header'
您可以阅读关于在python上使用goodtables的更深入的解释 开发人员文档部分。也检查 有关其他示例,请参见"示例"文件夹。
验证
基本检查
不能禁用基本检查,因为它们处理的是goodtables能够读取文件。
<表><广告>结构检查
这些检查验证文件的结构是否有效。
<表><广告>内容检查
这些检查验证文件的内容。要使用它们,需要传递表模式。如果没有模式,goodtables可以通过使用推断模式选项来推断它。
如果您的模式只覆盖部分数据,则可以使用推断字段
推断其余字段。
最后,如果数据中字段的顺序与模式中的顺序不同,请启用顺序字段
选项。
高级CHECKS
<表><广告>value*quantity==total
)。黑名单值
有时我们必须检查一些我们不想在数据集中包含的值。它接受以下选项:
<表><广告>考虑以下csv文件:
id,name 1,John 2,bug 3,bad 5,Alex
让我们检查一下名称
列不包含有错误
或错误
的行:
fromgoodtablesimportvalidatereport=validate('data.csv',checks=[{'blacklisted-value':{'column':'name','blacklist':['bug','bad']}},])# error on row 3 with code "blacklisted-value"# error on row 4 with code "blacklisted-value"
偏离值
此检查有助于在包含正数的列中查找轮廓。它接受以下选项:
<表><广告>平均值±标准偏差*间隔
考虑以下csv文件:
temperature 1 -2 7 0 1 2 5 -4 100 8 3
我们使用中值
得到列值的平均值,并允许3个标准差的间隔。对于我们的情况,中值是2.0
标准差是29.73
所以所有有效值必须在[-87.19,91.19]
区间内。
report=validate('data.csv',checks=[{'deviated-value':{'column':'temperature','average':'median','interval':3}},])# error on row 10 with code "deviated-value"
顺序值
当一个列应该有连续递增的整数时,这种检查非常常见。它接受以下选项:
<表><广告>考虑以下csv文件:
id,name 1,one 2,two 3,three 5,five
让我们检查一下id
列是否包含顺序整数:
fromgoodtablesimportvalidatereport=validate('data.csv',checks=[{'sequential-value':{'column':'id'}},])# error on row 5 with code "sequential-value"
截断值
一些数据库或电子表格软件(如mysql或excel)可能会在保存时截断值。有一些著名的启发式方法可以发现这个错误的值。有关详细信息,请参见https://github.com/propublica/guides/blob/master/data bulletproofing.md。
考虑以下csv文件:
pip install goodtables
pip install goodtables[ods] # If you need LibreOffice's ODS file support
0
为了检测所有可能被截断的值,我们可以使用截断的值
检查:
pip install goodtables
pip install goodtables[ods] # If you need LibreOffice's ODS file support
1
自定义约束
使用表模式,我们可以为单个字段创建约束,但有时这还不够。使用自定义约束检查,可以根据给定的有限python表达式检查每一行,在该表达式中,变量名解析为列值。请参阅可用运算符的列表。它接受以下选项:
< DL>col1+col2==col3
)考虑这样的csv文件:
pip install goodtables
pip install goodtables[ods] # If you need LibreOffice's ODS file support
2
假设我们的B商业规则是在奖金上要害羞:
pip install goodtables
pip install goodtables[ods] # If you need LibreOffice's ODS file support
3
验证报告格式
验证报告遵循在
goodtables/schemas/report.json。举个例子,这是
在文件上运行goodtables--row limit 5--json
生成的报告
数据/datapackages/invalid/datapackage.json:
pip install goodtables
pip install goodtables[ods] # If you need LibreOffice's ODS file support
4
开发人员文档
语义版本控制
我们遵循语义版本控制规范来定义我们的版本。
数字。这意味着当有
打破改变。因此,我们建议您显式指定
依赖项列表中的goodtables版本(例如setup.py
或
requirements.txt
)。
验证
goodtables验证表格数据集以查找结构和内容
错误。假设您有一个名为invalid.csv
的文件。让我们验证一下:
pip install goodtables
pip install goodtables[ods] # If you need LibreOffice's ODS file support
5
我们还可以传递远程uri而不是本地路径。它支持csv,xls, xlsx、ods、json和制表器支持的所有其他格式 图书馆. < /P>
验证报告
validate()
方法的输出是一个报表字典。它包括
信息(如果数据有效)、错误计数、表报表列表
个别检查失败等。
生成的报告将如下所示:
pip install goodtables
pip install goodtables[ods] # If you need LibreOffice's ODS file support
6
RASE报告错误是标准化和描述的 在里面 数据质量规范。 错误分为以下类别之一:
源
-无法加载或分析数据结构
-一般表格错误,如重复的标题模式
-检查表模式时出错自定义
-自定义检查错误
检查
check是goodtables中的主要验证参与者。启用的检查列表可以
使用checks
和skip_checks
参数进行更改。让我们探讨一下选择
例如:
pip install goodtables
pip install goodtables[ods] # If you need LibreOffice's ODS file support
7
默认情况下,数据集将根据所有可用的数据质量规范进行验证
错误。某些检查可能无法进行验证。例如,如果
未提供架构,将只进行结构的检查。
预设值
goodtables支持不同格式的表格数据集。他们被叫来了 预置。表格数据集是一些可以在数据列表中拆分的数据。 表格,如:
我们可以使用validate()
的预设
参数更改预设。通过
默认情况下,它将从源代码推断,返回到表
。验证
a数据包,我们可以做到:
pip install goodtables
pip install goodtables[ods] # If you need LibreOffice's ODS file support
8
这将验证数据包中的所有表格资源。
也可以使用"嵌套"预设验证文件列表。做
因此,validate()的第一个参数应该是字典列表,其中
字典中的每个键都以validate()
上的参数命名。例如:
pip install goodtables
pip install goodtables[ods] # If you need LibreOffice's ODS file support
9
类似于:
goodtables data.csv
0
区别在于goodtables并行地验证多个表,所以 使用"嵌套"预设进行呼叫应该会更快。
贡献
这个PR项目遵循开放知识国际编码标准。我们建议您使用virtualenv
将goodtables与
机器中的软件包。
要安装goodtables和开发依赖项,请运行:
goodtables data.csv
1
要运行测试,请使用:
goodtables data.csv
2
FAQ
如何添加新的自定义支票?
要创建自定义检查,用户可以使用check
decorator。这样,可以覆盖内置检查(使用规范错误代码,如重复行
),也可以添加自定义错误检查(使用类型
、上下文
和位置
参数):
goodtables data.csv
3
目前,本文档部分不完整。有关检查协议的详细信息,请参见内置检查。
如何添加对新表格文件类型的支持?
要创建自定义预设,用户可以使用预设
装饰器。这样就可以覆盖内置预设或添加自定义预设。
goodtables data.csv
4
目前,本文档部分不完整。请参阅内置预设以了解有关数据集提取协议的更多信息。
更改日志
这里只描述了打破和最重要的变化。所有发布版本的完整变更日志和文档都可以在格式良好的提交历史记录中找到。
2.2版
- 改进了丢失/不匹配的报头检测(\298)
2.1版
- 在
错误中添加了一个新的键。to_dict
return:消息数据
2.0版
中断更改:
- checks方法签名现在只接收当前行的
单元格
列表 - 检查通过返回
error
对象的数组引发错误 - 单元格具有
行号
键中的行号 - 具有zip扩展名的文件被假定为数据包,因此
goodtables mydatapackage.zip
works - goodtables cli的改进(233)
- 新的
goodtables init<;data paths>;
命令,创建一个新的datapackage.json
文件作为参数传递,以及它们的推断模式。
错误修复:
- 用
截断的值修复错误
检查日期字段(\250)
1.5版
添加了新的API:
- validation
source
现在可以是路径lib.path
1.4版
改进的行为:
- 基于数据质量规范v1
- 基于数据包规范v1
- 基于表模式规范v1
- 按需处理主键/唯一字段
1.3版
新增高级支票:
黑名单值
自定义约束
偏离值
顺序值
截断值
1.2版
添加了新的API:
报表.预置
报表.tables[].schema
1.1版
添加了新的API:
报表.表[].方案
报表.表格[].格式
报表.表格[].编码
1.0版
这个版本包括各种大的变化。迁移指南正在开发中,将在此处发布。
v0.6
第一个版本的goodtables