O ajuste sazonal no Python remove de uma série temporal o padrão que se repete todo ano — o pico de dezembro, o vale de janeiro — para deixar à mostra a tendência real da série. A forma mais robusta de fazer isso é o X13-ARIMA-SEATS, o mesmo programa que o IBGE e o US Census Bureau usam, chamado a partir do Python pela biblioteca statsmodels.
Neste tutorial você vê como fazer o ajuste sazonal de ponta a ponta: coletar uma série mensal, instalar o X13 (no Google Colab e no Windows), rodar o ajuste e comparar a série original com a dessazonalizada. O gráfico abaixo já mostra o resultado.

A linha cinza tem um dente de serra que se repete todo ano: é a sazonalidade. A linha azul, ajustada pelo X13, apaga esse efeito de calendário e mostra o que de fato aconteceu com o emprego — a subida até 2007, a queda na crise de 2008 e a recuperação seguinte.
O que é sazonalidade em uma série temporal
Uma série temporal é uma sequência de observações em intervalos regulares: a inflação mensal, o PIB trimestral, o emprego mês a mês. É comum enxergá-la como a soma de três partes que não observamos separadamente.
A sazonalidade é um problema de leitura. O varejo contrata para as festas de fim de ano e demite em janeiro: se você olha só o número cheio, um salto em dezembro parece uma melhora da economia quando é apenas o calendário. Ajuste sazonal é remover essa componente para comparar dezembro com dezembro sem o ruído do mês.
Série aditiva e série multiplicativa
Há duas formas de a sazonalidade se combinar com o resto da série, e a escolha depende de como a "onda" sazonal se comporta. Na forma aditiva, a onda tem sempre o mesmo tamanho, independente do nível da série. Na forma multiplicativa, a onda cresce quando a série sobe — típico de séries econômicas em nível, em que a oscilação de dezembro fica maior à medida que o total aumenta.
Essa é uma decisão que costuma travar quem faz o ajuste na mão. O X13-ARIMA-SEATS resolve isso sozinho: ele testa e escolhe o modelo adequado, sem você ter que definir de antemão.
O que é o X13-ARIMA-SEATS
O X13-ARIMA-SEATS é o método de ajuste sazonal mais robusto disponível e o padrão que institutos oficiais publicam. Ele combina um modelo ARIMA — que projeta as pontas da série para o algoritmo não ficar cego no começo e no fim — com o algoritmo SEATS de extração sazonal, e ainda corrige efeitos de calendário como dias úteis e feriados móveis (a Páscoa, o Carnaval), que o olho não separa da sazonalidade comum.
O detalhe que muda o fluxo de trabalho: o X13 é um programa externo, escrito em Fortran pelo US Census Bureau. O Python não o reimplementa — ele chama o executável por baixo dos panos, pela statsmodels. Por isso o tutorial tem um passo que não existe em outras bibliotecas: baixar o binário e dizer ao Python onde ele está.
Como fazer o ajuste sazonal no Python, passo a passo
O procedimento tem quatro etapas. Nenhuma exige matemática pesada: o trabalho é preparar a série no formato certo, deixar o X13 acessível e chamar uma função.
x13_arima_analysis(); a série ajustada sai no atributo .seasadj.1. A série de exemplo
Usamos uma série mensal de empregados no varejo (fonte: o BLS, instituto de estatísticas do trabalho dos EUA), de 1995 a 2019. Serve bem para o exemplo: a sazonalidade de fim de ano aparece com clareza no gráfico. O X13 pede a série com a data no índice e a frequência marcada como mensal — sem isso, ele não sabe o período do ciclo a procurar.
2 e 3. Baixar o X13 e apontar o caminho (Colab e Windows)
Aqui está o passo que confunde. Como o X13 é um executável externo, você baixa o arquivo certo para o seu sistema e informa a pasta dele ao Python pela variável X13PATH. O download direto do site do Census costuma ser bloqueado, então a Análise Macro hospeda os dois binários.
No Google Colab (Linux), que é o ambiente padrão do tutorial, você baixa o binário Linux e aponta o caminho para a pasta onde ele foi descompactado. É o caminho mais simples, porque o Colab roda na nuvem e não depende da sua máquina.
No Windows, o binário Linux não funciona — é preciso a versão Windows, um arquivo .exe. Você baixa o .zip, descompacta e aponta o X13PATH para a pasta que contém o executável. É a única diferença real entre rodar no Colab e rodar no seu computador; do resto do código para a frente, tudo é idêntico.
4. Rodar o ajuste e extrair a série ajustada
Com o caminho configurado, o ajuste é uma linha: você passa a série para a função x13_arima_analysis() da statsmodels. Ela roda o X13, ajusta o modelo ARIMA, extrai a sazonalidade e devolve um objeto com os componentes. A série dessazonalizada, que é a que queremos, sai no atributo .seasadj. A tabela abaixo mostra alguns meses, com o valor original e o ajustado lado a lado.
| Mês | Série original | Dessazonalizada (X13) |
|---|---|---|
| jan/1995 | 13.775,2 | 13.842,4 |
| fev/1995 | 13.579,5 | 13.859,4 |
| mar/1995 | 13.539,2 | 13.828,6 |
| abr/1995 | 13.654,1 | 13.872,7 |
| jun/2019 | 15.775,5 | 15.770,7 |
| jul/2019 | 15.785,9 | 15.769,5 |
| ago/2019 | 15.749,5 | 15.759,0 |
| set/2019 | 15.611,3 | 15.758,1 |
Amostra da série de empregados no varejo (em mil), original e dessazonalizada pelo X13. Fonte: BLS/US.
Repare em janeiro de 1995: o valor original (13.775) é bem menor que o ajustado (13.842), porque janeiro é um mês de baixa sazonal — o X13 "devolve" o que o calendário tirou. Em meses sem forte efeito sazonal, os dois valores quase coincidem.
As ferramentas por trás

