Kategorien aktualisieren

Arbeiten mit kategorialen Daten in Python

Kasey Jones

Research Data Scientist

Die Variable breed

Rassen: Häufigkeiten

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
...
Arbeiten mit kategorialen Daten in Python

Kategorien umbenennen

Die Methode rename_categories:

Series.cat.rename_categories(new_categories=dict)

Ein Dictionary erstellen:

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

Kategorie umbenennen:

dogs["breed"] = dogs["breed"].cat.rename_categories(my_changes)
Arbeiten mit kategorialen Daten in Python

Die aktualisierte Variable breed

Rassen: Häufigkeiten

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

Mehrere Änderungen auf einmal:

my_changes = {
  old_name1: new_name1,
  old_name2: new_name2,
  ...
}
Series.cat.rename_categories(
  my_changes
)
Arbeiten mit kategorialen Daten in Python

Kategorien mit einer Funktion umbenennen

Mehrere Kategorien auf einmal aktualisieren:

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

dogs['sex'].cat.categories
Index(['Female', 'Male'], dtype='object')
Arbeiten mit kategorialen Daten in Python

Häufige Probleme beim Ersetzen

  • Neue Kategorienamen müssen verwendet werden
# Funktioniert nicht! "Unknown" existiert schon
use_new_categories = {"Unknown Mix": "Unknown"}
  • Zwei Kategorien können nicht zu einer zusammengefasst werden
# Funktioniert nicht! Neue Namen müssen eindeutig sein
cannot_repeat_categories = {
    "Unknown Mix": "Unknown",
    "Mixed Breed": "Unknown"
}
Arbeiten mit kategorialen Daten in Python

Kategorien zusammenfassen: Setup

Die Fellfarbe eines Hundes:

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')
...
Arbeiten mit kategorialen Daten in Python

Kategorien zusammenfassen: Beispiel

Ein Dictionary erstellen und .replace nutzen:

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

Den Datentyp der Series prüfen:

dogs["main_color"].dtype
dtype('O')
Arbeiten mit kategorialen Daten in Python

Zurück zu kategorisch konvertieren

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')
Arbeiten mit kategorialen Daten in Python

Zeit zum Üben

Arbeiten mit kategorialen Daten in Python

Preparing Video For Download...