Сбор, хранение и визуализация сторонних данных с использованием Django? - PullRequest
0 голосов
/ 21 ноября 2019

Этот вопрос основан на предыдущем, который я недавно задавал. Я постарался сделать этот вопрос как можно более подробным.

Моя цель: Я создаю веб-приложение, которое позволяет проводить исследовательский анализ океанских буев. Пользователь выбирает буй и некоторые графические опции (например, среднемесячные значения, фильтры по размеру набухания и т. Д.), И создается график, показывающий результирующие данные для этого буя.

Подход:

  1. Пользователь идентифицирует буй с помощью веб-формы или селектора определенного типа и выбирает параметры для графика (например, среднемесячные значения за все время).
  2. Данные запрашиваются для выбранного буя.
  3. Данные преобразуются в кадр данных pandas данных временных рядов буев.
  4. Pandas обрабатывает данные на основе выбранной пользователем опции (например, вычисляет среднемесячные значения).
  5. Plotly создает диаграмму
  6. Диаграмма отправляется на файл templates.py в файле views.py, а диаграмма отображается на веб-странице.

MyПроблема: Сбор данных затруднен. Архивные данные для всех буев существуют на веб-странице NABC NOAA, и нет простого API для доступа к этим архивным данным. Скорее, он хранится на нескольких страницах в нескольких CSV. К счастью, некоторый открытый исходный код уже существует для доступа к этим данным. Код создает объект Buoy (на основе идентификатора буя), собирает данные и возвращает их в виде фрейма данных pandas timeseries.

Основываясь на моем наброске рабочего процесса, приведенном выше, я думаю, что могу просто каждый раз создавать новый фрейм данных pandas. пользователь запрашивает, а затем создает сюжетный график и передает его в шаблон. Это пропустило бы всю базу данных django и все моделирование (я думаю?). Я думаю, что этот подход сделан для простых учебных пособий по погодным приложениям, где API уже существует, и выполнение запроса данных выполняется довольно быстро. Поскольку данные, к которым я пытаюсь получить доступ, занимают гораздо больше времени, я полагаю, что это будет крайне неэффективным подходом. Я думаю, что было бы более целесообразно также сохранить полученные данные в базу данных Django. Таким образом, моя база данных будет заполняться «на лету», когда будут сделаны последующие запросы на разные буи. Затем, когда пользователь запрашивает конкретный буй, если данные о буях уже есть в моей базе данных, их можно просто загрузить.

Вопрос 1: После того, как сделан запрос на буй и возвращен кадр данных pandas с историческими данными, как сохранить фрейм данных pandas данных временного ряда буев в виде группы экземпляровмодели BuoyLog в моей базе данных?

Вопрос 2: Допустим, кто-то запрашивает данные о буе, который уже был запрошен ранее и, следовательно, уже существует в моей базе данных. Как мне сделать так, чтобы вместо того, чтобы снова и снова копировать данные со страниц NDBC NOAA, данные просто загружались из моей базы данных django sql?

Заранее благодарю за любую помощь !!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...