Dessazonalizar uma série no Python é remover os efeitos sazonais que se repetem ao longo do ano, como o pico de dezembro e o vale de janeiro, para analisar a tendência da série com mais clareza. Com três funções da biblioteca statsmodels (seasonal_decompose, STL e X13-ARIMA-SEATS) você separa qualquer série econômica mensal em tendência, sazonalidade e resíduo, e obtém a versão ajustada, pronta para análise.
Neste tutorial mostramos como fazer isso na prática, usando a série real de concessões de crédito do Brasil (Banco Central), do método mais simples ao padrão usado por bancos centrais. Você vê o método, as ferramentas e os resultados de cada abordagem.

Repare como a linha azul, dessazonalizada, é mais suave: ela não tem os saltos de dezembro nem as quedas de janeiro. É essa série ajustada que permite comparar um mês com o anterior sem confundir efeito de calendário com movimento real da economia. O tutorial abaixo mostra como chegar até ela.
O que é sazonalidade e por que removê-la
Sazonalidade é um padrão que se repete em período fixo e conhecido: o mês do ano, o dia da semana. Concessões de crédito sobem todo dezembro e caem todo janeiro por causa do calendário (13º salário, festas, férias), não porque a economia mudou de rumo naquele mês.
Esse padrão atrapalha a leitura de curto prazo. Se dezembro é sempre alto, comparar dezembro com novembro superestima a força do crédito; comparar janeiro com dezembro exagera a queda. O ajuste sazonal remove essa parte previsível e deixa à mostra a tendência de fundo, que é a série sobre a qual se decide.
Antes de qualquer coisa, uma série econômica em valores correntes precisa ser deflacionada. Os valores observados refletem tanto o crescimento real quanto a inflação. Para isolar o volume real de crédito, trazemos toda a série para os preços de um mesmo mês usando um índice do IPCA. Só então faz sentido decompor a série.

Quer reproduzir esta análise?
O código completo em Python (coleta da série do Banco Central e os três métodos de dessazonalização — seasonal_decompose, STL e X13-ARIMA-SEATS) vai para os assinantes do Boletim AM. Assine, é gratuito, e receba no seu e-mail o código pronto para rodar.
Os três componentes de uma série temporal
Decompor uma série é escrevê-la como a combinação de partes que não observamos diretamente. Cada método deste tutorial faz essa separação de um jeito, mas todos entregam os mesmos três componentes.
Há uma escolha de forma antes de decompor. Na versão aditiva, os componentes se somam e a "onda" sazonal tem sempre o mesmo tamanho em reais. Na multiplicativa, eles se multiplicam e a onda cresce junto com o nível da série. Séries econômicas em nível costumam ser multiplicativas: quanto maior o crédito, maior a oscilação absoluta de dezembro.
Método 1 — decomposição naive com seasonal_decompose
O caminho mais simples estima a sazonalidade por médias móveis: calcula a tendência com uma média móvel, remove-a da série e tira a média por mês para achar o fator sazonal. É o método chamado naive, disponível na função seasonal_decompose do statsmodels, que aceita tanto o modelo aditivo quanto o multiplicativo.
É rápido e didático, ótimo para uma primeira olhada. O custo é a rigidez: ele assume que a sazonalidade é fixa ao longo de todo o período e é sensível a valores atípicos, que podem contaminar a média.

Método 2 — STL com regressão local (LOESS)
O STL (Seasonal-Trend decomposition using LOESS) estima os componentes com regressão local: ajusta pequenas curvas a janelas móveis da série em vez de uma média única. Isso o torna mais flexível que o naive em dois casos comuns na prática.
Primeiro, ele aceita sazonalidade que muda de forma ao longo do tempo — útil quando o padrão de calendário evolui ao longo de uma década. Segundo, é mais robusto a outliers: um choque pontual, como o da pandemia, não deforma toda a estimativa. No Python, ele vem na classe STL.

