La biblioteca de series temporales proporciona varias funciones univariante, multivariante, series temporales de múltiples claves así como tipos numéricos y categóricos.
La funcionalidad que proporciona la biblioteca puede clasificarse a grandes rasgos en:
- E/S de serie temporal, para crear y guardar datos de series temporales
- Funciones de series temporales, transformaciones, sistema de ventanas o segmentación y reductores
- SQL de series temporales y extensiones de SQL en Spark para permitir ejecutar funciones de series temporales escalables
En las secciones siguientes mediante ejemplos, se muestra parte de la funcionalidad clave
E/S de serie temporal
La funcionalidad de entrada y salida (E/S) principal para una serie temporal es mediante un pandas DataFrame o una lista Python. En el código de ejemplo siguiente se muestra cómo construir una serie temporal a partir de 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
Para volver de una serie temporal a un DataFrame pandas, utilice la función 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
Modelo de datos
Los datos de serie temporal no tienen ningún estándar para el modelo y los tipos de datos, a diferencia de algunos tipos de datos como los espaciales, que se rigen por un estándar como Open Geospatial Consortium (OGC). El reto con los datos de serie temporal es la gran variedad de funciones que se deben soportar, similar a la de los conjuntos distribuidos y flexibles de datos Spark (RDD).
El modelo de datos permite una gran variedad de operaciones que abarcan diferentes formas de segmentación o de sistema de ventanas de las series temporales, transformaciones o conversiones de una serie temporal a otra, reductores que calculan un valor estático a partir de una serie temporal, uniones que unen varias series temporales y recopiladores de series temporales de diferentes zonas horarias. La biblioteca de series temporales permite la incorporación de nuevas funciones, manteniendo inalterable la estructura de datos central. La biblioteca también soporta series temporales con tipos numéricos y categóricos.
Con husos horarios y varios formatos legibles, un aspecto clave del modelo de datos es la compatibilidad con el Sistema de referencia de tiempo (SRH). Cada serie temporal está asociada a un TRS (valor predeterminado del sistema), que puede reasignarse a cualquier elección específica del usuario en cualquier momento, lo que permite una fácil transformación de una serie temporal específica o de un segmento de una serie temporal. Consulte Utilización del sistema de referencia de tiempo.
Además, con la necesidad de manejar series temporales a gran escala, la biblioteca ofrece una construcción de evaluación diferida al proporcionar un mecanismo para identificar la máxima dependencia temporal acotada. Esta construcción es muy similar a la de un gráfico de cálculo de Spark, que también carga los datos en la memoria en función de las necesidades y realiza los cálculos sólo cuando se necesitan.
Tipos de datos de series temporales
Puede utilizar múltiples tipos de datos como elemento de una serie temporal, que abarcan estructuras de datos numéricas, categóricas, de matriz y de diccionario.
En una serie temporal, se da soporte a los tipos de datos siguientes:
Tipo de datos | Descripción |
---|---|
numérico | Serie temporal con observaciones univariadas de tipo numérico incluidos doble y entero. Por ejemplo:[(1, 7.2), (3, 4.5), (5, 4.5), (5, 4.6), (5, 7.1), (7, 3.9), (9, 1.1)] |
matriz numérica | Serie temporal con observaciones multivariadas de tipo numérico, incluidos matriz doble y matriz de entero. Por ejemplo: [(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])] |
serie | Series temporales con observaciones de una sola variable de tipo serie, por ejemplo: [(1, "a"), (3, "b"), (5, "c"), (5, "d"), (5, "e"), (7, "f"), (9, "g")] |
matriz de series | Serie temporal con observaciones multivariantes de matriz de tipo serie, por ejemplo: [(1, ["a", "xq"]), (3, ["b", "zr"]), (5, ["c", "ms"]), (5, ["d", "rt"]), (5, ["e", "wu"]), (7, ["f", "vv"]), (9, ["g", "zw"])] |
Segmento | Series temporales de segmentos. La salida de la función segmentBy puede ser de cualquier tipo, incluido numérico, serie, matriz numérica y matriz de series. Por ejemplo: [(1,[(1, 7.2), (3, 4.5)]), (5,[(5, 4.5), (5, 4.6), (5, 7.1)]), (7,[(7, 3.9), (9, 1.1)])] |
diccionario | Series temporales de diccionarios. Un diccionario puede tener tipos arbitrarios en él |
Funciones de series temporales
Puede utilizar diferentes funciones de los paquetes de series temporales proporcionados para analizar los datos de series temporales con objeto de extraer información significativa con la que crear modelos que puedan utilizarse para predecir nuevos valores basados en valores observados previamente. Consulte Funciones de serie temporal.
Más información
Para utilizar el SDK tspy
de Python, consulte la Documentación del SDK tspy
de Python.
Tema principal: Análisis de series temporales