Cambiando variables categorías por variables numéricas con Python

Los algoritmos matemáticos no pueden incluir objetos o cadenas como entrada ni para el entrenamiento del modelo, acá solo toma números, pero justamente es, en estos casos, que se puede hacer una pequeña modificación en la data para cambiar los datos categóricos en numéricos.

Veamos esto utilizando los datos que hemos venido trabajando del Titanic, si vemos la columna de “Sexo”, tenemos que los datos son categóricos, tenemos “male” para los hombres y “female” para las mujeres, estos datos no los podemos ingresar a ningún algoritmo precisamente son estos ejemplos que podemos utilizar el cambio de formato de categoría a números, como cero y uno.

1-4

En Pandas, podemos usar el método pd.get_dummies para convertir variables categóricas en variables numéricas. Con este método se obtiene la columna categórica y genera de manera automáticamente una lista de números, cada uno correspondiente a una categoría particular de la variable.

Entonces implementemos este método a nuestros datos, simplemente debe utilizar el método pd. get_dummies e indicarle qué columna queremos aplicar el cambio, en nuestro caso sería la columna de “Sexo”.

pd.get_dummies(df, columms = ["Sexo"])

 

Como podemos observar elimina la columna de “Sexo” de nuestros datos y crea dos columnas adicionales. En una coloca en uno los datos correspondientes a las mujeres o “female” y entra coloca en uno los datos de los hombres o “male”.

Cambiando variables categorías por variables numéricas con Python

Con este método tal cual como esta, siempre nos arrojará nuevas columnas como tantas categorías tengan nuestros datos, en nuestro caso eran solamente dos categorías, hombres y mujeres y por esa razón nos crea dos nuevas columnas.

Pero si nos podemos analizar un poco estas dos columnas nos dicen exactamente lo mismo pero con los datos inverso, es decir en una nos dice las de mujeres hay en nuestra data como uno, mientras que los hombres nos lo representa como cero, mientras que en la siguiente columna nos dice exactamente lo mismo pero al contrario, los hombres van a ser uno mientras que las mujeres se representan como cero, entonces no es necesario tener las dos columnas al mismo tiempo en nuestros datos ya que nos puede causar un error al momento de aplicar algún algoritmo matemático, por lo que es conviene eliminar una de la columna.

Pero con el mismo método de get_dummies podemos hacer esto, simplemente debemos agregar drop_first igual a True o descartar la primera, y lo que hace es eliminar la primera columna generada por este método, en nuestro caso nos elimina la columna de “sexo_female”. Dejando solamente la de los hombres, por lo tanto, ahora nuestros datos será uno para los hombres y cero para las mujeres.

df = pd.get_dummies(df, columns = ["Sexo"], drop_first = True)

De esta forma nos queda nuestros datos, ya no tenemos la columna de “Sexo” como tal sino una nueva columna llamada “sexo_male” en donde nos indica en forma de números que uno es para hombres y cero para las mujeres. Con esta columna de esta forma ya la podemos usar para nuestros algoritmos matemáticos.

Cambiando variables categorías por variables numéricas con Python

Entonces recapitulando un poco el comando get_dummies nos convierte los datos categóricos en datos numéricos, solamente debemos indicarle que columna de nuestra data va a cambiar. Hay que tomar en cuenta que con este comando se generan tantas columnas como datos categóricos haya.

Cambiando variables categorías por variables numéricas con Python

2 thoughts on “Cambiando variables categorías por variables numéricas con Python”

  1. Hola, que pasa si la variable tiene mas de 2 posibilidades A, B y C por ejemplo
    se generarian 3 colunas , pero se debe eliminar 1 de ellas?

  2. En caso de que tengas 3 posibilidades (A, B, C) se generan 3 columnas, puedes eliminar una de ellas, eso si debes estar consciente de las combinaciones que se crean para que después no tengas problemas. Saludos.

Deja un comentario

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