¿Cómo convertir datos de strings categóricas en numéricos en Python?

Los conjuntos de datos tienen características tanto numéricas como categóricas. Las características categóricas se refieren a tipos de datos de string y pueden ser fácilmente comprendidas por los seres humanos. Sin embargo, las máquinas no pueden interpretar los datos categóricos directamente. Por lo tanto, los datos categóricos deben convertirse en datos numéricos para su posterior procesamiento.

Hay muchas formas de convertir datos categóricos en datos numéricos. Aquí en este artículo, discutiremos los dos métodos más utilizados, a saber:

  • Codificación de variables ficticias
  • Codificación de etiquetas

En ambos Métodos estamos usando los mismos datos, el enlace al conjunto de datos está aquí

Método 1: Codificación de variable ficticia

Usaremos la función pandas.get_dummies para convertir los datos de strings categóricas en numéricos.

Sintaxis:

pandas.get_dummies(datos, prefijo=Ninguno, prefijo_sep=’_’, dummy_na=Falso, columnas=Ninguno, disperso=Falso, drop_first=Falso, dtype=Ninguno)

Parámetros :

  • datos : Serie Pandas, o DataFrame
  • prefijo : str, lista de str, o dict de str, predeterminado Ninguno. String para agregar nombres de columna de DataFrame
  • prefix_sep : str, por defecto ‘_’. Si se agrega un prefijo, se utilizará un separador/delimitador.
  • dummy_na : bool, por defecto Falso. Agregue una columna para indicar los NaN, si se ignoran los NaN falsos.
  • columnas : como una lista, por defecto Ninguno. Nombres de columna en el DataFrame a codificar.
  • disperso : booleano, predeterminado Falso. Si las columnas con codificación ficticia deben estar respaldadas por una array SparseArray (verdadero) o una array NumPy normal (falso).
  • drop_first : bool, por defecto Falso. Ya sea para sacar k-1 dummies de k niveles categóricos eliminando el primer nivel.
  • dtype : dtype, por defecto np.uint8. Especifica el tipo de datos para las nuevas columnas.

Devoluciones : marco de datos

Implementación paso a paso

Paso 1: Importación de bibliotecas

Python3

# importing pandas as pd
import pandas as pd

Paso 2: Importación de datos

Python3

# importing data using .read_csv() function
df = pd.read_csv('data.csv')
 
# printing DataFrame
df

Producción:

Paso 3: Conversión de columnas de datos categóricos a numéricos.

Convertiremos la columna ‘Comprado’ del tipo de datos categórico al numérico.

Python3

# using .get_dummies function to convert
# the categorical datatype to numerical
# and storing the returned dataFrame
# in a new variable df1
df1 = pd.get_dummies(df['Purchased'])
 
# using pd.concat to concatenate the dataframes
# df and df1 and storing the concatenated
# dataFrame in df.
df = pd.concat([df, df1], axis=1).reindex(df.index)
 
# removing the column 'Purchased' from df
# as it is of no use now.
df.drop('Purchased', axis=1, inplace=True)
 
# printing df
df

Producción:

Método 2: Codificación de etiquetas

Usaremos .LabelEncoder() de la biblioteca sklearn para convertir datos categóricos en datos numéricos. Usaremos la función fit_transform() en el proceso.

Sintaxis: 

ajuste_transformar(y)

Parámetros:

  • y : tipo array de forma (n_samples). Valores objetivo.

Devoluciones : tipo array de forma (n_muestras). Etiquetas codificadas.

Implementación paso a paso

Paso 1: Importación de bibliotecas

Python3

# importing pandas as pd
import pandas as pd

Paso 2: Importación de datos

Python3

#importing data using .read_csv() function
df = pd.read_csv('data.csv')
 
#printing DataFrame
df

Producción:

 

Paso 3: Conversión de columnas de datos categóricos a numéricos.

Convertiremos la columna ‘Comprado’ del tipo de datos categórico al numérico.

Python3

# Importing LabelEncoder from Sklearn
# library from preprocessing Module.
from sklearn.preprocessing import LabelEncoder
 
# Creating a instance of label Encoder.
le = LabelEncoder()
 
# Using .fit_transform function to fit label
# encoder and return encoded label
label = le.fit_transform(df['Purchased'])
 
# printing label
label

Producción:

array([0, 1, 0, 0, 1, 1, 0, 1, 0, 1])

Paso 4: agregar la array de etiquetas a nuestro marco de datos

Python3

# removing the column 'Purchased' from df
# as it is of no use now.
df.drop("Purchased", axis=1, inplace=True)
 
# Appending the array to our dataFrame
# with column name 'Purchased'
df["Purchased"] = label
 
# printing Dataframe
df

Producción:

Publicación traducida automáticamente

Artículo escrito por bistpratham y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *