Использование данных временных рядов:

Пример кода для получения дневных интервалов определенных событий в определенных группах с использованием python и pandas.

В этом примере показано, как изменить следующие данные:

Группируется по набору ключевых значений (например, группировать по ключу1, ключу2..ключуn), чтобы можно было определить интервал между событиями для определенной группы данных. Такие как :

Мы довольно много занимаемся построением функций данных временных рядов для данных розничных продаж и оптовых заказов, но есть много приложений для обработки данных, которые требуют этого в своих конвейерах. Трудно найти базовый пример, объединяющий временные дельты на основе агрегирования.

Есть 2 входных файла:

  1. Order_date_interval_dev.csv — содержит 26 строк подробных данных и 6 экземпляров ключей.
  2. Order_date_interval_test.csv — содержит около 10 тысяч строк подробных данных и около 500 уникальных экземпляров ключей.

Блокнот TimeIntervalStat.ipynb Jupyter содержит некоторые пояснительные примечания и экспортированный файл .py, если вы хотите запустить его изначально. Очевидно, что это не предназначено для использования в качестве кода производственного конвейера, а предназначено для иллюстрации некоторых методов, которые я изучил за последний год, и максимально упрощает адаптацию к вашей конкретной проблеме.

Есть 2 выходных файла:

interval.csv — содержит выходные данные на уровне строк для квалифицированных строк и дневной интервал в виде целого числа. В тестовой версии получается около 3 тыс. строк.

keystat.csv — описательный вывод статистики для каждого уникального экземпляра ключей, включая минимальное, максимальное, количество и среднее значение дневного интервала, а также минимальное, максимальное, сумму и среднее количество наблюдений в начальных строках.

Вы можете найти код и тестовые файлы по адресу:

https://github.com/doug-macleod/time-series

Вариант использования и данные.

Пример исходит из полиглота данных ввода заказа, представляющих позиции заказа от продавца, идущего в магазин (custid) и заказывающего продукт (prodid) в определенную дату (дата заказа). Количество заказанного товара указано в коробках.

Оба входных файла были экспортированы и отсортированы по возрастанию custid, prodid и order_date. Это действительно повышает производительность. Причина, по которой существует небольшой разработчик и более реалистичный тестовый файл, заключается в том, что проще создать некоторые варианты использования для запуска с небольшим набором данных.

Обратите внимание, что в реальном производственном конвейере вы, вероятно, захотите избежать Pandas.

  1. на больших наборах данных более 1 гигабайта по причинам памяти (хотя см. www.dataquest.io/blog/pandas-big-data/ для некоторых отличных обходных путей)
  2. обработка ошибок и ведение журнала проще в прямом питоне. (Убедитесь, что поле JSON является целым числом из входящего вызова веб-службы)
  3. Новые более дешевые облачные реализации, такие как AWS Lambdas, имеют ограничения по размеру импорта вашей библиотеки, особенно если вы используете официальные докеры panda3.7. Обратите внимание, что это становится проще с более легкой загрузкой во время выполнения. https://blog.zappa.io/posts/slim-handler

При первоначальном проглатывании и построении модели очень легко создавать прототипы и тестировать. Используйте их как способ сделать первоначальный дизайн и как спецификацию для реализации. Как давний разработчик баз данных, формируйте свои данные в базе данных, но используйте pandas для агрегирования, создания производных функций и экспериментов с моделями с помощью scikit.

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

Это попытка внести скромный вклад в сообщество, которое было так полезно для меня, когда я пытался приблизиться к решению проблемы нашей предметной области. Отдельно хочу поблагодарить:

https://www.shanelynn.ie/summarising-aggregation-and-grouping-data-in-python-pandas/

за отличный пост о group by и agg().

https://towardsdatascience.com/pandas-tips-and-tricks-33bcc8a40bb9

Шир Меир Ладор

имеет отличный обзор более быстрых функций numpy на основе C, включая сдвиг.

Машинное обучение с кулинарной книгой Python: практические решения от предварительной обработки до глубокого обучения, 1-е издание Криса Альбиона. Книга стоит 45 долларов и окупится в течение дня.