Saltar al contenido

Pandas: convertir categorías a números

Este escrito ha sido evaluado por nuestros especialistas para que tengas la seguridad de la exactitud de nuestro contenido.

Solución:

Primero, cambie el tipo de la columna:

df.cc = pd.Categorical(df.cc)

Ahora los datos se ven similares pero se almacenan categóricamente. Para capturar los códigos de categoría:

df['code'] = df.cc.cat.codes

Ahora tu tienes:

   cc  temp  code
0  US  37.0     2
1  CA  12.0     1
2  US  35.0     2
3  AU  20.0     0

Si no desea modificar su DataFrame sino simplemente obtener los códigos:

df.cc.astype('category').cat.codes

O use la columna categórica como índice:

df2 = pd.DataFrame(df.temp)
df2.index = pd.CategoricalIndex(df.cc)

Si solo desea transformar su serie en identificadores enteros, puede usar pd.factorize.

Tenga en cuenta esta solución, a diferencia de pd.Categorical, no se ordenará alfabéticamente. Así que el primer país será asignado 0. Si desea empezar desde 1puede agregar una constante:

df['code'] = pd.factorize(df['cc'])[0] + 1

print(df)

   cc  temp  code
0  US  37.0     1
1  CA  12.0     2
2  US  35.0     1
3  AU  20.0     3

Si desea ordenar alfabéticamente, especifique sort=True:

df['code'] = pd.factorize(df['cc'], sort=True)[0] + 1 

Si está utilizando el sklearn biblioteca que puedes usar LabelEncoder. Me gusta pd.Categoricallas cadenas de entrada se ordenan alfabéticamente antes de codificarlas.

from sklearn.preprocessing import LabelEncoder

LE = LabelEncoder()
df['code'] = LE.fit_transform(df['cc'])

print(df)

   cc  temp  code
0  US  37.0     2
1  CA  12.0     1
2  US  35.0     2
3  AU  20.0     0

valoraciones y comentarios

Eres capaz de defender nuestra investigación fijando un comentario y valorándolo te lo agradecemos.

¡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 *