Blog

Postado em em 27 de fevereiro de 2023

Como Tratar Variáveis de Texto de um Dataset Real?

Hoje eu quero te mostrar como tratar variáveis de texto de um dataset real! Aprenda 5 maneiras diferentes de fazer este tratamento.

Caso prefira esse conteúdo no formato de vídeo-aula, assista ao vídeo abaixo ou acesse o nosso canal do YouTube!

Para receber por e-mail o(s) arquivo(s) utilizados na aula, preencha:

Fala impressionadores! Saber Tratar variáveis de texto é importante, pois muitas vezes temos variáveis de texto ao invés de apenas números, e os algoritmos de aprendizado de máquina precisam dessas informações em forma de número.

Como esses algoritmos não consegue utilizar variáveis com valores categóricos precisamos ajustá-las para usar um modelo de aprendizado de máquina!

Além disso, ainda vou falar sobre o apply em Python, sobre lambda function, OneHotEncoder e OrdinalEncoder!

E aí, quer ver como eliminar uma coluna no dataset, como verificar informações da base de dados, como eliminar colunas desnecessárias e muito mais?

Para começar vamos utilizar uma base de Previsão de Preço de Voo do Kaggle

Nesta base vamos ter diversas informações sobre os voos, se notarmos a maioria das informações são categóricas, em formato de texto!

Como Tratar Variáveis de Texto
informações categóricas

Se tentarmos baixar essas informações para um modelo da forma que está, vamos ter um erro!

Então vamos fazer um passo a passo para corrigir essas informações antes de passar para o nosso modelo.

O primeiro passo será importar o Pandas, depois vamos dar um nome a nossa base (dados.csv) e visualizar as 3 primeiras linhas:

Como Tratar Variáveis de Texto
primeiro passo

Index_col=[0] -> Se quando você importar a base de dados vier uma coluna enumerando as linhas, utilize o index como na imagem acima para excluir esta coluna que é desnecessária.

Observe que as colunas estão em inglês, caso seja mais fácil podemos traduzi-las antes de dar continuidade:

tradução
tradução

Agora, uma das primeiras coisas que podemos fazer é utilizar o “.info” para obter informações da base:

Como Tratar Variáveis de Texto
.info

Temos muitas colunas de texto, podemos começar eliminando colunas desnecessárias:

Quais são as colunas desnecessárias?

São informações que não agregam valor nenhum a nossa análise, por exemplo, estamos analisando o preço de voo, assim, ter uma coluna com o nome de cada voo vai nos ajudar? Esta informação é relevante?

Colunas com valores que se distinguem muito um do outro também podem ser retirados, para isso nós vamos verificar a cardinalidade:

Como Tratar Variáveis de Texto
cardinalidade

Aqui podemos ver quantos tipos de informação temos por colunas, na Classe temos 2 tipos de informações, por exemplo.

Já no voo temos 1561 tipos de informação. Se essa quantidade enorme não for relevante para a nossa análise, vale a pena excluir ao invés de ter que tratar esse volume de dados.

eliminando a coluna desnecessária
eliminando a coluna desnecessária

Verificando essa coluna “voo” percebemos que esta informação é irrelevante, portanto, vamos eliminar a coluna como na imagem acima.

Obs. Nem sempre vamos eliminar colunas com alta cardinalidade, a informação deve ser averiguada antes!

Apply e lambda function

O segundo modo de tratar nossa base é utilizando o apply em Python e o lambda function!

O apply nós vamos utilizar para aplicar alguma função e o lambda function é uma função que vamos escrever na própria linha de forma direta sem precisar gerar complexidade no código.

Vamos mostrar como fazer analisando a coluna Classe

classe
classe

Como a classe é só econômica ou executiva, podemos criar uma coluna com o valor 1, caso seja econômica e 0 no caso de ser executiva.

Como Tratar Variáveis de Texto
criando a coluna

Observe que agora temos uma coluna numérica “econômica” e essa coluna pode ser usada em um modelo sem problemas.

Agora uma terceira opção de tratarmos os nossos dados:

Ao invés de criar a lambda function, podemos criar uma função separada, neste caso definimos a função para usá-la depois com o Apply.

Como exemplo vamos usar a coluna “Paradas”, vamos visualizar a coluna:

Como Tratar Variáveis de Texto
tratando a coluna paradas

Nesta coluna os valores são 0, 1 ou (2 ou +)

Vamos então criar uma função para tratar esses valores, transformando os textos em números.

Feito isso vamos criar uma coluna e aplicar a nossa função

resultado
resultado

