Aktualizacja kategorii

Praca z danymi kategorycznymi w Pythonie

Kasey Jones

Research Data Scientist

Zmienna breed

Liczba wystąpień ras:

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
...
Praca z danymi kategorycznymi w Pythonie

Zmiana nazw kategorii

Metoda rename_categories:

Series.cat.rename_categories(new_categories=dict)

Utwórz słownik:

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

Zmień nazwę kategorii:

dogs["breed"] = dogs["breed"].cat.rename_categories(my_changes)
Praca z danymi kategorycznymi w Pythonie

Zaktualizowana zmienna breed

Liczba wystąpień ras:

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

Wiele zmian jednocześnie:

my_changes = {
  old_name1: new_name1,
  old_name2: new_name2,
  ...
}
Series.cat.rename_categories(
  my_changes
)
Praca z danymi kategorycznymi w Pythonie

Zmiana nazw kategorii za pomocą funkcji

Aktualizacja wielu kategorii:

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

dogs['sex'].cat.categories
Index(['Female', 'Male'], dtype='object')
Praca z danymi kategorycznymi w Pythonie

Typowe problemy przy zamianie

  • Nowe nazwy kategorii muszą być unikalne
# Does not work! "Unknown" already exists
use_new_categories = {"Unknown Mix": "Unknown"}
  • Nie można połączyć dwóch kategorii w jedną
# Does not work! New names must be unique
cannot_repeat_categories = {
    "Unknown Mix": "Unknown",
    "Mixed Breed": "Unknown"
}
Praca z danymi kategorycznymi w Pythonie

Przygotowanie do scalania kategorii

Kolor 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')
...
Praca z danymi kategorycznymi w Pythonie

Przykład scalania kategorii

Utwórz słownik i użyj .replace:

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

Sprawdź typ danych serii:

dogs["main_color"].dtype
dtype('O')
Praca z danymi kategorycznymi w Pythonie

Konwersja z powrotem do kategorii

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')
Praca z danymi kategorycznymi w Pythonie

Czas na ćwiczenia

Praca z danymi kategorycznymi w Pythonie

Preparing Video For Download...