用于防御数据分析的python包。

bulwark的Python项目详细描述


防波堤文件

downloads

latest releasesupported python versionspackage statuslicense

travis build statusdocs build statuscoverage status

Bulwark是一个用于方便地对pandas数据帧进行基于属性的测试的包,支持Python3.5+

文档:https://bulwark.readthedocs.io/en/latest/index.html

这个项目受到不再受支持的Engarde库的严重影响 作者:Tom Augspurger(谢谢你的先发制人,Tom!),它本身就是模仿 R库assertr

为什么?

数据杂乱无章,pandas是分析表格数据的常用库之一。 在现实世界中,数据分析师和科学家常常觉得自己没有时间 或者是思考和编写数据测试的能量堡垒的目标是让你检查 你的数据符合你对它在任何(和每一个)步骤中应该是什么样子的假设 在你的代码中,不要让你工作太辛苦。

安装

pip install bulwark

用法

Bulwark会检查您可能要验证的许多常见假设 用于组成ETL管道的函数,并允许您将这些支票作为装饰符丢弃 关于您正在编写的函数:

importbulwark.decoratorsasdc@dc.IsShape((-1,10))@dc.IsMonotonic(strict=True)@dc.HasNoNans()defcompute(df):# complex operations to determine result...returnresult_df

还想有更健壮的测试文件吗堡垒也为你提供了重要的功能

importbulwark.checksasckdf.pipe(ck.has_no_nans())

当我准备投入生产时,我不必去清理所有的装饰工人吗? 不-只需切换每个装饰器可用的内置“enabled”标志。

@dc.IsShape((3,2),enabled=False)defcompute(df):# complex operations to determine result...returnresult_df

如果我想要的测试不是图书馆的一部分呢? 使用内置的CustomCheck来使用您自己的自定义函数!

deflen_longer_than(df,l):iflen(df)<=l:raiseAssertionError("df is not as long as expected.")returndf@dc.CustomCheck(len_longer_than,df=df,l=6)defappend_a_df(df,df2):returndf.append(df2,ignore_index=True)df=pd.DataFrame({"a":[1,2,3],"b":[4,5,6]})df2=pd.DataFrame({"a":[1,np.nan,3,4],"b":[4,5,6,7]})append_a_df(df,df2)

如果我想运行大量的测试并且想同时看到所有的错误怎么办? 您可以使用内置的MultiCheck它将收集所有的错误,或者 显示基于warn标志引发异常的警告消息。 您甚至可以将自定义函数与multicheck一起使用:

deflen_longer_than(df,l):iflen(df)<=l:raiseAssertionError("df is not as long as expected.")returndf# `checks` takes a dict of function: dict of params for that function.# Note that those function params EXCLUDE df.# Also note that when you use MultiCheck, there's no need to use CustomCheck - just feed in the function.@dc.MultiCheck(checks={ck.has_no_nans:{"columns":None},len_longer_than:{"l":6}},warn=False)defappend_a_df(df,df2):returndf.append(df2,ignore_index=True)df=pd.DataFrame({"a":[1,2,3],"b":[4,5,6]})df2=pd.DataFrame({"a":[1,np.nan,3,4],"b":[4,5,6,7]})append_a_df(df,df2)

请参见examples以了解更高级的用法。

贡献

Bulwark一直在寻找新的贡献者我们努力使贡献尽可能容易,以前的开源经验是不需要的!请参阅CONTRIBUTING.md了解如何开始。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java试图使用JavaFX2实现“插入符号浏览”   三个给定集合中两个集合的java交集?   数组如何在java中从csv文件的元素集中随机选择?   java从变量插入到Jtable,从DB插入   java如何在静态方法的末尾返回变量   java另一个JPA问题   java收藏家。按两列分组不起作用   将java值改为下一个千,而不是最近的千   JavaSpringDataREST:如何通过另一个对象的键进行搜索?   java Spring MVC:HTTP Status 404/SimpleMVC/WEB_INF/HelloPage。jsp   java应用程序光盘在OpenJdk中可用吗?   java在数组中的特定点添加字符   java如何用Mockito模拟方法调用   java从JList获取数据   我们可以在Java中搜索不同IMAP电子邮件帐户中的电子邮件吗?   计算表达式的数学Java算法   未构建Maven的java服务器组件   java调用部署在远程计算机上的会话bean的方法   java XML:迭代地获取每个节点元素的节点值或文本内容