Pronto, conseguimos tratar e visualizar os dados!

Observe que a coluna nr_paradas tem a mesma informação da coluna de paradas, porém com os resultados numéricos.

Utilizando o OneHotEncoder!

Vamos utilizar o OneHotEncoder quando Não Existe uma relação de ordem entre os valores

Por exemplo, não existe uma relação de ordem entre as empresas aéreas (não podemos dizer que a SpiceJet vem antes da AirAsia ou o contrário)

Vamos transformar os rótulos de dados (os valores que existem nessa coluna empresa_aerea) em novas colunas seguindo os passos abaixo:

Sendo uma coluna com apenas 4 linhas:

Como Tratar Variáveis de Texto
empresas

O primeiro passo é pegar cada um dos valores dessa coluna (sem repetição) e transformar em uma nova coluna

Como Tratar Variáveis de Texto
tratamento

Em seguida, para cada uma das linhas vamos atribuir o valor 1 se o valor da linha for igual ao nome da coluna.

Por exemplo, para a primeira linha o valor da coluna “passagem_aerea” é “SpiceJet”, então para a coluna SpiceJet nós vamos atribuir o valor 1, seguimos esse mesmo raciocínio para todas as colunas.

Como Tratar Variáveis de Texto
organização

Por fim todas as linhas que não estiverem com o valor 1 receberão o valor 0.

Como Tratar Variáveis de Texto
completando com 0

Agora que já entendemos a dinâmica vamos começar a analisar pela coluna empresa_aerea

empresa_aerea
empresa_aerea

Podemos transformar esses valores (os rótulos de dados) em colunas.

Para isso vamos importar da nossa documentação OneHotEncoder.

Como Tratar Variáveis de Texto
OneHotEncoder

Também podemos transformar isso em um dataframe do Pandas

Como Tratar Variáveis de Texto
dataframe

Como selecionar o nome das colunas pela documentação?

nome das colunas
nome das colunas
Como Tratar Variáveis de Texto
nome das colunas
visualizando a base
visualizando a base
visualizando a base
visualizando a base

Podemos somar os valores:

Como Tratar Variáveis de Texto
somando valores

Poderíamos ter utilizado o OneHotEncoder inclusive com a coluna classe, observe:

OneHotEncoder
OneHotEncoder

Também podemos voltar no OneHotEncoder e definir o parâmetro drop como if_binary

Como Tratar Variáveis de Texto
verificação

Observe que conseguimos encontrar os mesmos valores de diferentes formas, cabe a você definir qual dos processos é melhor para seu código e utilizar a biblioteca.

Eu recomento o OneHotEncoder porque ele tem mais recursos, inclusive se aparecer um valor novo depois que o modelo estiver pronto, existe na biblioteca um parâmetro de como lidar com valores desconhecidos para tratar mais facilmente essa situação.

Podemos selecionar o máximo de categorias, limitar as categorias, é realmente bem completo!

Por fim vamos falar sobre o OrdinalEncoder

Vamos utilizar o OrdinalEncoder quando de fato EXISTE uma relação de ordem entre os valores

Por exemplo, existe uma ordem entre os horários de partida e de chegada.

hr_embarque
hr_embarque
Como Tratar Variáveis de Texto
verificando resultado

Poderíamos ter utilizado o OrdinalEncoder inclusive com a coluna “paradas”

Como Tratar Variáveis de Texto
coluna paradas

Então aqui da mesma maneira que fizemos antes, criando uma função, agora nós conseguimos o mesmo resultado com o OrdinalEncoder.

Agora você já tem as ferramentas para tratar as variáveis de texto dentro do seu código!

Eu sugiro que você realmente navegue por essas documentações para obter o melhor da ferramenta, tem muita coisa legal que pode ser feita!

Conclusão – Como Tratar Variáveis de Texto

Nesta aula trouxe 5 formas de fazer o tratamento de variáveis categóricas!

Existem muitas formas de fazer este tratamento na internet, mas, trouxe aqui as bibliotecas e modos que acredito serem mais interessantes.

Novamente agora que já vimos que é possível chegar em resultados iguais com diferentes recursos e que cada um deles tem seu diferencial cabe a você explorar as bibliotecas e escolher qual faz mais sentido para o seu projeto.

Eu fico por aqui! Espero que tenham gostado das dicas! Até mais,

Hashtag Treinamentos

Para acessar outras publicações de Ciência de Dados, clique aqui!


Quer aprender mais sobre Python com um minicurso básico gratuito?

Quer sair do zero no Python e virar uma referência na sua empresa? Inscreva-se agora mesmo no Python Impressionador