Aktualizace kategorií

Working with Categorical Data in Python

Kasey Jones

Research Data Scientist

Proměnná breed

Počty výskytů plemene:

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
...
Working with Categorical Data in Python

Přejmenování kategorií

Metoda rename_categories:

Series.cat.rename_categories(new_categories=dict)

Vytvoření slovníku:

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

Přejmenování kategorie:

dogs["breed"] = dogs["breed"].cat.rename_categories(my_changes)
Working with Categorical Data in Python

Aktualizovaná proměnná breed

Počty výskytů plemene:

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

Více změn najednou:

my_changes = {
  old_name1: new_name1,
  old_name2: new_name2,
  ...
}
Series.cat.rename_categories(
  my_changes
)
Working with Categorical Data in Python

Přejmenování kategorií pomocí funkce

Aktualizace více kategorií:

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

dogs['sex'].cat.categories
Index(['Female', 'Male'], dtype='object')
Working with Categorical Data in Python

Časté problémy při nahrazování

  • Musí se používat nové názvy kategorií
# Does not work! "Unknown" already exists
use_new_categories = {"Unknown Mix": "Unknown"}
  • Dvě kategorie nelze sloučit do jedné
# Does not work! New names must be unique
cannot_repeat_categories = {
    "Unknown Mix": "Unknown",
    "Mixed Breed": "Unknown"
}
Working with Categorical Data in Python

Příprava na slučování kategorií

Barva psa:

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')
...
Working with Categorical Data in Python

Příklad slučování kategorií

Vytvoření slovníku a použití .replace:

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

Kontrola datového typu Series:

dogs["main_color"].dtype
dtype('O')
Working with Categorical Data in Python

Převod zpět na kategorický typ

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')
Working with Categorical Data in Python

Čas na procvičení

Working with Categorical Data in Python

Preparing Video For Download...