Tarea de datos de clasificación de pandas3

1. Crear datos de clasificación

Los datos categorizados se refieren a clasificar los datos de acuerdo con un cierto intervalo, similar al agrupamiento de datos.
Especifique el tipo de datos de la columna: dtype = "categoría", por lo que la serie recién creada es el tipo de categoría.

pd.Series(["a", "b", "c", "a"], dtype="category")
0    a
1    b
2    c
3    a
dtype: category
Categories (3, object): [a, b, c]

pandas tiene clases integradas, que se pueden crear directamente
usando tipos categóricos integrados

cat = pd.Categorical(["a", "b", "c", "a"], categories=['a','b','c'])
pd.Series(cat)
Out[4]:
0    a
1    b
2    c
3    a
dtype: category
Categories (3, object): [a, b, c]

Realice la clasificación de datos en las columnas existentes, la función se corta y el tipo de intervalo se usa como etiqueta por defecto

In [5]:
pd.cut(np.random.randint(0,60,5), [0,10,30,60])
Out[5]:
[(10, 30], (0, 10], (10, 30], (30, 60], (30, 60]]
Categories (3, interval[int64]): [(0, 10] < (10, 30] < (30, 60]]

Puede especificar caracteres como etiquetas

pd.cut(np.random.randint(0,60,5), [0,10,30,60], 
right=False, labels=['0-10','10-30','30-60'])
Out[6]:
[10-30, 30-60, 30-60, 10-30, 30-60]
Categories (3, object): [0-10 < 10-30 < 30-60]

2. Obtener información sobre los datos de clasificación.

Una variable categórica consta de tres partes: valores, categorías y orden.
Como puede ver en lo anterior, la variable categórica creada con la función de corte tiene como valor predeterminado una variable categórica ordenada. A
continuación, le mostramos cómo obtener o Modificar estas propiedades

(A)
método de descripción¶ Este método describe la situación de una secuencia de clasificación, incluido el número de valores no perdidos, el número de categorías de valores de elementos (no el número de categorías de clasificación), los elementos que ocurren con más frecuencia y su frecuencia

describe () puede ver las estadísticas clasificadas.

In [7]:
s = pd.Series(pd.Categorical(["a", "b", "c", "a",np.nan], categories=['a','b','c','d']))
s.describe()
Out[7]:
count     4
unique    3
top       a
freq      2
dtype: object

categorías y atributos ordenados¶
Ver categorías de clasificación y si están ordenadas

In [8]:
s.cat.categories
Out[8]:
Index(['a', 'b', 'c', 'd'], dtype='object')
In [9]:
s.cat.ordered
Out[9]:
False

3. Modificación de categoría

  • Use set_categories para
    modificar la categoría, pero el valor no cambiará, simplemente coloque los datos originales en el nuevo depósito.
In [10]:
s = pd.Series(pd.Categorical(["a", "b", "c", "a",np.nan], categories=['a','b','c','d']))
s.cat.set_categories(['new_a','c'])
Out[10]:
0    NaN
1    NaN
2      c
3    NaN
4    NaN
dtype: category
Categories (2, object): [new_a, c]
  • Use rename_categories para modificar.
    Debe tenerse en cuenta que este método modificará el valor y la categoría al mismo tiempo (este no es en realidad un depósito nuevo, pero se cambia el nombre del depósito original, lo que equivale a una nueva etiqueta, pero los datos originales no han cambiado)
In [11]:
s = pd.Series(pd.Categorical(["a", "b", "c", "a",np.nan], categories=['a','b','c','d']))
s.cat.rename_categories(['new_%s'%i for i in s.cat.categories])
Out[11]:
0    new_a
1    new_b
2    new_c
3    new_a
4      NaN
dtype: category
Categories (4, object): [new_a, new_b, new_c, new_d]
  • Usar el diccionario para modificar el valor en realidad es cambiar el nombre
In [12]:
s.cat.rename_categories({
    
    'a':'new_a','b':'new_b'})
Out[12]:
0    new_a
1    new_b
2        c
3    new_a
4      NaN
dtype: category
Categories (4, object): [new_a, new_b, c, d]
  • agregar agregar un nuevo grupo
In [13]:
s = pd.Series(pd.Categorical(["a", "b", "c", "a",np.nan], categories=['a','b','c','d']))
s.cat.add_categories(['e'])
Out[13]:
0      a
1      b
2      c
3      a
4    NaN
dtype: category
Categories (5, object): [a, b, c, d, e]
  • Utilice remove_categories para eliminar
In [14]:
s = pd.Series(pd.Categorical(["a", "b", "c", "a",np.nan], categories=['a','b','c','d']))
s.cat.remove_categories(['d'])
Out[14]:
0      a
1      b
2      c
3      a
4    NaN
dtype: category
Categories (3, object): [a, b, c]
  • Eliminar el tipo de categoría donde el valor del elemento no aparece
In [15]:
s = pd.Series(pd.Categorical(["a", "b", "c", "a",np.nan], categories=['a','b','c','d']))
s.cat.remove_unused_categories()
Out[15]:
0      a
1      b
2      c
3      a
4    NaN
dtype: category
Categories (3, object): [a, b, c]

4. Clasificación de los datos de clasificación

Los tipos de datos categóricos se dividen en ordenados y desordenados, lo que es muy fácil de entender. Por ejemplo, el nivel del intervalo de puntuación es una variable ordinal y la categoría del sujeto de la prueba generalmente se considera una variable desordenada.

  • En términos generales, una secuencia se convertirá en una variable ordenada, puede usar el método as_ordered
In [16]:
s = pd.Series(["a", "d", "c", "a"]).astype('category').cat.as_ordered()
s
Out[16]:
0    a
1    d
2    c
3    a
dtype: category
Categories (3, object): [a < c < d]

Degenerar en una variable desordenada, solo use as_unordered

In [17]:
s.cat.as_unordered()

También es la clasificación de valores y la clasificación de índices. Establezca el orden de categoría y, a continuación, puede ordenar por valor

s.cat.set_categories(['perfect','good','fair','bad',
'awful'][::-1],ordered=True).head()
Out[21]:
0       good
1       fair
2        bad
3    perfect
4    perfect
dtype: category
Categories (5, object): [awful < bad < fair < good < perfect]

Ordenar por valor

s.sort_values(ascending=False).head()
Out[22]:
29    perfect
17    perfect
31    perfect
3     perfect
4     perfect
dtype: category
Categories (5, object): [awful, bad, fair, good, perfect]

Cuando el índice es una categoría, puede ordenar por índice

df_sort = pd.DataFrame({
    
    'cat':s.values,
'value':np.random.randn(50)}).set_index('cat')
df_sort.head()
	    value
cat	
good	-1.746975
fair	0.836732
bad	0.094912
perfect	-0.724338
perfect	-1.456362

Ordenar por índice (orden descendente predeterminado)

df_sort.sort_index().head()
Out[24]:
		value
cat	
awful	0.245782
awful	0.063991
awful	1.541862
awful	-0.062976
awful	0.472542

Supongo que te gusta

Origin blog.csdn.net/hu_hao/article/details/106989922
Recomendado
Clasificación