Pandas convierte valores categóricos en valores enteros

Pandas Convierte Valores Categoricos En Valores Enteros



Los conjuntos de datos para la ejecución del aprendizaje automático incluyen variables numéricas y categóricas. Las variables categóricas son datos de tipo cadena que los humanos comprenden fácilmente. Las máquinas, por otro lado, no pueden entender entradas categóricas directamente. En consecuencia, el contenido categórico debe transformarse en valores numéricos que las máquinas puedan interpretar.

Métodos para convertir categórico a int

Las técnicas disponibles en 'pandas' para convertir los valores categóricos a int de un DataFrame se proporcionan aquí:

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

Utilizaremos estos métodos en este artículo y explicaremos en detalle cómo utilizar ambos métodos en 'pandas'.







Ejemplo # 1: Utilizando el método Pandas Replace()

Los valores categóricos en un DataFrame se pueden convertir a int usando el método pandas 'DataFrame.replace()'. Aprenderemos aquí a utilizar este método.



Usamos la herramienta 'Spyder' para ejecutar de manera óptima esta técnica en Python. Para comenzar a escribir el script, abra un nuevo archivo de Python en la herramienta 'Spyder'. El requisito más importante para escribir el script es importar bibliotecas apropiadas. Como tenemos que implementar un método 'pandas', tendremos el 'importar pandas como pd' para acceder a las características de 'pandas'. Luego comenzamos nuestro código central de Python. Hemos creado un DataFrame usando el método “pd.DataFrame()”. El DataFrame se inicializa con tres columnas 'Nombre', 'Título' e 'Ingresos'. Todas las columnas de DataFrame almacenan la misma longitud de valores.



La primera columna, 'Nombre', tiene ocho valores que son 'bush', 'albert', 'harry', 'peter', 'emma', 'newton', 'smith' y 'elsa'. La segunda columna, 'Grado', también almacena ocho valores categóricos, que son 'BS', 'MS', 'MS', 'BS', 'BS', 'BS', 'MS' y 'MS'. La última columna 'Ingresos' tiene ocho valores enteros '60000', '80000', '75000', '45000', '56000', '65000', '55000' y '70000'. Hemos creado un objeto 'personal' de DataFrame para almacenar el resultado de invocar la función 'pd.DataFrame()'. Para mostrar nuestro DataFrame inicial, usamos el método 'print()' con el nombre 'staff' de DataFrame como su parámetro en la línea final del script.






Para ver la salida en el terminal, use el botón 'Ejecutar archivo' en la herramienta 'Spyder' o presione las teclas 'Shift + Enter'. La salida que se muestra en el terminal muestra un DataFrame con tres columnas que se han generado correctamente.


Ahora, nuestro DataFrame está construido, tenemos que aplicarle la técnica requerida. El método pandas 'DataFrame.replace()' se utilizará para convertir los valores categóricos de una columna específica en valores enteros para que las máquinas puedan hacerlos legibles.



Hemos proporcionado el nombre del DataFrame con el nombre de la columna particular cuyos valores necesitamos reemplazar, que es 'personal ['grado']'. Queremos que los valores de la columna 'Grado', que tiene valores categóricos, sean reemplazados por valores enteros. Luego se invoca el método “.replace()”. Lo hemos pasado en dos conjuntos; el primero contiene los dos valores categóricos '['BS', 'MS']' que extrajimos de la columna 'Grado'. Como puede ver, la columna 'Grado' usa estos dos valores repetidamente. Si tuviéramos un tercer valor, debemos haberlo mencionado también. El segundo conjunto tiene dos valores int '[0, 1]', que ocuparán el lugar de los valores del primer conjunto respectivamente. El otro parámetro, “inplace”, se configura como “True”, lo que permite la sustitución de valores. Si se establece en 'Falso', deshabilitará el reemplazo. Finalmente, hemos utilizado el método 'print()' para mostrar el DataFrame 'personal' actualizado.


El DataFrame resultante tiene valores enteros en la columna 'Grado'. El valor “BS” se reemplaza por “0s”, y el “MS” se reemplaza por “1s”.


Incluso puede verificar el tipo de datos para cada columna usando la propiedad 'dataframe.dtype'. Esto nos dará tipos de datos de todas las columnas en el DataFrame especificado.


Aquí, tenemos los tipos de datos de nuestro DataFrame. Podemos ver que el tipo de datos de la columna 'Grado' se cambia a 'int64'.

Ejemplo # 2: Utilizando el método apply() de Pandas

