es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Decide en qué categoría clasificar en el método get_dummies() de pandas.

Digamos que tengo el siguiente df:

data = [{'c1':'a', 'c2':'x'}, {'c1':'b','c2':'y'}, {'c1':'c','c2':'z'}]
df = pd.DataFrame(data)

Resultado:

  c1 c2
0  a  x
1  b  y
2  c  z

Ahora quiero usar pd.get_dummies() para encodear en caliente (one-hot encode) las dos columnas categóricas c1 y c2, y eliminar la primera categoría de cada columna pd.get_dummies(df, columns = ['c1', 'c2'], drop_first=True). ¿Cómo puedo decidir qué categoría eliminar sin conocer el orden de las filas? ¿Hay algún comando que me haya perdido?


EDIT:
Entonces, mi objetivo sería eliminar la categoría b de c1 y z de c2

Resultado:

  a  c  x  y
0  1  0  1  0
1  0  0  0  1
2  0  1  0  0
Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Para decidir qué categoría eliminar utilizando pd.get_dummies(), puedes usar la regla n-1. Básicamente, eliminas la categoría con la frecuencia más alta, ya que se asume que es la más representativa de la característica.

    Aquí tienes un ejemplo de cómo puedes encontrar la categoría más frecuente de c1 y eliminarla utilizando pd.get_dummies():

    import pandas as pd
    
    data = [{'c1':'a', 'c2':'x'},
            {'c1':'b','c2':'y'},
            {'c1':'c','c2':'z'}]
    df = pd.DataFrame(data)
    
    # Obtén la categoría más frecuente de c1
    most_common_c1 = df['c1'].mode()[0]
    
    # Obtén variables ficticias para c1 y c2, eliminando la categoría más frecuente
    df_dummies = pd.get_dummies(df, columns=['c1','c2'], drop_first=True)
    if most_common_c1 in df_dummies.columns:
        df_dummies.drop(columns=most_common_c1, inplace=True)
    
    print(df_dummies)
    
       a  c  x  y
    0  1  0  1  0
    1  0  0  0  1
    2  0  1  0  0
    

    En este ejemplo, la categoría más frecuente en c1 es ‘a’, por lo que esta categoría se elimina durante la codificación one-hot utilizando pd.get_dummies(). Puedes aplicar la misma lógica para eliminar la categoría más frecuente en c2.

Comments are closed.