English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Dados Categóricos do Pandas

Exemplo de operação de dados classificados do Pandas

Os dados geralmente contêm colunas de texto repetitivo em tempo real. Gênero, país/As funções de região e código sempre são repetitivas. Estes são exemplos de dados classificados.
As variáveis categoriais podem adotar apenas um número limitado e geralmente fixo de valores possíveis. Além do comprimento fixo, os dados categoriais podem ter ordem, mas não podem realizar operações numéricas. A classificação é um tipo de dados do Pandas.

O tipo de dados categoriais é útil em várias situações

Uma variável de string que contém apenas alguns valores diferentes. Convertendo essa variável de string em uma variável categorial economizará algum espaço em memória.

A ordem lexical da variável é diferente da ordem lógica ("um", "dois", "três"). Convertendo a variável em categoria e especificando a ordem na categoria, a classificação e o menor/O maior usará a ordem lógica em vez da ordem lexical.

Como sinal de outras bibliotecas Python, essa coluna deve ser considerada uma variável categorial (por exemplo, usando métodos estatísticos apropriados ou tipos de gráficos).

Criação de objeto

Os objetos de categoria podem ser criados de várias maneiras. A seguir são descritas as diferentes maneiras:

Categoria

Especificando o dtype como "category" na criação do objeto Pandas.

 import pandas as pd
 s = pd.Series(["a","b","c","a"], dtype="category")
 print(s)

Resultados da Execução如下:

 0 a
 1 b
 2 c
 3 a
 dtype: category
 Categorias (3, object): [a, b, c]

O número de elementos passados para o objeto series é4Mas a categoria é apenas3Observar a mesma coisa na saída da categoria.

pd.Categorical

Usando o construtor padrão de categorias do Pandas, podemos criar um objeto de categoria.

pandas.Categorical(values, categories, ordered)

Vamos ver um exemplo-

 import pandas as pd
 cat = pd.Categorical(['a', 'b', 'c', 'a', 'b', 'c'])
 print(cat)

Resultados da Execução如下:

 [a, b, c, a, b, c]
 Categorias (3, object): [a, b, c]

Vamos ver outro exemplo

 import pandas as pd
 cat = cat = pd.Categorical(['a','b','c','a','b','c','d'], ['c', 'b', 'a'])
 print(cat)

Resultados da Execução如下:

 [a, b, c, a, b, c, NaN]
 Categorias (3, object): [c, b, a]

Aqui, o segundo parâmetro representa a categoria. Portanto, qualquer valor que não exista na categoria será considerado NaN.
Agora, veja o seguinte exemplo:

 import pandas as pd
 cat = cat = pd.Categorical(['a','b','c','a','b','c','d'], ['c', 'b', 'a'], ordered=True)
 print(cat)

Resultados da Execução如下:

 [a, b, c, a, b, c, NaN]
 Categorias (3, object): [c < b < a]

Do ponto de vista lógico, essa ordem significa que a é maior que b e b é maior que c.

Descrição

Usando o comando .describe() para dados categoriais, obtemos uma saída semelhante em uma série ou data frame no tipo de string.

 import pandas as pd
 import numpy as np
 cat = pd.Categorical(["a", "c", "c", np.nan], categories=["b", "a", "c"])
 df = pd.DataFrame({"cat": cat, "s":["a", "c", "c", np.nan]})
 print(df.describe())
 print(df["cat"].describe())

Resultados da Execução如下:

    cat s
count    3 3
unique   2 2
top
freq     2 2
count     3
unique    2
top
freq      2
Nome: cat, dtype: object

Obter atributos de categorias

O comando obj.cat.categories é usado para obter as categorias do objeto.

 import pandas as pd
 import numpy as np
 s = pd.Categorical(["a", "c", "c", np.nan], categories=["b", "a", "c"])
 print(s.categories)

Resultados da Execução如下:

  Index([u'b', u'a', u'c'], dtype='object')

O comando obj.ordered é usado para obter a ordem do objeto.

 import pandas as pd
 import numpy as np
 cat = pd.Categorical(["a", "c", "c", np.nan], categories=["b", "a", "c"])
 print(cat.ordered)

Resultados da Execução如下:

   False

A função retorna false, pois não especificamos nenhuma ordem.

Renomear categorias

A renomeação de categorias é feita atribuindo um novo valor à propriedade s.cat.categories do series.cat.categories.

 import pandas as pd
 s = pd.Series(["a","b","c","a"], dtype="category")
 s.cat.categories = ["Group %s" % g for g in s.cat.categories]
 print(s.cat.categories)

Resultados da Execução如下:

Index([u'Group a', u'Group b', u'Group c'], dtype='object')

As categorias iniciais [a, b, c] são atualizadas pela propriedade s.cat.categories do objeto.

Adicionar novas categorias

Pode usar o método Categorical.add_categories() para adicionar novas categorias.

 import pandas as pd
 s = pd.Series(["a","b","c","a"], dtype="category")
 s = s.cat.add_categories([4]
 print(s.cat.categories)

Resultados da Execução如下:

Index([u'a', u'b', u'c', 4], dtype='object')

Remover categorias

Pode usar o método Categorical.remove_categories() para remover categorias não necessárias.

 import pandas as pd
 s = pd.Series(["a","b","c","a"], dtype="category")
 print(("Objeto original:"))
 print(s)
 print(("After removal:"))
 print(s.cat.remove_categories("a"))

Resultados da Execução如下:

 Objeto Original:
 0 a
 1 b
 2 c
 3 a
 dtype: category
 Categorias (3, object): [a, b, c]
 After removal:
 0 NaN
 1 b
 2 c
 3 NaN
 dtype: category
 Categorias (2, object): [b, c]

Comparação de Dados Categóricos

Pode-se comparar dados categóricos com outros objetos em três situações:

Compare o igual (== e !=) com objetos de lista semelhante à lista com o mesmo comprimento que os dados categóricos (lista, série, array, ...).

Quando o parâmetro de ordenação== True e os tipos de dados categoriais forem iguais, faça todas as comparações entre os dados categóricos de uma série de categorias com outra série de categorias (==,!=,>,> =,  <和<=)。< div>    

Comparação de dados categóricos com escalares. (

Veja o exemplo a seguir:

 import pandas as pd
 cat = pd.Series([1,2,3]).astype("category", categories=[1,2,3], ordered=True)
 cat1 = pd.Series([2,2,2]).astype("category", categories=[1,2,3], ordered=True)
 print(cat>cat1)

Resultados da Execução如下:

 0  False
 1  False
 2  True
 dtype: bool