El otro método que nos proporcionó pandas es la función 'DataFrame.apply()' para convertir valores categóricos en enteros. En el ejemplo anterior, hemos aprendido a convertir una columna categórica en un número entero. Ahora veremos cómo convertir todas las columnas categóricas en el DataFrame en un int.

Comenzando con la implementación práctica, debemos importar la biblioteca esencial para este método, que es pandas. Hemos utilizado el script 'importar pandas como pd' para importar pandas a nuestro archivo de Python en la herramienta 'Spyder', lo que nos permitirá acceder a los módulos de pandas usando el 'pd'. Usamos la función “pd.DataFrame()” para construir un DataFrame.

Este DataFrame tiene cuatro columnas 'grupo', 'posición', 'puntuaciones' y 'asistencias'. Cada columna almacena 9 valores. Los valores de la columna 'grupo' son 'X', 'X', 'Y', 'X', 'Y', 'Y', 'Y', 'X' e 'Y'. La columna 'posición' tiene 9 valores que son 'A', 'C', 'D', 'A', 'C', 'B', 'B', 'D' y 'B'. La columna 'puntuaciones' tiene valores enteros como '4', '8', '7', '10', '9', '5', '7', '3' y '23'. La última columna, “asistencias”, tiene los valores “10”, “2”, “3”, “9”, “3”, “7”, “4”, “2” y “9”.

Hemos creado un objeto 'prog' de DataFrame y le hemos asignado el resultado de invocar el método 'pd.DataFrame()'. Por lo tanto, el marco DataFrame resultante generado a partir de 'pd.DataFrame()' se almacenará en 'prog'. Ahora, podemos acceder al DataFrame usando este objeto. Para ver este DataFrame, hemos empleado el método 'print()' con el objeto 'prog' del DataFrame como su parámetro.


Cuando se ejecuta el programa Python anterior, se mostrará un DataFrame con cuatro columnas en la terminal.


Para convertir múltiples columnas categóricas en números enteros, hemos seguido esta técnica. Primero tenemos que seleccionar todas las columnas que contienen el tipo de datos del objeto empleando el método pandas 'DataFrame.select_dtypes().columns'. Cuando lo utilicemos en nuestro script según sea necesario, será 'prog.select_dtypes(['object']).columns'. Seleccionará todas las columnas que tengan el tipo de datos 'objeto' en el marco de datos 'prog'. Hemos creado una variable 'concate_col' para almacenar la salida de este método. Ahora podemos acceder a las columnas de tipo de datos 'objeto' simplemente usando esta variable 'concat_col'.

Ahora, para convertir estas columnas a enteros, hemos usado los pandas “DataFrame.apply()” con el método “pd.factorize()”. Hemos utilizado la variable 'concat_col' con el nombre de DataFrame y luego se invoca el método '.apply()'. Entre paréntesis del método '.apply', hemos llamado al método 'pd.factorize()' donde 'x' puede ser cualquier valor del marco de datos 'prog' con tipo de datos 'objeto'. Por lo tanto, toda esta línea de código se escribe como “prog['concat_col'] = prog['concat_col'].apply(lambda x : pd.factorize(x)[0])”. El método factorize tomará un valor con un tipo de datos 'objeto' y convertirlo en 'int'. El resultado final se puede mostrar llamando a la función 'imprimir ()' pasando la variable 'prog' como su parámetro.


En el DataFrame actualizado, podemos observar que los valores de las columnas 'grupo' y 'posición' eran inicialmente categóricos, es decir, objeto. Aún en el DataFrame de salida actualizado, ambas columnas tienen valores enteros. En la columna 'grupo', 'X' se reemplaza por '0' e 'Y' por '1'. Mientras que la columna 'posición' 'A' se reemplaza por '0', 'C' por '1', 'D' por '2' y 'B' por '3'.


Ahora, verifiquemos los tipos de datos actualizados.


Todas las siguientes columnas tienen el tipo de datos 'int64'.

Conclusión

Nuestra guía gira en torno a la conversión de valores categóricos en valores numéricos para que las máquinas puedan hacerlos comprensibles, ya que no pueden procesar el tipo de datos del objeto. Le presentamos los dos enfoques presentados por la biblioteca 'pandas' para obtener el tipo de datos requerido. Además, con la implementación práctica de códigos de ejemplo ejecutados en la herramienta 'Spyder', compartimos el resultado de cada ejemplo. Por último, elaboramos cada paso para lograr el resultado deseado.