Como dessazonalizar uma série temporal no Python

Séries econômicas mensais repetem o mesmo padrão todo ano. Este tutorial mostra como dessazonalizar uma série no Python com três métodos — seasonal_decompose, STL e X13-ARIMA-SEATS — usando a série de concessões de crédito do Banco Central, do método mais simples ao padrão oficial dos institutos de estatística.

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.

Série de crédito dessazonalizada no Python com X13-ARIMA-SEATS ao lado da série original
Série de crédito original (cinza) e dessazonalizada pelo X13 (azul). A linha ajustada some com os picos de calendário e revela a tendência. Fonte: BCB (SGS).

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.

Série de concessões de crédito real no Brasil mostrando picos e vales sazonais que se repetem todo ano
Concessões de crédito em termos reais: os dentes de serra que se repetem em meses fixos são a sazonalidade. Fonte: BCB (SGS).

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.

Assinar o Boletim AM e receber o código →

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.

📈

Tendência
O movimento de fundo, de subida ou descida, depois de tirar o ruído de curto prazo.
🔁

Sazonalidade
O padrão de período fixo e conhecido — o que dessazonalizar quer justamente remover.
🎲

Resíduo
O que sobra: a parte irregular, o choque não explicado por tendência nem sazonalidade.

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.

Decomposição multiplicativa no Python com seasonal_decompose: série observada, tendência, sazonalidade e resíduo
Decomposição multiplicativa: os quatro painéis mostram a série e seus três componentes. Fonte: BCB (SGS).

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.

Decomposição STL no Python com LOESS: série observada, tendência, sazonalidade e resíduo da série de crédito
Decomposição STL: repare como o componente sazonal pode variar de amplitude ao longo do tempo. Fonte: BCB (SGS).

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

Logo do Python
Python — a linguagem que reúne coleta de dados, modelagem e gráfico num único fluxo.
Logo do Banco Central do Brasil
Banco Central (SGS) — a fonte da série de crédito e do IPCA, acessada com a biblioteca python-bcb.
statsmodels
statsmodels — traz os três métodos: seasonal_decompose, STL e a ponte com o X13-ARIMA-SEATS.

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:

Compartilhe esse artigo

Facebook
Twitter
LinkedIn
WhatsApp
Telegram
Email
Print
Análise Macro © 2011 / 2026

comercial@analisemacro.com.br – Rua Visconde de Pirajá, 414, Sala 718
Ipanema, Rio de Janeiro – RJ – CEP: 22410-002

como podemos ajudar?

Preencha os seus dados abaixo e fale conosco no WhatsApp