Cover do episódio 41: Primeiro contato com dados de verdade: a diferença entre dado de exercício e dado sujo
#04119 de março, 20183 min leituraCódigo na PráticaS3 · 2018–2019

Primeiro contato com dados de verdade: a diferença entre dado de exercício e dado sujo

No tutorial, os dados são limpos. No mundo real, as colunas têm espaço no final, os tipos são inconsistentes, e metade dos registros está faltando. Esse foi meu primeiro projeto com dados reais.

DadosPythonLimpeza de DadosAprendizado

Em Kaggle, os datasets são perfeitos.

Colunas com nomes claros, tipos corretos, sem valores faltando, sem inconsistências de formatação. O desafio é o modelo, o algoritmo, a métrica. O dado é premissa dada, não problema a resolver.

Quando trabalhei com dados reais pela primeira vez num projeto de pesquisa na universidade, aprendi que no mundo real, o dado raramente é premissa.


O projeto envolvia dados coletados de múltiplas fontes. Cada fonte tinha convenção diferente para a mesma coisa.

Datas: algumas fontes usavam DD/MM/AAAA, outras AAAA-MM-DD, uma usava texto livre como "março de 2018". A mesma informação, quatro formatos diferentes.

Identificadores: quando cruzava dois datasets pelo mesmo campo, alguns tinham espaço no final do valor, outros tinham zero à esquerda em campo numérico, outros tinham letras maiúsculas onde o outro tinha minúsculas. Joins que deveriam funcionar silenciosamente não encontravam correspondência.

Valores ausentes: NaN, "N/A", "null", string vazia, célula em branco, zero onde zero não significa ausência. Cada um precisava de tratamento diferente.


O que a limpeza de dados ensina que análise de dados não ensina:

Dado ausente raramente é acidente. Quando campo estava vazio em 40% dos registros, a pergunta era: por que está vazio? Erro de coleta? Dado que não se aplica? Dado que não foi coletado naquela época? A ausência tem razão — e a razão muda o que você faz com ela.

Inconsistência é informação. Quando dois registros do mesmo entidade tinham valores diferentes para o mesmo campo, a pergunta era qual estava certo — ou se os dois eram válidos em momentos diferentes. Inconsistência que parece erro de qualidade às vezes é dado longitudinal mal documentado.

Decisão de limpeza é decisão analítica. Quando você decide remover outlier, você está fazendo escolha sobre o que sua análise vai representar. Quando você decide preencher valor faltante com média, você está fazendo premissa sobre a distribuição. Essas escolhas mudam o resultado — e precisam ser documentadas.


O que me pegou mais: quanto tempo tomava.

Na literatura, "pré-processamento" era um parágrafo antes do modelo. Na prática, era 80% do tempo do projeto. Limpeza, validação, transformação, junção, validação de novo depois da junção.

O modelo — a parte que parecia o coração do projeto — levou dois dias. A limpeza levou três semanas.

Isso não mudou muito com experiência. A proporção é universal. Quem trabalha com dados sabe: "dados limpos" é raridade, "dados bons o suficiente para análise específica" é o objetivo real.


O aprendizado que ficou: documentar cada decisão de limpeza.

Não porque é burocracia — mas porque quando você precisar explicar por que o resultado é diferente do que alguém esperava, a resposta vai estar nessa documentação. "Removemos registros anteriores a 2015 porque o formato de coleta mudou e os dados anteriores não são comparáveis" é resposta que você precisa ter antes de apresentar resultado.

Dado sem documentação de limpeza não é dado — é número com proveniência opaca.

Essa semana: qual é o dado que você usa no trabalho sem saber exatamente como foi coletado e o que pode estar errado nele?