Actualizar categorías

Trabajar con datos categóricos en Python

Kasey Jones

Research Data Scientist

La variable breed

Recuentos de valores de raza:

dogs["breed"] = dogs["breed"].astype("category")
dogs["breed"].value_counts()
Unknown Mix                 1524
German Shepherd Dog Mix     190
Dachshund Mix               147
Labrador Retriever Mix      83
Staffordshire Terrier Mix   62
...
Trabajar con datos categóricos en Python

Renombrar categorías

El método rename_categories:

Series.cat.rename_categories(new_categories=dict)

Crea un diccionario:

my_changes = {"Unknown Mix": "Unknown"}

Renombra la categoría:

dogs["breed"] = dogs["breed"].cat.rename_categories(my_changes)
Trabajar con datos categóricos en Python

La variable breed actualizada

Recuentos de valores de raza:

dogs["breed"].value_counts()
Unknown                     1524
German Shepherd Dog Mix     190
Dachshund Mix               147
Labrador Retriever Mix      83
Staffordshire Terrier Mix   62
...

Varios cambios a la vez:

my_changes = {
  old_name1: new_name1,
  old_name2: new_name2,
  ...
}
Series.cat.rename_categories(
  my_changes
)
Trabajar con datos categóricos en Python

Renombrar categorías con una función

Actualiza varias categorías:

dogs['sex'] = dogs['sex'].cat.rename_categories(lambda c: c.title())

dogs['sex'].cat.categories
Index(['Female', 'Male'], dtype='object')
Trabajar con datos categóricos en Python

Problemas comunes al reemplazar

  • Debes usar nombres de categoría nuevos
# ¡No funciona! "Unknown" ya existe
use_new_categories = {"Unknown Mix": "Unknown"}
  • No puedes combinar dos categorías en una
# ¡No funciona! Los nombres nuevos deben ser únicos
cannot_repeat_categories = {
    "Unknown Mix": "Unknown",
    "Mixed Breed": "Unknown"
}
Trabajar con datos categóricos en Python

Preparar la fusión de categorías

El color de un perro:

dogs["color"] = dogs["color"].astype("category")
print(dogs["color"].cat.categories)
Index(['apricot', 'black', 'black and brown', 'black and tan',
       'black and white', 'brown', 'brown and white', 'dotted', 'golden',
       'gray', 'gray and black', 'gray and white', 'red', 'red and white',
       'sable', 'saddle back', 'spotty', 'striped', 'tricolor', 'white',
       'wild boar', 'yellow', 'yellow-brown'],
      dtype='object')
...
Trabajar con datos categóricos en Python

Ejemplo de fusión de categorías

Crea un diccionario y usa .replace:

update_colors = {
    "black and brown": "black",
    "black and tan": "black",
    "black and white": "black",
}
dogs["main_color"] = dogs["color"].replace(update_colors)

Comprueba el tipo de la Serie:

dogs["main_color"].dtype
dtype('O')
Trabajar con datos categóricos en Python

Volver a convertir a categórica

dogs["main_color"] = dogs["main_color"].astype("category")
dogs["main_color"].cat.categories
Index(['apricot', 'black', 'brown', 'brown and white', 'dotted', 'golden',
       'gray', 'gray and black', 'gray and white', 'red', 'red and white',
       'sable', 'saddle back', 'spotty', 'striped', 'tricolor', 'white',
       'wild boar', 'yellow', 'yellow-brown'],
      dtype='object')
Trabajar con datos categóricos en Python

Hora de practicar

Trabajar con datos categóricos en Python

Preparing Video For Download...