Uppdatera kategorier

Arbeta med kategoriska data i Python

Kasey Jones

Research Data Scientist

Variabeln breed

Värdeantal för 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
...
Arbeta med kategoriska data i Python

Byta namn på kategorier

Metoden rename_categories:

Series.cat.rename_categories(new_categories=dict)

Skapa en dictionary:

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

Byt namn på kategorin:

dogs["breed"] = dogs["breed"].cat.rename_categories(my_changes)
Arbeta med kategoriska data i Python

Den uppdaterade rasvariabeln

Värdeantal för ras:

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

Flera ändringar på en gång:

my_changes = {
  old_name1: new_name1,
  old_name2: new_name2,
  ...
}
Series.cat.rename_categories(
  my_changes
)
Arbeta med kategoriska data i Python

Byta namn på kategorier med en funktion

Uppdatera flera kategorier:

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

dogs['sex'].cat.categories
Index(['Female', 'Male'], dtype='object')
Arbeta med kategoriska data i Python

Vanliga problem vid namnbyte

  • Nya kategorinamn måste användas
# Does not work! "Unknown" already exists
use_new_categories = {"Unknown Mix": "Unknown"}
  • Två kategorier kan inte slås ihop till en
# Does not work! New names must be unique
cannot_repeat_categories = {
    "Unknown Mix": "Unknown",
    "Mixed Breed": "Unknown"
}
Arbeta med kategoriska data i Python

Förberedelse för att slå ihop kategorier

En hunds färg:

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')
...
Arbeta med kategoriska data i Python

Exempel på att slå ihop kategorier

Skapa en dictionary och använd .replace:

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

Kontrollera seriens datatyp:

dogs["main_color"].dtype
dtype('O')
Arbeta med kategoriska data i Python

Konvertera tillbaka till kategorisk 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')
Arbeta med kategoriska data i Python

Nu kör vi en övning!

Arbeta med kategoriska data i Python

Preparing Video For Download...