Funcionalidade chave de série temporal

A biblioteca de séries temporais fornece várias funções em séries univariadas, multivariadas, séries temporais multichaves, bem como tipos numéricos e categóricos.

A funcionalidade fornecida pela biblioteca pode ser amplamente categorizada em:

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

Algumas das funcionalidades principais são mostradas nas seções a seguir usando exemplos.

E/S da série temporal

A funcionalidade de entrada e saída (E/S) primária para uma série temporal é por meio de um DataFrame de pandas ou uma lista Python. A amostra de código a seguir mostra a construção de uma série temporal a partir de um 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 reverter uma série temporal de volta para um pandas DataFrame, use a função 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 dados

Os dados da série temporal não possuem quaisquer padrões para o modelo e os tipos de dados, ao contrário de alguns tipos de dados, como o espacial, que são regidos por um padrão como o Open Geospatial Consortium (OGC). O desafio com dados de séries temporais é a grande variedade de funções que precisam ser suportadas, semelhantes às do Spark Resilient Distribuídos Datasets (RDD).

O modelo de dados permite uma grande variedade de operações que variam entre diferentes formas de segmentação ou janelas de séries temporais, transformações ou conversões de uma série temporal para outra, redutores que calculam um valor estático 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 possibilita o plug-and-play de novas funções, enquanto mantém a estrutura de dados principal inalterável. A biblioteca também suporta séries temporais dos tipos numérico e categórico.

Com fusos horários e vários formatos de tempo de leitura humana, um aspecto fundamental do modelo de dados é o suporte para o Time Reference System (TRS). Cada série temporal é associada a um TRS (padrão de sistema), que pode ser remapeado para qualquer escolha específica do usuário a qualquer momento, possibilitando a fácil transformação de uma série temporal específica ou de um segmento de uma série temporal. Consulte Usando sistema de referência de tempo.

Além do mais, com a necessidade de tratamento de séries temporais de grande escala, a biblioteca oferece uma construção de avaliação preguiçosa, fornecendo um mecanismo para identificar a dependência temporal limitada máxima. Essa construção é muito semelhante à de um gráfico de cálculo do Spark, que também carrega dados na memória conforme a necessidade e realiza os cálculos somente quando necessário.

Tipos de dados da série temporal

Você pode usar vários tipos de dados como um elemento de uma série temporal, abrangendo estruturas de dados numéricas, categóricas, de matriz e de dicionário.

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

Tipo de dados Descrição
numérico Série temporal com observações univariadas de tipo numérico, incluindo o dobro e o inteiro. 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érie temporal com observações multivariadas de tipo numérico, incluindo matriz dupla e matriz de número inteiro. 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érie temporal com observações univariadas do tipo sequência, por exemplo:[(1, "a"), (3, "b"), (5, "c"), (5, "d"), (5, "e"), (7, "f"), (9, "g")]
matriz de sequência Série temporal com observações multivariadas da matriz do tipo sequência, 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. A saída da função segmentBy; pode ser qualquer tipo, incluindo numérica, sequência, matriz numérica e matriz de sequência. 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 ter tipos arbitrários dentro dele

Funções de séries temporais

É possível usar diferentes funções nos pacotes de séries temporais fornecidos para analisar dados de séries temporais para 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 da série temporal.

Saiba mais

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