La bibliothèque de séries temporelles fournit diverses fonctions sur des séries temporelles univariées, multivariées et à plusieurs clés, ainsi que des types numériques et catégoriels.
Les fonctionnalités fournies par la bibliothèque peuvent être classées en trois catégories générales :
- E-S de série temporelle pour créer et sauvegarder des données de séries temporelles
- Fonctions, transformations, fenêtrage ou segmentation, et réducteurs de séries temporelles
- SQL des séries temporelles et extensions SQL à Spark pour permettre l'exécution de fonctions de série temporelle évolutives
Certaines des fonctionnalités clés sont présentées dans les sections ci-après à l'aide d'exemples.
E-S de série temporelle
La principale fonctionnalité d'entrée-sortie (E-S) d'une série temporelle est un DataFrame pandas ou une liste Python. L'exemple de code suivant illustre la construction d'une série temporelle à partir d'un DataFrame :
>>> import numpy as np
>>> import pandas as pd
>>> data = np.array([['', 'key', 'timestamp', "value"],['', "a", 1, 27], ['', "b", 3, 4], ['', "a", 5, 17], ['', "a", 3, 7], ['', "b", 2, 45]])
>>> df = pd.DataFrame(data=data[1:, 1:], index=data[1:, 0], columns=data[0, 1:]).astype(dtype={'key': 'object', 'timestamp': 'int64', 'value': 'float64'})
>>> df
key timestamp value
a 1 27.0
b 3 4.0
a 5 17.0
a 3 7.0
b 2 45.0
#Create a timeseries from a dataframe, providing a timestamp and a value column
>>> ts = tspy.time_series(df, ts_column="timestamp", value_column="value")
>>> ts
TimeStamp: 1 Value: 27.0
TimeStamp: 2 Value: 45.0
TimeStamp: 3 Value: 4.0
TimeStamp: 3 Value: 7.0
TimeStamp: 5 Value: 17.0
Pour revenir d'une série temporelle à un DataFrame pandas, utilisez la fonction to_df
:
>>> import tspy
>>> ts_orig = tspy.time_series([1.0, 2.0, 3.0])
>>> ts_orig
TimeStamp: 0 Value: 1
TimeStamp: 1 Value: 2
TimeStamp: 2 Value: 3
>>> df = ts_orig.to_df()
>>> df
timestamp value
0 0 1
1 1 2
2 2 3
Modèle de données
Les données des séries temporelles ne sont soumises à aucun standard de types de modèle et de données, contrairement à certains types de données, tels que les données spatiales, qui sont gouvernées par un standard tel qu'OGC (Open Geospatial Consortium). Avec les données de séries temporelles, le défi réside dans la grande variété de fonctions qui doivent être prises en charge, comme celles de Spark RDD (Resilient Distributed Datasets).
Le modèle de données permet une grande variété d'opérations, notamment différentes formes de segmentation ou de fenêtrage de série temporelle, des transformations ou conversions de série temporelle en une autre, des réducteurs qui calculent une valeur statique à partir d'une série temporelle, des jointures qui joignent plusieurs séries temporelles et des collecteurs de séries temporelles de différentes fuseaux horaires. La bibliothèque de séries temporelles active le plug-and-play de nouvelles fonctions sans autoriser la modification de la structure de données de base. La bibliothèque prend également en charge les séries temporelles de type numérique et catégoriel.
Avec les fuseaux horaires et les différents formats horaires lisibles par l'homme, un aspect clé du modèle de données est la prise en charge du système de référence temporel (TRS). Chaque série temporelle est associée à un système de référence temporel (TRS), qui peut être remappé à n'importe quel choix de l'utilisateur à tout moment, pour permettre une transformation facile d'une série temporelle spécifique ou d'un segment de série temporelle. Voir Utilisation du système de référence de temps.
De plus, avec la nécessité de manipuler des séries temporelles à grande échelle, la bibliothèque offre une construction d'évaluation paresseuse (lazy) en fournissant un mécanisme permettant d'identifier la dépendance temporelle étroite maximale. Cette construction est très similaire à celle d'un graphique de calcul Spark, qui charge également les données en mémoire au besoin et ne réalise les calculs que si nécessaire.
Types de données des séries temporelles
Vous pouvez utiliser plusieurs types de données comme élément d'une série temporelle, couvrant les structures de données numériques, catégorielles, de tableau et de dictionnaire.
Les types de données suivants sont pris en charge dans une série temporelle :
Type de données | Descriptif |
---|---|
numérique | Série temporelle avec des observations univariées de type numérique, notamment double et entier. Exemple : [(1, 7.2), (3, 4.5), (5, 4.5), (5, 4.6), (5, 7.1), (7, 3.9), (9, 1.1)] |
tableau numérique | Série temporelle avec des observations multivariées de type numérique, notamment tableau de double et tableau d'entiers. Par exemple: [(1, [7.2, 8.74]), (3, [4.5, 9.44]), (5, [4.5, 10.12]), (5, [4.6, 12.91]), (5, [7.1, 9.90]), (7, [3.9, 3.76])] |
chaîne | Série temporelle avec des observation univariées de type Chaîne, par exemple : [(1, "a"), (3, "b"), (5, "c"), (5, "d"), (5, "e"), (7, "f"), (9, "g")] |
tableau de chaînes | Série temporelle avec des observations multivariées de type Chaîne, par exemple : [(1, ["a", "xq"]), (3, ["b", "zr"]), (5, ["c", "ms"]), (5, ["d", "rt"]), (5, ["e", "wu"]), (7, ["f", "vv"]), (9, ["g", "zw"])] |
segment | Série temporelle de segments. La sortie de la fonction segmentBy peut être de n'importe quel type, y compris numérique, chaîne, tableau numérique et tableau de chaînes. Par exemple : [(1,[(1, 7.2), (3, 4.5)]), (5,[(5, 4.5), (5, 4.6), (5, 7.1)]), (7,[(7, 3.9), (9, 1.1)])] |
dictionnaire | Série temporelle de dictionnaires. Un dictionnaire peut contenir des types arbitraires |
Fonctions de série temporelle
Vous pouvez utiliser différentes fonctions dans les packages de séries temporelles fournis pour analyser les données de série temporelle afin d'extraire des informations significatives permettant de créer des modèles qui peuvent être utilisés pour prédire les nouvelles valeurs en fonction des valeurs précédemment observées. Voir Fonctions de série temporelle.
En savoir plus
Pour utiliser le kit SDK tspy
Python, voir la documentation du kit SDK tspy
Python.
Rubrique parent: Analyse des séries temporelles