English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
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).
Os objetos de categoria podem ser criados de várias maneiras. A seguir são descritas as diferentes maneiras:
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.
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.
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
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.
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.
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')
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]
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>
Veja o exemplo a seguir: Resultados da Execução如下: 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)
0 False
1 False
2 True
dtype: bool