Как эффективно обрабатывать обнаружение и замену выбросов в данных временных рядов GridDB?Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Как эффективно обрабатывать обнаружение и замену выбросов в данных временных рядов GridDB?

Сообщение Anonymous »

Я работаю над проектом анализа данных временных рядов с использованием GridDB. Мой набор данных содержит нерегулярные интервалы и некоторые точки данных, которые, вероятно, являются выбросами. Мне нужно выявить эти выбросы и заменить их интерполированными значениями или заполнителем по умолчанию.
Текущая настройка:
Я использую контейнер TimeSeries в GridDB. со следующей схемой:
метка времени (TIMESTAMP)
значение (DOUBLE)
Вот код Python, который я использую для создания и заполнения контейнера:

Код: Выделить всё

import griddb_python as griddb

factory = griddb.StoreFactory.get_instance()
gridstore = factory.get_store(
notification_member="127.0.0.1:10001",
cluster_name="defaultCluster",
username="admin",
password="admin"
)

container_info = griddb.ContainerInfo(
"time_series_data",
[
["timestamp", griddb.Type.TIMESTAMP],
["value", griddb.Type.DOUBLE]
],
griddb.ContainerType.TIME_SERIES,
True
)
container = gridstore.put_container(container_info)

# Insert sample data with irregular intervals and potential outliers
container.put([
("2024-01-01T00:00:00.000Z", 10.0),
("2024-01-01T01:00:00.000Z", 100.0),  # Potential outlier
("2024-01-01T02:00:00.000Z", 20.0)
])
Постановка задачи:
Мне необходимо:
  • Обнаружить выбросы на основе по пороговому значению или статистическому методу (например, z-показатель, IQR).
  • Замените эти выбросы интерполированными значениями (например, средним значением соседних точек) или заполнителем по умолчанию.
Вопрос:
  • Есть ли в GridDB встроенная поддержка обнаружения и замены выбросов в данных временных рядов во время выполнения запроса?
  • Если нет, то какой способ добиться этого с помощью GridDB и Python будет наиболее эффективным?
Что я пробовал:

Что я пробовал:
  • Обработка после запроса: I получили данные с помощью следующего запроса и применили обнаружение выбросов в Python:
SELECT * FROM time_series_data WHERE timestamp >=
TIMESTAMP('2024-01-01T00:00:00.000Z')

Однако этот подход требует больших вычислительных затрат для больших наборы данных.
  • Предварительная обработка: я рассматривал возможность предварительной обработки данных для обработки выбросов перед их сохранением в GridDB, но это неоправданно увеличивает требования к хранению.
Желаемый результат:
Например, выброс 2024-01-01T01:00:00.000Z (значение 100.0) следует заменить средним значением соседних точек:

Код: Выделить всё

 - Interpolated Value = (10.0 + 20.0) / 2 = 15.0
Я был бы признателен за любые рекомендации, примеры или рекомендации по эффективному решению этой проблемы в GridDB.

Подробнее здесь: https://stackoverflow.com/questions/793 ... time-serie
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»