Data Cleanning em marcas de veículos

Como o espírito questionador deve fazer parte do dia a dia de um Data Scientist

ELIEZER BOURCHARDT
Data Hackers
5 min readMay 3, 2018

--

Photo by chuttersnap on Unsplash

Em Ciência de Dados é bastante comum encontrar datasets onde é necessário realizar algum trabalho de limpeza de dados, seja por erros de digitação ou algum problema na coleta de dados. Costuma-se dizer que 80% da análise de dados é gasto no processo de limpeza e preparação dos dados, segundo Dasu e Johnson.

Neste post, mostro um exemplo de limpeza de dados em um caso, onde foi necessário realizar a padronização de nomes de marcas de veículos (caminhões e carretas). É um exemplo simples, mas que mostra como que o espírito questionador guia o Cientista de Dados desde o início de seus trabalhos.

O Caso

Por desconhecimento ao realizar o cadastros dos veículos em um sistema, e claro, por falta de um auto-complete no sistema, os usuários acabaram informando o modelo do veículo no mesmo campo da marca. Neste dataset existem 898 veículos, sendo que em 49% apresentavam este problema.

O código completo deste post está disponível no GitHub.

Questionando o básico

A primeira coisa a ser feitas foi verificar quantas formas únicas existiam:

No total haviam 214 tipos diferentes de marcas cadastradas. Mas, como todo bom Cientista de Dados, questionei:

Faz sentido esse tanto de marcas registrados?

Obviamente não! Além de casos onde o modelo do carro estava concatenado com a marca — ‘FIAT UNO’, ‘FIAT PALIO’ como uma mesma marca -, havia também problemas na ortografia (exemplo: ‘MERCEDES BENZ’, ‘MERCEDES-BENZ’, ‘MERCEDES BENZA’, ‘MERCEDZ BENS’).

Para começar a limpeza, removi os números e caracteres estranhos encontrados:

E substituí os valores nulos por espaço em branco:

Para ajudar a remover as letras isoladas que restaram, também adicionei espaços em branco extra:

Apenas com esse tratamento já foi possível reduzir de 214 para 157 marcas únicas.

Questionando um pouco mais

Normalmente as marcas possuem mais de 3 caracteres, com algumas exceções como ‘MAN’, ‘DAF’, ‘MWM’, ‘VW’ e ‘M’ (Sendo que ‘M’ se refere a MERCEDES-BENZ). Assim sendo, eliminei o restante, pois se tratavam de siglas que, provavelmente, não deveriam de ser informadas:

Depois disso, verifiquei que algumas palavras que tinham mais que 3 caracteres, deveriam ser removidas também:

Após, removi os espaços em branco extras:

Nesse momento o número de marcas únicas reduziu para 57. Grande avanço!

Algumas inconsistências tiveram de ser corrigidas de forma direta. Algumas abreviações, erros muito grandes ou duas marcas para o mesmo veículo:

Chegou-se assim no seguinte conjunto de marcas:

Já é possível perceber uma significativa melhora. :)

Refinamentos finais

Agora só resta algumas marcas com erros de grafia.

“A man looking through binoculars in the desert” by Evan Kirby on Unsplash

Para corrigir isso utilizei a biblioteca em python fuzzywuzzy. Com base em uma lista de marcas corretas, esta biblioteca permite realizar uma comparação e se determinada string possuir uma semelhança mínima ela é substituída. Eu utilizei uma taxa de semelhança 70%, visto que marcas normalmente possuem diferenças significativas em sua grafia. Em outros casos é necessário utilizar taxas maiores.

Finalmente, chegou-se ao número de 25 marcas únicas, que corresponde uma redução de 88%.

Nos veículos que apenas foi informado o modelo do veículo foi necessário uma rápida pesquisa na internet e definiu-se manualmente:

Já os veículos que originalmente não possuíam esta informação, foi definido como marca não especificada:

Considerando no total do dataset, os veículos com problema na marca caíram de 49% para 7%. Somente ficaram sem a informação da marca os veículos que originalmente não possuíam essa informação.

Concluindo

Dificilmente algum dataset no mundo real é perfeito, livre de problemas. A etapa de higienização dos dados é muito importante para que a análise seja realizada de forma correta. Apesar deste código estar de forma linear, este foi um processo cíclico ,onde o resultado final era avaliado e melhorado.

Vemos que é um processo criterioso, mas nada complexo como muita gente sonha que o trabalho de Data Scientist é. Exige, como sempre, questionamento e um pouco de esforço. Mesmo assim, os resultados mostram que esse tipo de ação é essencial para a caracterização de um dataset limpo, coeso e que trará bons resultados para sua análise.

Curtiu esse post? Que tal compartilhar com aquele seu amigo que tá querendo entrar na área de Ciência de Dados? E, claro, não deixe de mostrar a nossa comunidade, Data Hackers! Abraço e até a próxima!

--

--

ELIEZER BOURCHARDT
Data Hackers

Bacharel em Sistemas de Informação, programador e cientista de dados.