Principais funcionalidades das séries temporais

A biblioteca de séries temporais oferece diversas funções para séries temporais univariadas, multivariadas e com múltiplas chaves, bem como para tipos numéricos e categóricos.

As funcionalidades oferecidas pela biblioteca podem ser classificadas, em linhas gerais, em:

  • E/S de séries temporais, para criar e salvar dados de séries temporais
  • Funções de séries temporais, transformações, janelas ou segmentação e redutores
  • SQL para séries temporais e extensões SQL para o Spark que permitem a execução de funções escaláveis para séries temporais

Algumas das principais funcionalidades são apresentadas nas seções a seguir por meio de exemplos.

E/S de séries temporais

A principal funcionalidade de entrada e saída (I/O) para uma série temporal é feita por meio de um objeto ` DataFrame ` do pandas ou de uma lista ` Python `. O exemplo de código a seguir mostra como construir uma série temporal a partir de um objeto ` 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 converter uma série temporal de volta para um objeto ` DataFrame, ` do pandas, use a to_df função:

>>> 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 dados

Os dados de séries temporais não possuem normas para os tipos de modelo e de dados, ao contrário de alguns tipos de dados, como os espaciais, que são regidos por uma norma como a do Open Geospatial Consortium (OGC). O desafio com dados de séries temporais é a grande variedade de funções que precisam ser suportadas, semelhante ao que ocorre com os Conjuntos de Dados Distribuídos Resilientes (RDD) do Spark.

O modelo de dados permite uma ampla variedade de operações, que abrangem diferentes formas de segmentação ou divisão em janelas de séries temporais, transformações ou conversões de uma série temporal para outra, redutores que calculam um valor estático a partir de uma série temporal, junções que unem várias séries temporais e coletores de séries temporais de diferentes fusos horários. A biblioteca de séries temporais permite a integração imediata de novas funções, mantendo a estrutura de dados principal inalterada. A biblioteca também oferece suporte a séries temporais do tipo numérico e categórico.

Devido aos fusos horários e aos diversos formatos de hora legíveis por humanos, um aspecto fundamental do modelo de dados é o suporte ao Sistema de Referência Temporal (TRS). Cada série temporal está associada a um TRS (padrão do sistema), que pode ser remapeado para qualquer opção específica do usuário a qualquer momento, permitindo a fácil transformação de uma série temporal específica ou de um segmento de uma série temporal. Consulte “Utilização do sistema de referência temporal ”.

Além disso, diante da necessidade de lidar com séries temporais de grande porte, a biblioteca oferece uma estrutura de avaliação preguiçosa, fornecendo um mecanismo para identificar a dependência temporal mais restrita possível. Essa estrutura é muito semelhante à de um gráfico de computação do Spark, que também carrega dados na memória conforme a necessidade e executa os cálculos apenas quando necessário.

Tipos de dados de séries temporais

É possível utilizar vários tipos de dados como elementos de uma série temporal, incluindo estruturas de dados numéricas, categóricas, matrizes e dicionários.

Os seguintes tipos de dados são suportados em uma série temporal:

Tipo de dados Descrição
numérico Séries temporais com observações univariadas de tipo numérico, incluindo valores de precisão dupla e inteiros. Por exemplo:[(1, 7.2), (3, 4.5), (5, 4.5), (5, 4.6), (5, 7.1), (7, 3.9), (9, 1.1)]
matriz numérica Séries temporais com observações multivariadas de tipo numérico, incluindo matrizes de números de precisão dupla e matrizes de inteiros. Por exemplo: [(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])]
sequência Séries temporais com observações univariadas do tipo string, por exemplo: [(1, "a"), (3, "b"), (5, "c"), (5, "d"), (5, "e"), (7, "f"), (9, "g")]
matriz de sequência Séries temporais com observações multivariadas do tipo matriz de cadeias de caracteres, por exemplo: [(1, ["a", "xq"]), (3, ["b", "zr"]), (5, ["c", "ms"]), (5, ["d", "rt"]), (5, ["e", "wu"]), (7, ["f", "vv"]), (9, ["g", "zw"])]
segmento Série temporal de segmentos. O resultado da segmentBy função pode ser de qualquer tipo, incluindo numérico, string, matriz numérica e matriz de strings. Por exemplo: [(1,[(1, 7.2), (3, 4.5)]), (5,[(5, 4.5), (5, 4.6), (5, 7.1)]), (7,[(7, 3.9), (9, 1.1)])]
dicionário Série temporal de dicionários. Um dicionário pode conter tipos arbitrários

Funções de séries temporais

Você pode utilizar diferentes funções dos pacotes de séries temporais disponíveis para analisar dados de séries temporais e extrair informações significativas, com as quais criar modelos que possam ser usados para prever novos valores com base em valores observados anteriormente. Consulte Funções de séries temporais.

Saiba mais

Para usar o tspy SDK do Python, consulte a documentação tspy do SDK do Python.