1

我有一个用例:

  • 在能够使用数据之前,我总是需要对数据应用预处理步骤。(因为命名等不遵循某些软件在处理链下游强制执行的社区约定。)

  • 我无法更改原始数据。(因为它可能在我无法控制的回购中,或者因为它太大而无法复制,......)

如果我的目标是为用户提供以预处理方式获取数据的最简单、最透明的方式,我可以看到两种方式:

1. 加载未处理的数据并立即应用预处理:

import intake
from my_tools import pre_process

cat = intake.open_catalog('...')
raw_df = cat.some_data.read()
df = pre_process(raw_df)

2. 对调用应用预处理步骤.read()

目录:

sources:
  some_data:
    args:
      urlpath: "/path/to/some_raw_data.csv"
    description: "Some data (already preprocessed)"
    driver: csv
    preprocess: my_tools.pre_process

和:

import intake

cat = intake.open_catalog('...')
df = cat.some_data.read()
4

1 回答 1

0

选项 2. 目前在 Intake 中是不可能的;Intake 被设计为“加载”而不是“过程”,因此我们暂时避免了管道的想法,但我们可能会在未来再次使用它。

但是,在 Intake 中有几个选项可以与上面的选项 1 一起考虑:

  • 制作您自己的驱动程序,它完全按照您的喜好实现负载和任何处理。编写驱动程序非常容易,并且可能涉及任意代码/复杂性
  • 编写一个alias类型的驱动程序,它获取同一目录中条目的输出并对其进行处理。请参阅文档代码以获取指针。
于 2020-04-30T16:45:35.183 回答