0 / 0
Volver a la versión inglesa de la documentación
Utilización de la biblioteca de series temporales
Última actualización: 07 oct 2024
Utilización de la biblioteca de series temporales

Para empezar a trabajar con la biblioteca de series temporales, importe la biblioteca en el cuaderno o aplicación Python.

Utilice este mandato para importar la biblioteca de series de tiempo:

# Import the package
import tspy

Creación de una serie temporal

Para crear una serie temporal y utilizar las funciones de la biblioteca, debe decidir el origen de datos. Los orígenes de datos soportados son:

  • Listas de la memoria
  • pandas DataFrames
  • Colecciones de observaciones en memoria (mediante la construcción ObservationCollection)
  • Lectores definidos por el usuario (mediante la construcción TimeSeriesReader)

El ejemplo siguiente muestra la ingesta de datos de una lista de la memoria:

ts = tspy.time_series([5.0, 2.0, 4.0, 6.0, 6.0, 7.0])
ts

La salida es la siguiente:

TimeStamp: 0     Value: 5.0
TimeStamp: 1     Value: 2.0
TimeStamp: 2     Value: 4.0
TimeStamp: 3     Value: 6.0
TimeStamp: 4     Value: 6.0
TimeStamp: 5     Value: 7.0

También puede operar en muchas series temporales al mismo tiempo mediante la construcción MultiTimeSeries. Un MultiTimeSeries es esencialmente un diccionario de series temporales, donde cada serie de tiempo tiene su propia clave exclusiva. La serie temporal no está alineada en el tiempo.

La construcción MultiTimeSeries proporciona métodos similares para transformar e ingerir, como la construcción de una sola serie temporal:

mts = tspy.multi_time_series({
	"ts1": tspy.time_series([1.0, 2.0, 3.0]),
	"ts2": tspy.time_series([5.0, 2.0, 4.0, 5.0])
})

La salida es la siguiente:

ts2 time series
------------------------------
TimeStamp: 0     Value: 5.0
TimeStamp: 1     Value: 2.0
TimeStamp: 2     Value: 4.0
TimeStamp: 3     Value: 5.0
ts1 time series
------------------------------
TimeStamp: 0     Value: 1.0
TimeStamp: 1     Value: 2.0
TimeStamp: 2     Value: 3.0

Interpretación del tiempo

De forma predeterminada, una serie temporal utiliza un tipo de datos long para indicar cuándo se ha creado una determinada observación, a la que se hace referencia como una marca de tiempo. Se utiliza un sistema de referencia de tiempo para las series temporales con indicaciones de fecha y hora que pueden interpretar las personas. Consulte Utilización del sistema de referencia de tiempo.

El ejemplo siguiente muestra cómo crear una serie de temporal en la que cada índice indica un día después de la hora inicial 1990-01-01:

import datetime
granularity = datetime.timedelta(days=1)
start_time = datetime.datetime(1990, 1, 1, 0, 0, 0, 0, tzinfo=datetime.timezone.utc)

ts = tspy.time_series([5.0, 2.0, 4.0, 6.0, 6.0, 7.0], granularity=granularity, start_time=start_time)
ts

La salida es la siguiente:

TimeStamp: 1990-01-01T00:00Z     Value: 5.0
TimeStamp: 1990-01-02T00:00Z     Value: 2.0
TimeStamp: 1990-01-03T00:00Z     Value: 4.0
TimeStamp: 1990-01-04T00:00Z     Value: 6.0
TimeStamp: 1990-01-05T00:00Z     Value: 6.0
TimeStamp: 1990-01-06T00:00Z     Value: 7.0

Realizar transformaciones simples

Las transformaciones son funciones que, cuando se les proporciona una o más series temporales, devuelven una nueva serie temporal.

Por ejemplo, para segmentar una serie temporal en ventanas, en la que cada ventana es de size=3, con un deslizamiento de 2 registros, puede utilizar el método siguiente:

window_ts = ts.segment(3, 2)
window_ts

La salida es la siguiente:

TimeStamp: 0     Value: original bounds: (0,2) actual bounds: (0,2) observations: [(0,5.0),(1,2.0),(2,4.0)]
TimeStamp: 2     Value: original bounds: (2,4) actual bounds: (2,4) observations: [(2,4.0),(3,6.0),(4,6.0)]

Este ejemplo muestra la adición de 1 a cada valor de una serie temporal:

add_one_ts = ts.map(lambda x: x + 1)
add_one_ts

