Ausreißer in GridDB-Zeitreihendaten effizient erkennen und ersetzenPython

Python-Programme
Guest
 Ausreißer in GridDB-Zeitreihendaten effizient erkennen und ersetzen

Post by Guest »

Ich analysiere in GridDB gespeicherte Zeitreihendaten. Mein Datensatz weist unregelmäßige Intervalle und einige Datenpunkte auf, bei denen es sich möglicherweise um Ausreißer handelt. Ich brauche eine Möglichkeit, diese Ausreißer beim Datenabruf zu identifizieren und durch interpolierte Werte zu ersetzen.
Aktuelles Setup
Ich verwende einen TimeSeries-Container in GridDB mit dieses Schema:
  • Zeitstempel (TIMESTAMP)
  • Wert (DOPPELT)

Hier ist ein Beispiel dafür, wie ich den Container fülle:

Code: Select all

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 potential outliers
container.put([
("2024-01-01T00:00:00.000Z", 10.0),
("2024-01-01T01:00:00.000Z", 100.0),  # Possible outlier
("2024-01-01T02:00:00.000Z", 20.0)
])
Problemstellung
Ich möchte:
  • Ausreißer in der erkennen value mithilfe einer statistischen Methode (z. B. Z-Score, IQR).
  • Ersetzen Sie diese Ausreißer beim Abruf durch interpolierte Werte basierend auf ihren Nachbarpunkten.
Zum Beispiel der Wert 100,0 am 2024-01-01T01:00:00.000Z könnte durch den Durchschnitt seiner Nachbarn ersetzt werden:
  • Interpolierter Wert = (10,0 + 20,0) / 2 = 15,0
Frage
  • Unterstützt GridDB das native Erkennen und Ersetzen von Ausreißern während der Abfrageausführung?
  • Wenn nicht, wie lässt sich dies unter Berücksichtigung großer Datensätze mit GridDB und Python am effizientesten erreichen?< /li>
Was ich versucht habe
  • Verarbeitung nach der Abfrage: [/b]

    Ich habe die Daten abgerufen und Python zur Ausreißererkennung verwendet Interpolation. Allerdings ist dieser Ansatz für große Datensätze rechenintensiv.
  • Vorverarbeitung:

    Ich habe darüber nachgedacht, Ausreißer zu behandeln, bevor ich Daten in GridDB speichere, aber das erhöht den Speicherbedarf und macht den Datensatz weniger dynamisch.
Zusätzlich Kontext
Ich frage derzeit Daten wie ab Dies:

Code: Select all

SELECT * FROM time_series_data WHERE timestamp >= TIMESTAMP('2024-01-01T00:00:00.000Z')
Dies ruft jedoch nur die gespeicherten Daten ab und hilft nicht bei der Erkennung oder Interpolation von Ausreißern.
Alle Erkenntnisse, Beispiele oder Best Practices für die Handhabung Dies wäre sehr hilfreich!

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post