Pré-processamento de dados com Python

Nina Maria Pinheiro
Data Hackers
Published in
10 min readAug 7, 2021

--

O que é ‘Pré-processamento de dados’?

O pré-processamento de dados é um conjunto de atividades que envolvem converter dados brutos em dados preparados, ou seja, em formatos úteis e eficientes. É um processo que compreende a preparação, organização e estruturação de dados.

É uma fase essencial que precede a realização de análises e modelagem. Além disso, é uma etapa para escolhermos quais dados fazem sentido fazerem parte do nosso dataset.

Qual a importância do pré-processamento de dados?

Essa é uma etapa crucial, uma vez que se o conjunto de dados não está preparado, não conseguiremos alcançar bons resultados, tornando as análises e modelagens não confiáveis. Portanto, um correto pré-processamento é fundamental para garantir a qualidade e confiabilidade das nossas conclusões.

Técnica de Mineração de Dados

Um dos modelos utilizados para a mineração de dados é o Cross Industry Standard Process for Data Mining (CRISP-DM), que consiste em seis passos: entendimento do negócio, entendimento dos dados, preparação dos dados, modelagem, avaliação do modelo e deploy.

Embora o entendimento dos dados seja uma etapa separada do pré-processamento de dados, é muito importante entender os dados para realizar o pré-processamento. Através das análises podemos identificar possíveis problemas nos dados, verificar como os dados estão distribuídos e realizar uma melhor transformação.

Dataset de uso (FIGURA 1):

Figura 1 “Dataset de uso” — Ambiente Colab

  • Tipos de Dados

Existem duas grandes classes de variáveis, que são:

Variáveis Quantitativas: Informações quantitativas que são expressas na forma de valores numéricos. Podem ser contínuas ou discretas.

  • Variáveis discretas: São características mensuráveis que podem assumir apenas um número finito ou infinito contável de valores. Exemplos: número de cartões, número de bactérias por litro de leite.
  • Variáveis contínuas: São características mensuráveis que assumem valores em uma escala contínua. Geralmente são medidas por algum instrumento de medida como a régua ao medir a altura, pressão arterial, idade.

Variáveis Qualitativas (ou categóricas): São características que apresentam informações qualitativas. Representam uma classificação dos indivíduos. Podem ser nominais ou ordinais.

  • Variáveis nominais: Não existe uma ordenação entre as categorias. Exemplo: cor dos olhos, doente/sadio, sexo.
  • Variáveis Ordinais: Existe uma ordenação entre as categorias. Exemplo: ranking de um jogo, escolaridade.

Importância de entender os tipos de variáveis:

É importante entender o tipo de variável (FIGURA 2), pois ao adquirir esse entendimento podemos saber o que fazer com cada informação e qual o melhor tipo de tratamento a ser aplicado. Por exemplo, a maioria dos modelos como regressão linear utilizam apenas variáveis numéricas. Dessa forma, é importante realizar as transformações necessárias para que se consiga rodar o modelo. Além disso, alguns atributos podem estar com um tipo de variável, porém conceitualmente deveriam ser de outro tipo. Como um atributo que pode ser lido como variável discreta, mas na realidade é nominal . Poderia ser realizada uma ordenação, porém está sendo lido erroneamente. A consequência disso é trazer informações erradas ou até não trazer informações.

Figura 2 “Informações das variáveis”. Método do pandas que permite verificar as informações do dataset.

Podemos mapear alguns tipos de variáveis, por exemplo ‘data’ deveria ser uma variável do tipo data, porém, ela está como string. Portanto, torna-se necessário realizar a transformação dessa variável.

Figura 3 “Variável data presente no dataset”

  • Representação Gráfica e análises descritiva

Nessa etapa é importante criar alguns gráficos de visualizações que permitam o conhecimento do comportamento de algumas variáveis. Por exemplo, com o mapeamento de histogramas. Isso possibilita a visualização dos dados e poderá revelar comportamentos inesperados ou até despertar novos questionamentos sobre os objetivos.

A análise dessas variáveis permite a descoberta de padrões e tendências que podem fornecer informações valiosas para compreender o processo que gerou os dados.

Além disso, ao plotar gráficos podemos verificar relações entre as variáveis, ter ciência de como a variável se comporta em relação a outra. Por exemplo, se uma variável é altamente correlacionada em relação a outra. Caso o for, pode-se realizar transformação na etapa do pré-processamento como a exclusão de um desses atributos, uma vez que pode carregar o mesmo tipo de informação.

Ademais, na estatística existem diversas distribuições, ao plotar o comportamento de uma determinada variável podemos observar como os dados estão distribuídos. Por exemplo, se os dados se comportam como uma distribuição normal, assimétricos, bimodal, t-student. Assim podemos selecionar as melhores transformações para lidar com determinada situação.