x13_arima_analysis().
O que o resultado revela
- A sazonalidade escondia a tendência. Sem ajustar, cada dezembro parecia um recorde e cada janeiro, uma queda; a série ajustada mostra que boa parte disso era só o calendário.
- O ajuste não inventa dado. Ele redistribui: tira do mês de pico, devolve ao mês de vale, preservando o nível geral da série.
- A crise de 2008 fica nítida. Na série ajustada, a queda de 2008-2009 aparece limpa, sem se confundir com a variação normal de fim de ano.
Considerações finais
O que este tutorial mostra é o poder do Python para análise econômica: com poucas linhas e dados públicos, você reproduz um ajuste sazonal de padrão oficial — o mesmo que o IBGE aplica antes de divulgar a produção industrial ou o varejo. O que antes exigia software especializado hoje cabe em um notebook.
O Python é a ferramenta certa para isso porque reúne no mesmo lugar a coleta dos dados, o tratamento, a modelagem e o gráfico, com bibliotecas maduras para cada etapa. O ajuste sazonal é só um exemplo; o mesmo caminho — coletar, tratar, modelar, visualizar — se repete em quase todo problema de análise de dados econômicos. O que muda é a aplicação:
- Economista: compara indicadores mês a mês sem o ruído sazonal, base de qualquer leitura de conjuntura.
- Analista de dados: dessazonaliza séries de vendas, demanda e produção para previsão e planejamento.
- Gestor público: lê arrecadação, emprego e atividade já ajustados, como fazem os institutos oficiais.
- Pesquisador: prepara séries para modelos de séries temporais, em que a sazonalidade precisa ser tratada antes.
Aprender a linguagem é o que abre a porta para todas essas frentes.
Você viu como funciona; aprenda a construir
O ajuste sazonal é uma das técnicas que você domina na Formação em Análise Macroeconômica, onde constrói em Python a análise dos principais indicadores da economia brasileira, da coleta ao gráfico final. 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: