Обновление категорий

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

Распространённые ошибки при замене

  • Необходимо использовать новые названия категорий
# Does not work! "Unknown" already exists
use_new_categories = {"Unknown Mix": "Unknown"}
  • Нельзя объединить две категории в одну
# Does not work! New names must be unique
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

Преобразование обратно в категориальный тип

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...