用于迭代和交互式数据争用的库

vaquero的Python项目详细描述


什么是吸血鬼?

vaquero logo

tl;dr

它是一个用于迭代和交互式数据争用的库 笔记本电脑-楼梯。如果你花了很多时间在jupyter 笔记本,试图清除脏的原始数据 可能有用。

如果能写出数据清理代码就好了 对的。但是,付钱给你做数据分析的人不做数据 分析并不了解脏数据有多危险,所以 很少有人会因为你所提取的东西而感到安全。瓦凯罗 努力在商业需求和良好卫生之间找到平衡。 借用拉里·沃尔的话,它试图"让简单的事情变得简单,并且 在这种情况下,"困难的事情"指的是 在那些非常有趣的情况下,你写了一些代码 知道将来会崩溃,但你没有时间去修复;然后, 三个月后,它崩溃了,你不知道你的代码做什么。

另请参见:关于消失的 代码

示例

通过看笔记本更容易理解"为什么"。

期望出现异常

vaquero 需要异常,这使得它们非常普通。但是, python的异常处理很便宜,所以这很好(即EAFP- 请求原谅比允许容易)。另外,对于脏数据, 你知道有些记录可能会失败。在开发过程中, 不是每次都停下来,而是继续快乐的生活,直到 一些故障限制。对于每个失败,库都会记录异常, 包括文件名 导致 失败.

处理完所有文档后,您可以检查 错误。这有助于扫描错误模式,而不是编程 由于第一个错误的巧合。而且,既然你 有问题的函数及其参数,很容易更新新的 函数,确保它与先前的错误示例一起通过。吸血鬼重新上膛 你的管道。(或者,至少尝试这样做,因为重新加载是 狡猾的)

模块作为管道

< Buff行情> 名称空间是一个很好的主意-让我们做更多的这些!

程序员在任何地方都使用名称空间来组织代码。然而,何时 编写数据清理代码时,所有内容都会以一个大文件的形式结束 不好命名的函数。想一想:从hellishlib import*中。这个 完美主义者对我说:"这太糟糕了,我应该写下来 作为一个包含大量单元测试的完整库!"但是,为了 "有最后期限的完美主义者",这是不可能的。

此外,单文件功能模式不仅出现 因为时间的限制,这是问题的反映!ELT码 固有的紧密耦合。提取此变量的代码 可能取决于那个反过来也取决于另一个 一个。这将导致一个转换树,由函数封装 电话:

认识到这一点,瓦奎罗并没有试图让你离开 在一个文件中收集所有的elt代码。会发生的 不管怎样。相反,它通过一些惯例使其更安全。

  1. 模块表示单个封装的管道。它应该处理 定义明确的文件。
  2. 函数定义顺序是有意义的。位于顶部的函数 文件在它们上面的之前执行。又是一条管道。
  3. 根据pythonic惯例,前缀为 \u 的函数是 私人的。这里,这意味着管道构造函数在 正在编译管道。这为您提供了很好的助手功能。
  4. 你可能不会使用单元测试——你没有时间。 但是,既然它是一个模块,就用断言来修饰它。并且,使用 -前缀,您实际上可以编写命名空间测试(例如 \u my_test() ),然后立即在模块中调用它们。(实际上) 在pipeline模块中用 unittest 编写大量代码,然后 它在模块完全导入之前被调用)。 断开一些东西,你甚至不能开始管道处理。它失败了 快。(您可以偏离此模式,但一般情况下,不要这样做)
  5. < > >

安装

pip install vaquero

提示

模式 f(src,dst)

对于我的大多数管道,我倾向于编写类似于

deff(src_d,dst_d):dst_d['age']=int(src_d['AGE1'])

来自函数语言,我更喜欢不可变的对象。但是,在 巨蟒,它的速度很慢。此模式表示 通常有效的妥协。一方面( dst\u d )你有 已处理的元素;另一方面是原始数据。

隐藏场模式
  • 假设您正在处理带有dict目的地的管道 文件。在中间结果中使用"\u key\u name"字段 文件。您可以在管道末端删除它们(很容易,通过 vaquero.transformations.remove_private_keys ),但在此期间, 如果失败,您将看到这些字段。

免责声明

我有这么大的怪物伊布里在我的电脑上打电话给瓦奎罗。这是一个 我写了很多函数的集合 数据挖掘项目。我经常用它,并不断告诉自己"一旦我 找时间,我会放了它!"而且,这种情况从来没有发生过。太大了 以一种让我舒服的方式清理。相反,我会 以临时的、及时的方式发布少量代码。当我 绝对需要大图书馆的特色,我会的 取出并放在这里。

这让我非常不舒服,但是……我渴望时间。

无论如何,图书馆用户要小心。事情会破裂的。

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

推荐PyPI第三方库


热门话题
java SimpleFramework和工厂方法   Java适当地处理异常   java单例类不起作用   java小程序和Swing在eclipse中不显示组件   多个键上的java Redisson FastRemove不起作用   java验证请求正文不等于模式   在Java中从URL读取数据   eche RecyclerView项的java Set自定义字体   string Java如何从Date获取HH:mm:ss   当Java应用程序落后于负载均衡器时,在某些URL上强制使用SSL   使用esapi时发生java错误   java使用流根据第二个列表中的值更新一个列表中的对象   组织。openqa。硒。Java中的NoTouchElementException WebDriver?   从JSON字符串Java创建CSV文件