Método 3 — X13-ARIMA-SEATS, o padrão oficial
O X13-ARIMA-SEATS é o método mais completo e o que institutos de estatística publicam. Ele combina um modelo ARIMA — que prevê e preenche as pontas da série — com o algoritmo SEATS de extração sazonal, e ainda corrige efeitos de calendário: número de dias úteis no mês, feriados móveis como a Páscoa. Nenhum dos dois métodos anteriores faz isso.
A diferença prática é que o X13 é um programa externo, escrito pelo US Census Bureau, que o Python chama por baixo dos panos. É preciso baixá-lo e indicar onde ele está — e o binário muda conforme o sistema operacional. No Google Colab (Linux), o download é direto; no Windows, usa-se a versão própria. Com o programa no lugar, uma única função entrega a série já ajustada.
A tabela abaixo mostra o efeito sazonal que o X13 removeu nos últimos meses da série: a diferença percentual entre o valor original e o dessazonalizado. Positivo significa que o mês tinha um empurrão sazonal para cima; negativo, para baixo.
| Mês | Original (R$ mi) | Dessazonalizada X13 (R$ mi) | Efeito sazonal |
|---|---|---|---|
| dez/2025 | 829.632 | 756.528 | +9,7% |
| jan/2026 | 667.903 | 708.567 | −5,7% |
| fev/2026 | 623.236 | 701.796 | −11,2% |
| mar/2026 | 751.232 | 722.298 | +4,0% |
| abr/2026 | 696.485 | 710.411 | −2,0% |
| mai/2026 | 694.151 | 704.474 | −1,5% |
Efeito sazonal removido pelo X13 nas concessões de crédito reais. Fonte: BCB (SGS).
O padrão é regular: dezembro carrega quase +10% de sazonalidade, e fevereiro tira mais de 11% da série. Sem dessazonalizar, a queda de dezembro para fevereiro pareceria um tombo do crédito, quando boa parte dela é só calendário.
As ferramentas por trás


python-bcb.
Qual método escolher
- seasonal_decompose (naive). Rápido e didático, para uma primeira olhada. Assume sazonalidade fixa e sofre com outliers.
- STL. Mais flexível: aceita sazonalidade que evolui e é robusto a choques. Boa escolha geral quando não se quer a complexidade do X13.
- X13-ARIMA-SEATS. O padrão oficial. Corrige efeitos de calendário e entrega o resultado de referência, ao custo de instalar o programa externo.
Considerações finais
Dessazonalizar deixou de ser tarefa restrita a especialistas em econometria. Com dados públicos do Banco Central e poucas linhas de Python, qualquer analista reproduz o mesmo ajuste que o IBGE aplica às séries oficiais — e escolhe o método conforme a exigência do problema.
O Python reúne num só ambiente a coleta do dado, o tratamento (deflacionar, alinhar datas), a modelagem e o gráfico, sem passar por planilhas ou softwares separados. O mesmo caminho (coletar, tratar, decompor, visualizar) se repete em quase todo problema de série temporal. O que muda é a aplicação:
- Economista: lê a tendência de crédito, produção ou emprego sem o ruído de calendário, para diagnosticar o ciclo.
- Analista de dados: monta painéis de monitoramento com séries já ajustadas, comparáveis mês a mês.
- Gestor e trader: separam movimento sazonal de mudança real de rumo antes de decidir posição.
- Profissional de risco: modela resíduos e choques depois de tirar tendência e sazonalidade da série.
Dominar a linguagem dá acesso a todas essas frentes com a mesma base técnica.
Você viu como funciona; aprenda a construir a análise inteira
Dessazonalizar é um passo de um fluxo maior de análise macroeconômica em Python: coletar, tratar, modelar e comunicar dados de PIB, inflação, câmbio e crédito. Você aprende esse fluxo completo na Formação em Análise Macroeconômica. Quem quer acesso a todas as formações tem o AM Black, a assinatura anual.
Conheça a Formação em Análise Macroeconômica →Ver o AM Black →
Leia também: