KDnuggets→ original

Como usar itertools do Python para feature engineering de séries temporais

O itertools do Python ajuda a criar rapidamente features para séries temporais. O novo artigo apresenta exemplos práticos de feature engineering eficiente e cód

Como usar itertools do Python para feature engineering de séries temporais
Fonte: KDnuggets. Colagem: Hamidun News.
◐ Ouvir artigo

Python itertools — este é um módulo integrado para trabalhar com iteradores, que se torna uma ferramenta indispensável no feature engineering para séries temporais. Se você está construindo features através de loops e copiando datasets, itertools ajudará você a fazer isso várias vezes mais rápido e com economia de memória.

O que é itertools e por que você precisa dele

O módulo itertools contém funções para criar iteradores rápidos e eficientes em termos de memória. Para trabalhar com séries temporais, isso é crítico: em vez de armazenar listas na memória, geramos features na hora. Em datasets com milhões ou bilhões de pontos, isso não é apenas conveniente — é necessário para trabalhar de forma alguma.

Principais funções itertools para feature engineering:

  • `combinations()` — todos os pares e combinações de elementos (features de lag, interações de variáveis)
  • `permutations()` — todas as permutações (testando ordens e influência de features)
  • `islice()` — extração de subsequências e janelas deslizantes sem cópia
  • `zip_longest()` — combinação de séries de comprimentos diferentes com tratamento de valores faltantes
  • `chain()` — combinação de iteradores em um fluxo único sem cópia de dados

Exemplos práticos: de abordagem ingênua para escalável

Problema clássico: uma série temporal de preços, precisa-se construir features de lag com defasagens 1, 2, 3.

Abordagem ingênua (lenta):

```python import pandas as pd data = pd.read_csv('prices.csv') for lag in range(1, 4): data[f'price_lag_{lag}'] = data['price'].shift(lag) ```

Problema: cada `shift()` cria uma cópia do dataset na memória. Em 10 milhões de linhas, isso é ~300 milhões de operações de cópia mais 3x de consumo de memória.

Com itertools (rápido e eficiente):

```python from itertools import islice prices = [100, 102, 105, 103, 107, 110] for lag in range(1, 4): lagged = list(islice(prices, lag, None)) print(f'lag {lag}: {lagged}') ```

`islice` não copia a lista — simplesmente desloca o ponteiro para a posição necessária. Em datasets grandes, isso economiza horas de computação.

Segundo exemplo — janelas deslizantes:

```python from itertools import islice, tee

def sliding_window(iterable, n): iterables = tee(iterable, n) for i, it in enumerate(iterables): for _ in range(i): next(it, None) return zip(*iterables)

prices = [100, 102, 105, 103, 107, 110] windows = list(sliding_window(prices, 3)) ```

Isso cria janelas deslizantes de tamanho 3, usando iteradores preguiçosos em vez de copiar o array.

Desempenho: onde a memória e o tempo são economizados

Em datasets com bilhões de pontos:

  • Computação preguiçosa — elementos são gerados sob demanda, não carregados como um todo
  • Cadeias de operações — `chain()` combina fontes sem cópias intermediárias
  • Composição — combinando itertools, construímos um pipeline complexo com memória mínima

Resultado: o consumo de memória pode cair 10-100 vezes. Na nuvem, isso significa uma conta mais barata. Em uma máquina local — funciona com o que anteriormente não cabia na RAM.

O que isso significa para você

Para cientistas de dados: trabalhe com datasets que anteriormente simplesmente não cabiam na memória.

Para engenheiros de ML: um modelo de produção requer menos recursos e é mais estável.

itertools não é mágica, é uma forma integrada de trabalhar com dados de forma mais inteligente. Comece com features de lag e janelas deslizantes, depois encontre onde mais você pode aplicar computação preguiçosa.

ZK
Hamidun News
Notícias de AI sem ruído. Seleção editorial diária de mais de 400 fontes. Produto de Zhemal Khamidun, Head of AI na Alpina Digital.
O que você acha?
Carregando comentários…