Оновлення категорій

Робота з категоріальними даними в Python

Kasey Jones

Research Data Scientist

Змінна «breed»

Кількість значень породи:

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
...
Робота з категоріальними даними в Python

Перейменування категорій

Метод rename_categories:

Series.cat.rename_categories(new_categories=dict)

Створіть словник:

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

Перейменуйте категорію:

dogs["breed"] = dogs["breed"].cat.rename_categories(my_changes)
Робота з категоріальними даними в Python

Оновлена змінна «breed»

Кількість значень породи:

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

Кілька змін одразу:

my_changes = {
  old_name1: new_name1,
  old_name2: new_name2,
  ...
}
Series.cat.rename_categories(
  my_changes
)
Робота з категоріальними даними в Python

Перейменування категорій функцією

Оновіть кілька категорій:

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

dogs['sex'].cat.categories
Index(['Female', 'Male'], dtype='object')
Робота з категоріальними даними в Python

Поширені проблеми із заміною

  • Потрібно використовувати нові назви категорій
# Не працює! "Unknown" уже існує
use_new_categories = {"Unknown Mix": "Unknown"}
  • Не можна об'єднати дві категорії в одну
# Не працює! Нові назви мають бути унікальними
cannot_repeat_categories = {
    "Unknown Mix": "Unknown",
    "Mixed Breed": "Unknown"
}
Робота з категоріальними даними в Python

Підготовка до згортання категорій

Колір собак:

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')
...
Робота з категоріальними даними в Python

Приклад згортання категорій

Створіть словник і скористайтеся .replace:

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

Перевірте тип даних Series:

dogs["main_color"].dtype
dtype('O')
Робота з категоріальними даними в Python

Повернення до типу «category»

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')
Робота з категоріальними даними в Python

Час практики

Робота з категоріальними даними в Python

Preparing Video For Download...