Todos os projetos

05 · Data Wrangling · Feature Engineering

32 mil imóveis. Uma garagem com 1.966 vagas.

Preparação de dataset de mais de 32 mil imóveis do Rio de Janeiro para uso por times de Machine Learning e produto: limpeza pesada, tratamento de outliers extremos com critério, e engenharia de variáveis derivadas para análise financeira completa.

PapelData wrangler
Período2025
TipoLimpeza · Feature Eng.
StackPython · Pandas · NumPy
Distribuição de aluguel, após limpeza R$ · 32 mil imóveis · 162 bairros outliers removidos → R$ 500 R$ 4k R$ 15k+

Contexto

Datasets imobiliários reais são sujos. Vêm com nulos espalhados, categorias inconsistentes, e valores que beiram o absurdo, fruto de digitação humana ou erro de scraping. Este projeto trabalhou um dataset cru do mercado de aluguel do Rio de Janeiro para prepará-lo para uso por times de Machine Learning e desenvolvimento.

Problema

Transformar 32 mil registros brutos em um dataset confiável: limpeza, tratamento de outliers, padronização de categorias e engenharia de variáveis derivadas que outros times possam consumir sem precisar refazer o trabalho.

Abordagem

  • Auditoria inicial com .info(), .describe() e .isnull().sum() para mapear o terreno.
  • Tratamento de nulos contextual: preenchimento por tipo de imóvel em alguns casos, descarte em outros.
  • Identificação de outliers extremos: análise por percentis e visualização com boxplot.
  • Padronização de 22 tipos de imóvel e 162 bairros, com regras explícitas de normalização.
  • Feature engineering: variáveis derivadas para análise financeira (valor mensal e anual totais, incluindo encargos).

Achados-chave

1.966
Vagas em um único anúncio, outlier extremo
22
Tipos de imóvel padronizados
162
Bairros mapeados

Decisões de limpeza

  • Outliers extremos removidos com critério: uma garagem com 1.966 vagas é erro de digitação; um aluguel de R$ 80 mil pode ser real (cobertura).
  • Nulos tratados por contexto: preenchimento condicional ao tipo de imóvel, não imputação global cega.
  • Categorias padronizadas com mapa explícito: "Apto", "Apartamento" e "AP" viraram apartamento.
  • Variáveis derivadas adicionadas: valor_mensal_total e valor_anual_total agregando aluguel + condomínio + IPTU.
  • Documentação inline em cada etapa do notebook explicando o porquê da decisão, não só o quê.

Resultado

Dataset entregue pronto para ML: tipado, sem nulos críticos, com variáveis derivadas relevantes e documentação inline que outro analista consegue ler e auditar.

O entregável é mais valioso por causa do que não está lá: outliers absurdos que iam contaminar qualquer modelo, categorias inconsistentes que iam virar dummies inúteis, e nulos que iam derrubar pipelines.

Stack

Python Pandas NumPy Seaborn Matplotlib Feature Engineering

Aprendizados

Limpar dado é uma decisão, não uma operação mecânica. Cada nulo, cada outlier, cada categoria duplicada exige uma escolha, e essa escolha precisa ser justificável. Quando se trabalha com dado que vai para produção, o "porquê" da decisão importa tanto quanto o resultado final.

Aprendi também o valor de documentar inline durante o trabalho, não no final. Markdown no notebook explicando "removi esses 17 registros porque a área era 0 m²" salva horas de retrabalho quando alguém pergunta por que o dataset tem 31.983 linhas e não 32.000.