Pandas convertem valores categóricos em valores int

Pandas Convertem Valores Categoricos Em Valores Int



Os conjuntos de dados para execução de aprendizado de máquina incluem variáveis ​​numéricas e categóricas. Variáveis ​​categóricas são dados do tipo string que os humanos compreendem facilmente. Máquinas, por outro lado, não podem entender entradas categóricas diretamente. Consequentemente, o conteúdo categórico deve ser transformado em valores numéricos que as máquinas possam interpretar.

Métodos para Converter Categórico em Int

As técnicas disponíveis em “pandas” para converter os valores categóricos para int de um DataFrame são fornecidas aqui:

    • Método DataFrame.replace()
    • Método DataFrame.apply(factorize())

Utilizaremos esses métodos neste artigo e explicaremos em detalhes como utilizar os dois métodos em “pandas”.







Exemplo # 1: Utilizando o método Pandas Replace()

Valores categóricos em um DataFrame podem ser convertidos em int usando o método pandas “DataFrame.replace()”. Vamos aprender aqui a utilizar este método.



Usamos a ferramenta “Spyder” para executar essa técnica de maneira otimizada em Python. Para começar a escrever o script, abra um novo arquivo Python na ferramenta “Spyder”. O requisito mais significativo para escrever o script é importar as bibliotecas apropriadas. Como temos que implementar um método “pandas”, teremos o “import pandas as pd” para acessar os recursos de “pandas”. Em seguida, iniciamos nosso código principal do Python. Criamos um DataFrame usando o método “pd.DataFrame()”. O DataFrame é inicializado por três colunas “Nome”, “Grau” e “Receita”. Todas as colunas do DataFrame armazenam o mesmo comprimento de valores.



A primeira coluna, “Nome”, tem oito valores que são “bush”, “albert”, “harry”, “peter”, “emma”, “newton”, “smith” e “elsa”. A segunda coluna, “Grau”, também armazena oito valores categóricos, que são “BS”, “MS”, “MS”, “BS”, “BS”, “BS”, “MS” e “MS”. A última coluna “Renda” tem oito valores inteiros “60.000”, “80.000”, “75.000”, “45.000”, “56.000”, “65.000”, “55.000” e “70.000”. Criamos um objeto DataFrame “staff” para armazenar a saída da chamada da função “pd.DataFrame()”. Para exibir nosso DataFrame inicial, usamos o método “print()” com o nome “staff” do DataFrame como parâmetro na linha final do script.






Para visualizar a saída no terminal, use o botão “Run File” na ferramenta “Spyder” ou pressione as teclas “Shift+Enter”. A saída exibida no terminal mostra um DataFrame com três colunas que foram geradas com sucesso.


Agora, nosso DataFrame está construído, temos que aplicar a técnica necessária a ele. O método pandas “DataFrame.replace()” será utilizado para converter os valores categóricos de uma coluna especificada em valores inteiros para que as máquinas possam torná-los legíveis.



Fornecemos o nome do DataFrame com o nome de coluna específico cujos valores precisamos substituir, que é “staff[‘grau’]”. Queremos que os valores da coluna “Grau”, que possui valores categóricos, sejam substituídos por valores inteiros. Em seguida, o método “.replace()” é invocado. Nós o passamos em dois conjuntos; o primeiro contém os dois valores categóricos “[‘BS’, ‘MS’]” que extraímos da coluna “Grau”. Como você pode ver, a coluna “Grau” usa esses dois valores repetidamente. Se tivéssemos um terceiro valor, deveríamos ter mencionado isso também. O segundo conjunto tem dois valores int “[0, 1]”, que tomarão o lugar dos primeiros valores definidos, respectivamente. O outro parâmetro, “inplace”, é definido como “True”, permitindo a substituição dos valores. Se definido como “Falso”, desabilitará a substituição. Por fim, utilizamos o método “print()” para exibir o DataFrame “staff” atualizado.


O DataFrame resultante tem valores inteiros na coluna “Grau”. O valor “BS” é substituído por “0s”, e o “MS” é substituído por “1s”.


Você pode até verificar o tipo de dados para cada coluna usando a propriedade “dataframe.dtype”. Isso nos dará tipos de dados de todas as colunas no DataFrame especificado.


Aqui, temos os tipos de dados do nosso DataFrame. Podemos ver que o tipo de dados da coluna “Grau” foi alterado para “int64”.

