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
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
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.