Atualizando categorias

Trabalhando com dados categóricos em Python

Kasey Jones

Research Data Scientist

A variável de raça

Contagem de valores de raça:

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
...
Trabalhando com dados categóricos em Python

Renomeando categorias

O método rename_categories:

Series.cat.rename_categories(new_categories=dict)

Crie um dicionário:

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

Renomeie a categoria:

dogs["breed"] = dogs["breed"].cat.rename_categories(my_changes)
Trabalhando com dados categóricos em Python

A variável de raça atualizada

Contagem de valores de raça:

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

Várias mudanças de uma vez:

my_changes = {
  old_name1: new_name1,
  old_name2: new_name2,
  ...
}
Series.cat.rename_categories(
  my_changes
)
Trabalhando com dados categóricos em Python

Renomeando categorias com função

Atualize várias categorias:

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

dogs['sex'].cat.categories
Index(['Female', 'Male'], dtype='object')
Trabalhando com dados categóricos em Python

Problemas comuns ao substituir

  • Use nomes de categorias novos
# Não funciona! "Unknown" já existe
use_new_categories = {"Unknown Mix": "Unknown"}
  • Não dá para juntar duas categorias em uma só
# Não funciona! Novos nomes devem ser únicos
cannot_repeat_categories = {
    "Unknown Mix": "Unknown",
    "Mixed Breed": "Unknown"
}
Trabalhando com dados categóricos em Python

Preparando a fusão de categorias

A cor do cachorro:

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')
...
Trabalhando com dados categóricos em Python

Exemplo de fusão de categorias

Crie um dicionário e use .replace:

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

Confira o tipo da Series:

dogs["main_color"].dtype
dtype('O')
Trabalhando com dados categóricos em Python

Converter de volta para categórica

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')
Trabalhando com dados categóricos em Python

Hora de praticar

Trabalhando com dados categóricos em Python

Preparing Video For Download...