Exemplo # 2: Utilizando o método apply() do Pandas

O outro método que os pandas nos forneceram é a função “DataFrame.apply()” para converter valores categóricos em inteiros. No exemplo anterior, aprendemos a converter uma coluna categórica em um inteiro. Veremos agora como converter todas as colunas categóricas no DataFrame em um int.

Começando pela implementação prática, devemos importar a biblioteca essencial para este método, que são os pandas. Usamos o script “import pandas as pd” para importar pandas para nosso arquivo Python na ferramenta “Spyder”, que nos permitirá acessar os módulos pandas usando o “pd”. Usamos a função “pd.DataFrame()” para construir um DataFrame.

Este DataFrame tem quatro colunas “grupo”, “posição”, “pontuações” e “assistências”. Cada coluna armazena 9 valores. Os valores da coluna 'grupo' são 'X', 'X', 'Y', 'X', 'Y', 'Y', 'Y', 'X' e 'Y'. A coluna “posição” tem 9 valores que são “A”, “C”, “D”, “A”, “C”, “B”, “B”, “D” e “B”. A coluna “scores” tem valores inteiros como “4”, “8”, “7”, “10”, “9”, “5”, “7”, “3” e “23”. A última coluna, “assistências”, tem os valores “10”, “2”, “3”, “9”, “3”, “7”, “4”, “2” e “9”.

Criamos um objeto DataFrame “prog” e atribuímos a ele a saída de invocar o método “pd.DataFrame()”. Assim, o quadro DataFrame resultante gerado a partir do “pd.DataFrame()” será armazenado em “prog”. Agora, podemos acessar o DataFrame usando este objeto. Para visualizar este DataFrame, utilizamos o método “print()” com o objeto DataFrame “prog” como parâmetro.


Quando o programa Python anterior for executado, um DataFrame com quatro colunas será exibido no terminal.


Para converter várias colunas categóricas em números inteiros, seguimos essa técnica. Primeiro temos que selecionar todas as colunas que contêm o tipo de dados do objeto, empregando o método pandas “DataFrame.select_dtypes().columns”. Quando o utilizarmos em nosso script conforme necessário, será “prog.select_dtypes([‘object’]).columns”. Ele selecionará todas as colunas com o tipo de dados “objeto” no DataFrame “prog”. Criamos uma variável “concate_col” para armazenar a saída deste método. Agora podemos acessar as colunas de tipo de dados “objeto” simplesmente usando esta variável “concat_col”.

Agora, para converter essas colunas em inteiros, usamos os pandas “DataFrame.apply()” com o método “pd.factorize()”. Usamos a variável “concat_col” com o nome do DataFrame, então o método “.apply()” é invocado. Entre os parênteses do método “.apply”, chamamos o método “pd.factorize()” onde “x” pode ser qualquer valor do DataFrame “prog” com tipo de dados “objeto”. Assim, toda esta linha de código é escrita como “prog['concat_col'] = prog['concat_col'].apply(lambda x : pd.factorize(x)[0])”. O método factorize terá um valor com um tipo de dados “objeto” e convertê-lo em “int”. A saída final pode ser exibida chamando a função “print()” passando a variável “prog” como seu parâmetro.


No DataFrame atualizado, podemos observar que os valores das colunas “grupo” e “posição” eram inicialmente categóricos, ou seja, objeto. Ainda no DataFrame de saída atualizado, ambas as colunas possuem valores inteiros. Na coluna “grupo”, “X” é substituído por “0” e “Y” por “1”. Já a coluna “posição” “A” é substituída por “0”, “C” por “1”, “D” por “2” e “B” por “3”.


Agora, vamos verificar os tipos de dados atualizados.


Todas as colunas a seguir têm o tipo de dados “int64”.

Conclusão

Nosso guia gira em torno da conversão de valores categóricos em valores numéricos para que possam ser compreendidos pelas máquinas, pois o tipo de dados do objeto não pode ser processado por elas. Apresentamos a você as duas abordagens apresentadas pela biblioteca “pandas” para obter o tipo de dados necessário. Além disso, com a implementação prática de códigos de exemplo executados na ferramenta “Spyder”, compartilhamos o resultado de cada exemplo. Por último, elaboramos cada passo para alcançar o resultado desejado.