Как преобразовать несколько не выровненных временных рядов, которые поступили в разные интервалы и зависят друг от друга - PullRequest
0 голосов
/ 13 мая 2018

Система собирает много данных временных рядов, которые не выровнены:

Пример:

+----------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-----+
|   Time   | 12:00 | 12:01 | 12:02 | 12:03 | 12:04 | 12:05 | 12:06 | 12:07 | 12:08 | ... |
+----------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-----+
| Series 1 |     8 |       |     2 |       |     4 |       |     8 |       |     6 |     |
| Series 2 |       |     5 |       |     4 |       |     7 |       |     2 |       |     |
| Series 3 |     5 |       |       |       |     7 |       |       |       |     2 |     |
| ...      |       |       |       |       |       |       |       |       |       |     |
+----------+-------+-------+-------+-------+-------+-------+-------+-------+-------+-----+

и также может быть отложено или отправлено в пакетном режиме (т. Е. Время события может быть не равно времени приема, зависит от источника)


Исходные данные будут дискретизироваться с интервалом 1 минута и заполнять пропущенное значение путем линейной интерполяции с предыдущим значением. Затем выполните поэлементное преобразование следующим образом:

Серия 2 = Серия 2 + Серия 3
Серия 1 = Серия 1 * Серия 2

поэтому серия 1 зависит от себя и от серии 2. серия 2 зависит от себя и от серии 3.

Отношения преобразования между рядами могут образовывать направленный ациклический граф (DAG). Отношение изменится во время выполнения, если пользователь запросит изменение.


В настоящее время все вычисления выполняются мгновенно с помощью Python Pandas, когда пользователь получает данные временного ряда. Но производительность ухудшается, когда объем данных увеличивается или пользователь выбирает широкий временной диапазон.

Есть ли способ / инструмент для достижения этой цели, такой как потоковая или пакетная обработка?

1 Ответ

0 голосов
/ 12 августа 2018

Попробуйте использовать RedBlackPy ! Он был построен для удобной работы с временными рядами, включая безусловную интерполяцию. Также вы можете прочитать статью о TowardsDataScience . Класс RedBlackPy.Series содержит все функции, которые вы ищете. Он поддерживает арифметические методы вдоль отсортированного объединения ключей объектов Series (с автоматической интерполяцией). SeriesIterator

RedBlackPy превосходит Pandas по работе с динамически упорядоченными данными, такими как временные ряды.

enter image description here

...