Легкая стандартизированная структура исследовательского проекта с возможностью автоматизации
Для аналитика, желанной конечной точкой любого исследования будет - интерес к собранным данным со стороны коллег, а значит - периодически придется проходить весь путь сбора и очистки снова и снова. Хорошо, если под рукой есть блокнот который воспроизводится. Хуже, если таких блокнотов набирается много и их нужно запускать в непонятном порядке, с непонятной периодичностью.
Но мы люди ленивые - за нас компьютер работать должен. Поэтому код стоит оформить не в виде блокнота, а в виде модулей, которые можно запускать из CLI по событию или расписанию. Да и преемники - только спасибо скажут за такую возможность.
Каталогизировать результаты и поддерживать работу таких приложений-исследований гораздо проще, когда у них единая структура. В моем случае - такая:
├── README.md <- Этот файл. Структура проекта {{cookiecutter.project_name}}
├── config <- Файлы конфигураций, аутентификаций и т.д. (.gitignore)
├── data <- Хранилище данных проекта (.gitignore)
│ ├── external <- Данные из внешних источников
│ ├── interim <- Промежуточные данные процесса
│ ├── processed <- Данные, подготовленные для модели ML
│ └── raw <- Сырые данные
│
├── docker <- Здесь настройки контейнера для приложения, если потребутся
├── docs <- Документация проекта. Требования, ограничения, условия
├── models <- Основные и промежуточные модели процесса
├── notebooks <- Сырые ноутбуки (поиск, EDA, проверка гипотез). (.gitignore)
├── reports <- Оформленные ноутбуки с решением и исследованиями
├── sql_requests <- Запросы к базам данных. Разработка.
├── src <- Модуль проекта (полный цикл исследования, обучения и отчетности)
Чтобы воспользоваться этим шаблоном, нам потребуется утилита Cookiecutter**:
$ conda install -c conda-forge cookiecutter
**Можно установить и через pip
Затем, идем в директорию, где должен лежать проект запускаем команду такого вида:
$ cookiecutter https://github.com/lexx-esc/analysis_lite.git
Отвечаем на несколько вопросов и структура под проект создана, и закоммичена в initial commit.
Верхнеуровневую структуру, конечно, лучше не трогать (но это - не точно :simple_smile:).
А вот, второй уровень и ниже - в ваших руках. Настраивайте как нравится.
Огромное спасибо проекту Cookiecutter, ведь с его помощью, на подготовку структуры проектов, уходит гораздо меньше времени.