Ao plotar a Figura 4 podemos observar que no gráfico existem idades negativas. Isso não é possível, uma vez que não há idades negativas. Portanto, torna-se necessário realizar uma transformação. No caso, podemos excluir idades que são negativas ou substituir por outro valor.

Figura 4“Histograma da variável Idade”.

Nessa preparação de dados, foram excluídas as linhas que continham idades negativas (Figura 5).

Figura 5 “Histograma da variável Idade transformada”.

  • Transformação de Variáveis Categóricas

A transformação de variáveis categóricas torna-se muito importante para métodos de aprendizado de máquina que trabalham somente com atributos numéricos.

Técnicas que podem ser utilizadas:

  • Label Enconding: É uma técnica recomendada que substitui uma categoria por um valor inteiro. Por exemplo, “Nível de Atendimento”, pode ser de ruim a excelente, sendo mapeado de 0 a 10.

-> Label Enconding: Recomendado para categorias que possuem um ordenamento natural ou poucas classes, substitui a categoria por um valor inteiro, exemplo, na base temos a coluna ‘risco’ sendo representado por “baixo”, “médio” e “alto”. Dessa forma, pode ser substituído por um valor inteiro. No exemplo “alto” foi substituído por 3, “médio” por 2 e “baixo” por 1 (FIGURA 6).

Figura 6— “Exemplo de Label Enconding”. Transformação da variável ‘risco’ substituindo categorias por um valor inteiro.

  • One Hot Enconding: É uma transformação de categorias em novas features binárias. A ideia é categorizar e criar uma coluna para cada categoria. É útil quando temos poucas categorias, uma vez que caso tenhamos várias, o acréscimo de novas colunas para cada classe aumenta a dimensionalidade dos dados (FIGURA 7).

Figura 7— “Exemplo de One Hot Enconding”. Transformação da variável ‘banco’ de categorias por features binárias.

  • Lidar com valores ausentes

Valores ausentes está vinculada a diferentes situações, como o mau funcionamento de dispositivos de coleta de dados, dados que são omitidos pela fonte de informação, composição da base, mal cruzamento entre diferentes bases, falha na digitação, entre outras.

A identificação de valores ausentes e a transformação destes tornam-se muito importantes na maioria dos modelos. Dessa forma, torna-se necessária a imputação de valores vazios.

Figura 8— “Verificação dos valores ausentes”. Método do pandas que permite verificar o somatório de valores ausentes no dataset.

Na Figura 9 podemos verificar as quantidades de valores ausentes, tanto na coluna ‘saldo_conta’ quanto na de ‘n_contratos’.

Figura 9— “Correlação dos valores ausentes”. Biblioteca que permite verificar a correlação dos valores ausentes entre as colunas.

Na Figura 9 podemos avaliar a correlação dos valores faltantes em cada categoria, tendo uma visão geral em cada coluna.

Formas de Imputação de Valores Ausentes

Eliminação de colunas ou linhas: A desvantagem é que se existir uma grande volumetria de dados ausentes, pode-se perder dados de forma considerável.

Imputação de valores: Pode-se realizar o preenchimento de valores, por exemplo, por uma constante, média, moda de um atributo, um valor aleatório. Por valores que tentem preservar as relações entre atributos da base de dados). A desvantagem disso é que pode imputar valores que não fazem sentido, ou seja, pode não estar relacionado com os outros atributos. A consequência disso é que não seria uma boa representação da população dos dados

Ao verificar as colunas do dataset (FIGURA 2) que apresentam valores ausentes, percebemos que a coluna ‘quantidade de contratos’(FIGURA 10) presente na base apresenta valores nulos. Uma das hipóteses é de que os valores ausentes podem representar ausência de contrato, podendo, dessa forma, serem substituídos por zero.

Figura 10— ‘Quantidade de vezes que aparece o número de contratos’. Método que permite contabilizar a quantidade de contratos para cada valor.

Transformação dos valores ausentes por imputação por ‘0’(FIGURA 11)- como exemplo

Figura 11' Substituição dos valores ausentes’. Método que permite substituir os valores ausentes, no exemplo, substitui por 0

Observa-se que os valores que eram “NaN” foram substituídos por zero.

  • Lidar com Outliers

Outliers são valores que estão além dos limites aceitáveis ou são muito diferentes dos demais valores observados para o mesmo atributo.

Figura 12 “Boxplot da variável idade” Gráfico que permite a visualização de outliers.

Esse gráfico (Boxplot) na Figura 12 permite visualizar a distribuição de valores discrepantes (outliers) dos dados.

