Pandas – Relleno de NaN en datos categóricos

Los datos del mundo real están llenos de valores faltantes. Para trabajar en ellos, necesitamos imputar estos valores faltantes y sacar conclusiones significativas de ellos. En este artículo, discutiremos cómo completar los valores de NaN en datos categóricos. En el caso de características categóricas, no podemos utilizar métodos de imputación estadística. 

Primero, creemos un conjunto de datos de muestra para comprender los métodos para completar los valores faltantes:

Python3

# import modules
import numpy as np
import pandas as pd
 
# create dataset
data = {'Id': [1, 2, 3, 4, 5, 6, 7, 8],
         
        'Gender': ['M', 'M', 'F', np.nan,
                   np.nan, 'F', 'M', 'F'],
         
        'Color': [np.nan, "Red", "Blue",
                  "Red", np.nan, "Red",
                  "Green", np.nan]}
 
# convert to data frame
df = pd.DataFrame(data)
display(df)

Producción:

Para completar los valores que faltan en las características categóricas, podemos seguir cualquiera de los enfoques que se mencionan a continuación:

Método 1: Llenar con la clase más frecuente

Un enfoque para completar estos valores faltantes puede ser reemplazarlos con la clase más común o que ocurra. Podemos hacer esto tomando el índice de la clase más común que se puede determinar usando el método value_counts() . Veamos el ejemplo de cómo funciona:

Python3

# filling with most common class
df_clean = df.apply(lambda x: x.fillna(x.value_counts().index[0]))
df_clean

Producción:

Método 2: Llenar con clase desconocida

A veces, la información que falta es valiosa en sí misma, y ​​no será apropiado imputarla con la clase más común. En tal caso, podemos reemplazarlos con un valor como «Desconocido» o «Perdido» usando el método fillna() . Veamos un ejemplo de esto:

Python3

# filling with Unknown class
df_clean = df.fillna("Unknown")
df_clean

Producción:

Método 3: Uso de Imputer categórico de la biblioteca sklearn-pandas 

Tenemos scikit learn imputer, pero solo funciona para datos numéricos. Entonces tenemos sklearn_pandas con el transformador equivalente a eso, que puede funcionar con datos de string. Reemplaza los valores faltantes con los más frecuentes en esa columna. Veamos un ejemplo de reemplazo de valores NaN de la columna «Color»: 

Python3

# using sklearn-pandas package
from sklearn_pandas import CategoricalImputer
 
# handling NaN values
imputer = CategoricalImputer()
data = np.array(df['Color'], dtype=object)
imputer.fit_transform(data)

Producción:

Publicación traducida automáticamente

Artículo escrito por devanshigupta1304 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 *