Unidade 3 / 11

Limpeza e pré-processamento de dados: valor ausente, outlier e conversão de tipo

Ganhos:

  • Capacidade de distinguir a causa dos valores ausentes (aleatórios, sistemáticos, significativos) e escolher a estratégia apropriada e calcular o valor de preenchimento apenas com o treinamento
  • Capacidade de examinar valores discrepantes antes de excluí-los e distinguir entre um erro de dados e um evento raro verdadeiro
  • Capacidade de evitar perda silenciosa monitorando o impacto de cada etapa no número de linhas/espaços em branco, ao mesmo tempo em que traz inconsistências de tipo e formato para o padrão

Aproximadamente 60-80 por cento do tempo de um cientista de dados é gasto em limpeza; Na indústria, isso é chamado de brincadeira de "disputa de dados" (disputa de dados ou limpeza de dados). Porque os dados do mundo real quase nunca chegam prontos para análise: as datas estão em formatos mistos, os números são armazenados como texto, algumas células estão em branco, um cliente aparece três vezes na mesma tabela com duas grafias diferentes. Nesta unidade, cobriremos três aspectos básicos da limpeza: valores ausentes, valores discrepantes e conversão de tipo/formato. A inteligência artificial é uma assistente extraordinariamente rápida neste trabalho; Mas é você quem decide o que limpar e como, pois cada escolha de limpeza altera a análise.

A regra de ouro da limpeza: cada mudança é uma decisão

Excluir uma célula, preencher um valor ausente com a média, cortar um valor discrepante – nada disso são operações “neutras”. Cada um altera os dados e afeta o resultado. Portanto, a regra de ouro da limpeza: escreva todas as alterações no código, observe a lógica e nunca substitua os dados originais. A IA fornece um código de limpeza rápida, mas é sua responsabilidade entender o que esse código faz; Não execute-o sem ver quantas linhas desapareceram quando você disser "excluir linhas vazias".

Cuidado: Nunca modifique os dados brutos originais. Grave a versão limpa em um arquivo/tabela separado. Dessa forma, se você detectar um erro, poderá voltar à estaca zero e manter a reprodutibilidade.

Valores ausentes: por que está vazio, o que fazer

Um valor ausente (geralmente aparecendo como NaN — "Não é um número" em pandas) ocorre quando uma célula está vazia. Mas a causa da lacuna determina a solução. Existem três situações típicas. Faltando aleatoriamente: o sensor não funcionou por um momento; Pode ser razoável preenchê-lo. Falta sistemática: um campo de formulário só é solicitado para determinados clientes; A lacuna aqui é na verdade informação. Falta significativa: se “data de devolução” estiver em branco, o cliente não devolveu; Este espaço significa 0 ou “nenhum”, não é preenchido.

Principais estratégias:

Estratégia

Quando é apropriado?

risco

Excluir linha

A taxa de falta é muito baixa (<5%) e aleatória

Perda de dados e representação

Excluir uma coluna

A maior parte da coluna está vazia (>60%)

perda de informação

Preenchimento médio/mediano

Numérico, faltando aleatoriamente

Reduz a variância e distorce a distribuição

Categoria "desconhecida"

Falta categórica e sistemática

Gera categorias adicionais

Previsão com modelo

Coluna complexa e preciosa

Risco de vazamento, complexidade

Ponto crítico: o valor de imputação deve ser calculado apenas a partir dos dados de treinamento e o mesmo valor deve ser aplicado aos dados de teste. Se você incluir a média dos dados de teste, você criará vazamento (Unidade 10). A mediana (o valor médio dos dados ordinais) é frequentemente preferida à média porque é mais robusta a valores discrepantes do que a média.

Outliers: erro ou real?

Um valor atípico pode ser uma de duas coisas: um erro de dados (999 na coluna de idade) ou um evento real, mas raro (um pedido de US$ 2 milhões de um cliente). Confundir os dois é desastroso: exclua um valor discrepante verdadeiro e você jogará fora informações importantes; Se você deixar de cometer um erro, suas médias serão prejudicadas. Portanto, é necessário examinar primeiro o outlier, para não excluí-lo automaticamente.

Métodos de detecção comuns: método IQR (intervalo interquartil; valores que são mais de 1,5 vezes a diferença entre os quintis de 25% e 75% dos dados são considerados discrepantes) e pontuação z (o número de desvios padrão longe da média que um valor é; geralmente um outlier se for maior que 3). A IA escreve o código para esses cálculos em segundos; Mas antes de dizer “excluir”, verifique quais são esses valores.

Conversão de tipo e formato: fonte de erro silenciosa

Uma das maiores dores de cabeça é a confusão do tipo de dados. Se uma coluna "quantidade" for armazenada como texto, você não poderá adicionar; O programa lê incorretamente um número formatado em turco, como "1.250,50" em vez de "mil duzentos e cinquenta". Datas ("01/03/2024" dia-mês ou mês-dia?), categorias ("Masculino"/"masculino"/"M" são a mesma coisa?) e unidades (TL ou kuruş?) silenciosamente produzem resultados incorretos. Uma grande parte da limpeza é incluir essas inconsistências no padrão: datas em um formato, categorias em uma grafia, números em uma unidade.

três mini cases

Caso 1 — A armadilha média. Uma equipe preencheu os 320 valores faltantes na coluna de renda com a média (US$ 48.500). Mas as deficiências eram sistemáticas: tratava-se do segmento de baixos rendimentos que nunca tinha declarado rendimentos. O preenchimento médio tornou este grupo artificialmente rico e o modelo de crédito estava errado. Lição: pergunte “por que está em branco” antes de preencher.