Isso é evidente na imagem, pois nota-se que antes da haste vertical há alguns valores ilustrando a presença de outliers. No caso, idades negativas.

Algumas ferramentas que podem ser utilizadas para lidar com outliers:

  • Gráfico Box-plot;
  • Isolation Forest;
  • DBSCAN;

É importante entender os outliers, uma vez que podem levar a um super ajuste do modelo, já que o algoritmo pode se ater às especificidades relacionadas a esses valores, em vez da distribuição verdadeira que gerou.

Dessa forma, existem algumas abordagens de lidar com os outliers, por exemplo, excluir as observações discrepantes da amostra de dados quando é fruto de um erro de input dos dados. Uma outra abordagem é realizar uma análise separada com apenas os outliers quando se quer investigar casos extremos, como as pessoas com maior renda, alunos que só tiram notas boas, casos de fraudes, entre outras.

Normalização dos dados

Algumas vezes certos atributos apresentam escalas diferentes. Dessa forma, pode ser útil realizar uma transformação a fim de evitar que um atributo predomine sobre outro (isso pode acontecer por exemplo na otimização do gradiente descendente). Contudo, existem situações em que essa variação deve ser preservada por ser importante para o modelo.

A normalização é uma das técnicas utilizadas para essa transformação, recomendável quando os limites de valores de atributos distintos são muito diferentes. É aplicada a cada atributo individualmente e pode ocorrer por:

  • Normalização por reescala (escala): É também chamada de normalização min-max. São definidos valores min e max para os novos valores de cada atributo. Podendo apresentar 0 como valor mínimo e 1 como valor máximo, ou seja, os dados estão em um intervalo de 0 a 1.

Figura 13 Normalização por escala. A normalização por reescala de um atributo j de um vetor xi sendo minj e maxj, nessa ordem, os valores mínimo e máximo do atributo j para o conjunto de dados considerado.

  • Normalização por padronização (ou padronização): Utiliza a média e o desvio padrão. O resultado disso é uma média igual a 0 e um desvio padrão igual a 1.

Figura 14: Normalização por padronização. Onde x̄· j e sj representam a média do atributo j e o seu desvio-padrão.

  • Robust Scaler: Utiliza a distância interqualítica e apresenta maior poder de discriminação dos dados, podendo ignorar o outlier.

Figura 15: Normalização por Robust Scaler sendo Q3(x)-Q1(x) o intervalo interquartílico.

Redução da Dimensionalidade

Existem algumas dificuldades com o número muito grande de atributos em algoritmos de aprendizado de máquina. Dessa forma pode ser útil reduzir a quantidade de atributos. Essa redução pode melhorar o poder de generalização do modelo, reduzir o custo computacional e tornar os resultados mais confiáveis.

Mas, isso é um assunto para um próximo post

Código:

https://github.com/Nina-pinheiro/Data-Science-Python/blob/master/files/preparacao_dados/preparacao_dados.ipynb

Poesia como de costume=)

Agradecimentos

Obrigada a todos que me apoiaram.

Um agradecimento pelos revisores do meu texto

Muito obrigada pelos aprendizados e pela revisão!

Sou muita grata =)

Referências

Referências livros

Fawcett, Tom, and Foster Provost. Data Science para Negócios: O que você precisa saber sobre mineração de dados e pensamento analítico de dados. Alta Books Editora, 2018.

Grus, Joel. Data Science do zero: Primeiras regras com o Python. Alta books, 2019.

Lorena, Ana Carolina, João Gama, and Katti Faceli. Inteligência Artificial: Uma abordagem de aprendizado de máquina. Grupo Gen-LTC, 2000.

Morettin, Pedro Alberto, and Wilton Oliveira Bussab. Estatística básica. Saraiva Educação SA, 2017.

Referências de sites

https://www.datageeks.com.br/pre-processamento-de-dados/

https://www.inf.ufsc.br/~andre.zibetti/probabilidade/aed.html

http://www.est.ufmg.br/portal/arquivos/rts/rte0202.pdf

https://edisciplinas.usp.br/pluginfile.php/4052836/mod_resource/content/4/mineracaodadosbiologicos-parte3.pdf

https://medium.com/data-hackers/normalizar-ou-padronizar-as-vari%C3%A1veis-3b619876ccc9

https://medium.com/horadecodar/como-tratar-dados-nulos-no-dataset-4f0470b22d38

--

--

Nina Maria Pinheiro
Data Hackers

Nature, artificial intelligence, productivity and meditation. The unsustainable lightness of being=) Linkedin: https://www.linkedin.com/in/nina-i-maria-pinheiro