La salida es la siguiente:

TimeStamp: 0     Value: 6.0
TimeStamp: 1     Value: 3.0
TimeStamp: 2     Value: 5.0
TimeStamp: 3     Value: 7.0
TimeStamp: 4     Value: 7.0
TimeStamp: 5     Value: 8.0

O puede realizar una unión izquierda de una serie temporal, por ejemplo ts con otra serie temporal ts2:

ts2 = tspy.time_series([1.0, 2.0, 3.0])
joined_ts = ts.left_join(ts2)
joined_ts

La salida es la siguiente:

TimeStamp: 0     Value: [5.0, 1.0]
TimeStamp: 1     Value: [2.0, 2.0]
TimeStamp: 2     Value: [4.0, 3.0]
TimeStamp: 3     Value: [6.0, null]
TimeStamp: 4     Value: [6.0, null]
TimeStamp: 5     Value: [7.0, null]

Utilización de transformadores

En el paquete de transformadores se proporciona un suite de transformadores incorporados. Importe el paquete para utilizar las funciones de transformador proporcionadas:

from tspy.builders.functions import transformers

Después de añadir el paquete, puede transformar los datos de una serie temporal utilizando el método transform.

Por ejemplo, para crear una diferencia en una serie temporal:

ts_diff = ts.transform(transformers.difference())

Aquí la salida es:

TimeStamp: 1     Value: -3.0
TimeStamp: 2     Value: 2.0
TimeStamp: 3     Value: 2.0
TimeStamp: 4     Value: 0.0
TimeStamp: 5     Value: 1.0

Utilización de reductores

Del mismo modo que con el paquete de transformadores, puede reducir una serie temporal utilizando los métodos que proporciona el paquete de reductores. Puede importar el paquete de reductores de la siguiente manera:

from tspy.builders.functions import reducers

Después de importar el paquete, utilice el método reduce para obtener el promedio de una serie temporal, por ejemplo:

avg = ts.reduce(reducers.average())
avg

Este es el resultado:

5.0

Los reductores tienen una propiedad especial que permite que se utilicen junto con las transformaciones de segmentación (suma por hora, promedio de la ventana anterior a la generación de un error y otras). Dado que la salida de un segmentation + reducer es una serie temporal, se utiliza el método transform.

Por ejemplo, para segmentar en ventanas de tamaño 3 y obtener el promedio de cada ventana, utilice:

avg_windows_ts = ts.segment(3).transform(reducers.average())

Esto da como resultado:

imeStamp: 0     Value: 3.6666666666666665
TimeStamp: 1     Value: 4.0
TimeStamp: 2     Value: 5.333333333333333
TimeStamp: 3     Value: 6.333333333333333

Creación de gráficos de series temporales

Se utiliza la evaluación diferida cuando se crea un gráfico de una serie temporal. Cuando crea un gráfico de una serie temporal, puede realizar una de las siguientes acciones:

  • Recopilar las observaciones de la serie temporal, que devuelve un BoundTimeSeries
  • Reducir la serie temporal a un valor o colección de valores
  • Realizar operaciones de guardar o imprimir

Por ejemplo, para recopilar y devolver todos los valores de una serie temporal:

observations = ts.materialize()
observations

Esto da como resultado:

[(0,5.0),(1,2.0),(2,4.0),(3,6.0),(4,6.0),(5,7.0)]

Para recopilar un rango de una serie temporal, utilice:

observations = ts[1:3] # same as ts.materialize(1, 3)
observations

Aquí la salida es:

[(1,2.0),(2,4.0),(3,6.0)]

Tenga en cuenta que una serie temporal se optimiza para las consultas de rango si la serie temporal es de naturaleza periódica.

Si se utiliza describe en una serie temporal actual, también se crea el gráfico de la serie temporal:

describe_obj = ts.describe()
describe_obj

La salida es:

min inter-arrival-time: 1
max inter-arrival-time: 1
mean inter-arrival-time: 1.0
top: 6.0
unique: 5
frequency: 2
first: TimeStamp: 0     Value: 5.0
last: TimeStamp: 5     Value: 7.0
count: 6
mean:5.0
std:1.632993161855452
min:2.0
max:7.0
25%:3.5
50%:5.5
75%:6.25

Más información

Tema principal: Análisis de series temporales

Búsqueda y respuesta de IA generativa
Estas respuestas las genera un modelo de lenguaje grande en watsonx.ai que se basa en el contenido de la documentación del producto. Más información