Como usar o itertools do Python para feature engineering em séries temporais
O itertools do Python ajuda a criar features para séries temporais com rapidez. Um novo artigo apresenta exemplos práticos de feature engineering eficiente e código pronto para escalar seus projetos.
Processado por IA de KDnuggets; editado por Hamidun News
O itertools do Python é um módulo nativo para trabalhar com iteradores e se torna uma ferramenta indispensável no feature engineering de séries temporais. Se você cria features com loops e copia datasets, o itertools ajuda a fazer o mesmo trabalho várias vezes mais rápido e com muito menos memória.
O que é o itertools e para que serve O módulo itertools reúne funções para criar iteradores
rápidos e econômicos em memória. Em séries temporais, isso é crítico: em vez de manter listas na memória, geramos as features sob demanda. Em datasets com milhões ou bilhões de pontos, essa abordagem deixa de ser uma questão de conveniência e passa a ser uma condição para conseguir trabalhar.
Principais funções do itertools para feature engineering: combinations() — todos os pares e combinações de elementos (features de lag, interações entre variáveis) permutations() — todas as permutações (teste de ordens e da influência das features) islice() — extração de subsequências e janelas deslizantes sem cópia zip_longest() — junção de séries de tamanhos diferentes com tratamento de valores ausentes * chain() — junção de iteradores em um único fluxo sem copiar os dados ## Exemplos práticos: da abordagem ingênua à escalável Um problema clássico: há uma série temporal de preços e é preciso criar features de lag com defasagens de 1, 2 e 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) O problema: cada shift() cria uma cópia do dataset na memória. Com 10 milhões de linhas, são ~300 milhões de operações de cópia, além de 3x o consumo de memória.
Com itertools (rápido e econômico): 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}') O islice não copia a lista — ele apenas desloca o ponteiro para a posição desejada. Em datasets grandes, isso economiza horas de processamento. O segundo exemplo são as 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)) O código gera janelas deslizantes de tamanho 3 usando iteradores lazy em vez de copiar o array.
Desempenho: onde se economiza memória e tempo
Em datasets com bilhões de pontos: Avaliação lazy — os elementos são gerados apenas sob demanda, sem carregar tudo de uma vez Encadeamento de operações — o chain() junta fontes sem cópias intermediárias * Composição — ao combinar funções do itertools, é possível montar um pipeline complexo com o mínimo de memória Resultado: o consumo de memória pode cair de 10 a 100 vezes. Na nuvem, isso significa uma conta menor. Na máquina local, passa a rodar o que antes não cabia na RAM.
O que isso significa para você Para cientistas de dados: trabalhe com datasets que antes
simplesmente não cabiam na memória. Para engenheiros de ML: o modelo em produção exige menos recursos e fica mais estável. O itertools não é mágica: é uma forma nativa de trabalhar com dados de maneira mais inteligente. Comece pelas features de lag e pelas janelas deslizantes; depois, você vai encontrar outros pontos onde aplicar a avaliação lazy.
Ship AI Faster with Founders, Engineers & Weekly Architecture Reviews
Inside Vibe Club (hamidun.com/club) — weekly live masterminds with Zhemal Khamidun, Tech Radar, full LMS access, and 370+ production Claude Code skills.
O essencial da IA — uma vez por semana
Sete histórias que realmente importaram, escolhidas a dedo. Sem ruído nem releases.
Pronto! Verifique seu e-mail para a confirmação.