Как сделать всегда необходимую предварительную обработку / очистку с приемом? - PullRequest
0 голосов
/ 29 апреля 2020

У меня есть сценарий использования, где:

  • Мне всегда нужно применить шаг предварительной обработки данных, прежде чем я смогу его использовать. (Поскольку именование и т. Д. c. Не следуют соглашениям сообщества, применяемым некоторыми программами, далее по цепочке обработки.)

  • Я не могу изменить необработанные данные. (Потому что он может быть в репо, который я не контролирую, или потому что он слишком большой, чтобы его дублировать, ...)

Если я хочу предоставить пользователю самый простой и самый Прозрачный способ получения данных предварительно обработанным способом, я вижу два способа сделать это:

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()

1 Ответ

0 голосов
/ 30 апреля 2020

Вариант 2. на входе сейчас невозможен; Впуск был спроектирован так, чтобы быть «загружаемым», а не «технологическим», поэтому мы пока избегаем идеи конвейера, но мы можем вернуться к нему в будущем.

Однако у вас есть несколько вариантов в Intake, который вы могли бы рассмотреть вместе с вариантом 1. выше:

  • создайте свой собственный драйвер, который реализует загрузку и любую обработку именно так, как вам нравится. Написание драйверов довольно простое и может включать произвольный код / ​​сложность
  • написать драйвер типа alias , который принимает выходные данные записи в том же каталоге и что-то с ней делает. См. документы и код для указателей.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...