En este escenario vamos a aplicar el método de codificación One Hot Encoding a las características categóricas del dataset Titanic proveído por seaborn. Para ello utilizaremos la función get_dummies de pandas. Comencemos cargando el dataset y examinándolo:
titanic = sns.load_dataset("titanic")
titanic.head()
Veamos los tipos de las características:
titanic.dtypes
survived int64
pclass int64
sex object
age float64
sibsp int64
parch int64
fare float64
embarked object
class category
who object
adult_male bool
deck category
embark_town object
alive object
alone bool
dtype: object
En este dataset, las características categóricas son las correspondientes a los tipos "object" y "category". Extraigamos la lista de estas características usando el método select_dtypes de pandas:
cat_features = titanic.select_dtypes(include = ["object", "category"]).columns
cat_features
Ahora podemos pasar a la función pd.get_dummies el subconjunto del dataframe titanic formado por estas características:
cat_titanic = pd.get_dummies(titanic[cat_features], drop_first = True, dummy_na = True)
cat_titanic.head()
Hemos configurado la función con dos argumentos adicionales:
- drop_first = True, que elimina la primera de las columnas generadas para cada característica con el objetivo de evitar la colinealidad (que una de las columnas sea combinación lineal de las demás)
- dummy_na = True, que genera una columna adicional para los valores nulos que se encuentren en cada característica
Ahora, basta eliminar las características originales:
titanic.drop(cat_features, axis = 1, inplace = True)
...y concatenar el dataframe titanic resultante con el dataframe que hemos generado con las características "dummies":
titanic = pd.concat([titanic, cat_titanic], axis = 1)
titanic.head()