Caso 2 — Outlier que não deve ser excluído. Um analista de varejo excluiu 4 grandes pedidos (1,8 milhão de TL cada) dos dados de vendas, pensando que eram “erros”. No entanto, tratava-se de encomendas corporativas reais e representavam 22% do volume de negócios total. O modelo de previsão pós-exclusão ignorou completamente a procura institucional. Lição: examine o outlier antes de excluí-lo.

Caso 3 — Desastre no formato da data. Em um CSV, as datas foram misturadas em "01/03/2024" e "01/03/2024". Quando o código escrito por YZ foi analisado de acordo com o primeiro formato, 6.400 linhas tornaram-se NaT como “data inválida” e foram silenciosamente excluídas da análise. O analista só percebeu isso quando o número de linhas diminuiu. Lição: verifique sempre o número de linhas e espaços em branco após a conversão.

Quatro modelos copiáveis

1) Mapa de valores ausentes:

Eu tenho pandas df. Escreva um código que produza uma tabela mostrando o número e a porcentagem de faltas (NaN) para cada coluna. Em seguida, liste separadamente as colunas com taxa de falta superior a 40% e aquelas com taxa de falta inferior a 5%. Basta gerar esse código de diagnóstico, não a estratégia que você sugere; Eu tomarei a decisão.

2) Inspeção de valores discrepantes (não exclusão):

Escreva um código que DETECTE (não exclua!) valores discrepantes para minha coluna "quantidade" usando o método IQR. Coloque as linhas periféricas em um df separado para que eu possa examiná-las manualmente. Imprima também o número de outliers e sua participação no total.

3) Padronização de tipo/formato:

Escreva código que padronize as seguintes colunas: - "data": podem ser formatos mistos ("2024-03-01" e "01.03.2024"); converta todos para data e hora, conte os intraduzíveis e relate (jogue fora silenciosamente). - "gênero": "Masculino"/"masculino"/"M" -> "M", "Feminino"/"feminino"/"F" -> "K". - "quantia": texto formatado em turco ("1.250,50") -> número decimal. Imprima quantas linhas são afetadas após cada conversão.

4) Verifique antes/depois da limpeza:

Escreva um código que compare df.shape, contagem ausente e estatísticas resumidas (média, mediana, mínimo, máximo) de colunas selecionadas antes e depois de uma etapa de limpeza. Objetivo: ver o que a limpeza muda.

Alerta fraco / Alerta forte

Alerta fraco:

Limpe esses dados.

“Claro” é ambíguo; A IA não sabe quais partes faltantes devem ser excluídas, o que preencher, qual coluna processar e como. O resultado: mudanças cegas e irreversíveis.

Alerta poderoso:

Sua função: assistente de limpeza de dados. Colunas df: customer_id (int), Registration_date (texto de formato misto), Revenue_tl (texto, "1.200,00"), cidade (texto, ortografia inconsistente). Regras: - Alteração do df original; Trabalhe na cópia chamada df_clean.- Converta income_tl em número, conte o que não pode ser traduzido.- Altere record_date para datetime, relate o erro.- Não exclua nenhuma linha sem minha aprovação; Mostre os candidatos separadamente. Após cada etapa, imprima df_temiz.shape e o número que falta.

Aqui a fonte é protegida, cada transformação é contada, a exclusão fica para o humano.

Erros comuns

  • Preencher as lacunas sem perguntar “por que está vazio?” Preencher a falta sistemática/significativa com a média distorce os dados.
  • Excluir o valor discrepante sem examiná-lo. Descartar eventos reais, mas raros, destrói informações importantes.
  • Calculando o valor de preenchimento de todos os dados. Incluir dados de teste cria vazamentos; basta calcular a partir do treinamento.
  • Não verificar o número de linhas/espaços em branco após a conversão. Linhas que são silenciosamente NaT/NaN são excluídas da análise.
  • Substituindo os dados originais. O retorno e a reprodutibilidade são perdidos.
Dica: Execute a limpeza com uma comparação “antes e depois”. Imprima df.shape, contagem ausente e estatísticas resumidas de colunas críticas após cada etapa. Então você vê imediatamente que uma etapa destrói inesperadamente 6.000 linhas.

Em resumo

A limpeza é a fase mais demorada e que exige decisões da ciência de dados. Cada mudança altera os dados, portanto cada uma é uma decisão consciente. Para valores ausentes, pergunte "por que está vazio?" Revise quaisquer valores discrepantes antes de excluí-los; Traga o tipo e o formato para o padrão. Calcule o valor de preenchimento apenas a partir dos dados de treinamento, mantenha o original e acompanhe o impacto de cada etapa contando-o. A IA é um tremendo acelerador neste negócio, mas os humanos decidem o que limpar e porquê.

Tarefa de aplicativo

Pegue (ou crie) uma pequena tabela e insira deliberadamente três problemas nela: uma tupla de valor ausente, um valor discrepante, um formato de data misto. Solicite código de diagnóstico e padronização da IA ​​com os templates acima; compare o número de linhas e espaços em branco antes/depois de cada etapa. Tente captar pelo menos uma “perda silenciosa” e observe como você a percebeu.

lista de verificação

  • [ ] Mantive os dados brutos originais e trabalhei na cópia?
  • [] Fiz a pergunta "por que está vazio" para cada coluna ausente?
  • [] Analisei os valores discrepantes antes de excluí-los?
  • [] Calculei o valor de preenchimento apenas a partir dos dados de treinamento?
  • [] Estou verificando o número de linhas/espaços em branco após cada etapa e eliminando a perda silenciosa?