Saltar al contenido

Renombrar las categorías menos frecuentes por “OTRO” python

Sé libre de compartir nuestra web y códigos en tus redes, danos de tu ayuda para hacer crecer esta comunidad.

Solución:

Convierta su serie en categórica, extraiga categorías cuyos recuentos no estén entre los 3 primeros, agregue una nueva categoría, por ejemplo 'Other'luego reemplace las categorías calculadas previamente:

df['Jobrol'] = df['Jobrol'].astype('category')

others = df['Jobrol'].value_counts().index[3:]
label = 'Other'

df['Jobrol'] = df['Jobrol'].cat.add_categories([label])
df['Jobrol'] = df['Jobrol'].replace(others, label)

Nota: Es tentador para combinar categorías renombrándolas mediante df['Jobrol'].cat.rename_categories(dict.fromkeys(others, label))pero esto no funcionará porque implicará varias categorías etiquetadas de forma idéntica, lo que no es posible.


La solución anterior se puede adaptar para filtrar por contar. Por ejemplo, para incluir solo categorías con un recuento de 1, puede definir others como tal:

counts = df['Jobrol'].value_counts()
others = counts[counts == 1].index

Utilizar value_counts con numpy.where:

need = df['Jobrol'].value_counts().index[:3]
df['Jobrol'] = np.where(df['Jobrol'].isin(need), df['Jobrol'], 'OTHER')

valCount = df['Jobrol'].value_counts()
print (valCount)
Research Scientist       7
Sales Executive          7
Laboratory Technician    5
OTHER                    2
Name: Jobrol, dtype: int64

Otra solución:

N = 3
s = df['Jobrol'].value_counts()
valCount = s.iloc[:N].append(pd.Series(s.iloc[N:].sum(), index=['OTHER']))
print (valCount)
Research Scientist       7
Sales Executive          7
Laboratory Technician    5
OTHER                    2
dtype: int64

Reseñas y valoraciones de la guía

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

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