Data Science Essentials Pandas DataFrame: explicación de la clasificación de datos

Aprender el método de clasificación de pandas es una excelente manera de comenzar o practicar el análisis básico de datos con Python. Por lo general, el análisis de datos se realiza con Excel, SQL o pandas. Una de las grandes ventajas de usar pandas es que puede manejar grandes cantidades de datos y proporcionar capacidades de manipulación de datos de alto rendimiento.

Este artículo describe cómo usar .sort_values() y .sort_index() para ordenar de manera eficiente los datos en un DataFrame.

inserte la descripción de la imagen aquí

Primeros pasos con los métodos de clasificación de Pandas

Un DataFrame es una estructura de datos con filas y columnas etiquetadas. Un DataFrame se puede ordenar por valor de fila o columna y por índice de fila o columna.

Las filas y columnas tienen índices, que son representaciones numéricas de la posición de los datos en el DataFrame. Los datos se pueden recuperar de una fila o columna específica utilizando la posición de índice de DataFrame. De forma predeterminada, los números de índice comienzan en cero. También puede asignar manualmente sus propios índices.

preparación de datos

Datos de economía de combustible compilados por la Agencia de Protección Ambiental (EPA) de EE. UU. para vehículos fabricados entre 1984 y 2021.
inserte la descripción de la imagen aquí
Conjunto de datos de economía de combustible de la EPA

Para fines de análisis, los datos de MPG (millas por galón) de los vehículos que se verán por marca, modelo, año y otros atributos del vehículo se leerán en las columnas del DataFrame.

import pandas as pd

column_subset = [
    "id",
    "make",
    "model",
    "year",
    "cylinders",
    "fuelType",
    "trany",
    "mpgData",
    "city08",
    "highway08"
]

df = pd.read_csv(
    "数据科学必备Pandas DataFrame:数据排序详解/vehicles.csv",
    usecols=column_subset,
    nrows=100
)

df.head()

inserte la descripción de la imagen aquí

.sort_values()

Los valores en un DataFrame se pueden ordenar a lo largo de cualquier eje (columna o fila) usando .sort_values() , similar a cómo se ordenan los valores en Excel.
inserte la descripción de la imagen aquí

.sort_index()

Puede usar .sort_index() para ordenar un DataFrame por índice de fila o etiqueta de columna, que consiste en ordenar un DataFrame por índice de fila o nombre de columna
inserte la descripción de la imagen aquí

Clasificación de datos de una sola columna DataFrame

Use .sort_values() .El valor predeterminado devuelve un nuevo DataFrame ordenado en orden ascendente, sin modificar el DataFrame original.

Ordenar por columna en orden ascendente

Ordenar con .sort_values() es pasar un solo argumento al método que contiene el nombre de la columna para ordenar.

df.sort_values("city08")

inserte la descripción de la imagen aquí

Ajuste del orden de clasificación

Por defecto , .sort_values() ascendente se establece en True (ordenar en orden ascendente).Establecer en False si se ordena en orden descendente.

df.sort_values(by="city08",ascending=False)

inserte la descripción de la imagen aquí

algoritmo de clasificación de selección

Los algoritmos disponibles son quicksort, mergesort y heapsort .

df.sort_values(by="city08",ascending=False,kind="mergesort")

inserte la descripción de la imagen aquí

Clasificación de datos de varias columnas de DataFrame

Para ordenar por dos claves, puede pasar una lista de nombres de columna por .

Orden ascendente por columna

Para ordenar un DataFrame en varias columnas, se debe proporcionar una lista de nombres de columnas.

df.sort_values(by=["make", "model"])[["make", "model"]]

          make               model
0   Alfa Romeo  Spider Veloce 2000
18        Audi                 100
19        Audi                 100
20         BMW                740i
21         BMW               740il
..         ...                 ...
12  Volkswagen      Golf III / GTI
13  Volkswagen           Jetta III
15  Volkswagen           Jetta III
16       Volvo                 240
17       Volvo                 240
[100 rows x 2 columns]

Cambiar el orden de clasificación de las columnas

Ajuste el orden de la clasificación por lista.

df.sort_values(by=["model", "make"])[["make", "model"]]
             make        model
18           Audi          100
19           Audi          100
16          Volvo          240
17          Volvo          240
75          Mazda          626
..            ...          ...
62           Ford  Thunderbird
63           Ford  Thunderbird
88     Oldsmobile     Toronado
42  CX Automotive        XM v6
43  CX Automotive       XM v6a
[100 rows x 2 columns]

Ordenación descendente por varias columnas

df.sort_values(by=["make", "model"],ascending=False)[["make", "model"]]
          make               model
16       Volvo                 240
17       Volvo                 240
13  Volkswagen           Jetta III
15  Volkswagen           Jetta III
11  Volkswagen      Golf III / GTI
..         ...                 ...
21         BMW               740il
20         BMW                740i
18        Audi                 100
19        Audi                 100
0   Alfa Romeo  Spider Veloce 2000
[100 rows x 2 columns]

Clasificación en varias columnas con diferentes órdenes de clasificación

Use varias columnas para ordenar y haga que esas columnas usen diferentes parámetros ascendentes. Con pandas, esto se puede hacer con una sola llamada de método. Si desea ordenar algunas columnas en orden ascendente y otras en orden descendente, puede pasar una lista de valores booleanos a ascendente.

df.sort_values(
    by=["make", "model", "city08"],
    ascending=[True, True, False]
)[["make", "model", "city08"]]

          make               model  city08
0   Alfa Romeo  Spider Veloce 2000      19
18        Audi                 100      17
19        Audi                 100      17
20         BMW                740i      14
21         BMW               740il      14
..         ...                 ...     ...
11  Volkswagen      Golf III / GTI      18
15  Volkswagen           Jetta III      20
13  Volkswagen           Jetta III      18
17       Volvo                 240      19
16       Volvo                 240      18
[100 rows x 3 columns]

Ordenación del índice DataFrame

Un DataFrame tiene una propiedad .index que, de forma predeterminada, es una representación numérica de su posición de fila. Se puede pensar en un índice como un número de fila, lo que ayuda a encontrar e identificar filas rápidamente.

Ordenar por índice en orden ascendente

Los marcos de datos se pueden ordenar por índice de fila usando .sort_index(). Ordenar por valor de columna como en el ejemplo anterior reordena las filas en el DataFrame, por lo que el índice se desordena. Esto también sucede al filtrar un DataFrame o eliminar o agregar filas.

Use .sort_values() para crear un nuevo DataFrame ordenado para operaciones posteriores.

sorted_df = df.sort_values(by=["make", "model"])
sorted_df

inserte la descripción de la imagen aquí
Use .sort_index() para restaurar el orden original del DataFrame.

sorted_df.sort_index()

inserte la descripción de la imagen aquí
Use bool para juzgar.

sorted_df.sort_index() == df

inserte la descripción de la imagen aquí
Puede asignar un índice personalizado a la lista de configuración .set_index() para el paso de parámetros.

assigned_index_df = df.set_index(["make", "model"])
assigned_index_df 

inserte la descripción de la imagen aquí
Use .sort_index() para ordenar.

assigned_index_df.sort_index()

inserte la descripción de la imagen aquí

Ordenar por índice descendente

assigned_index_df.sort_index(ascending=False)

inserte la descripción de la imagen aquí

Ordenación de columnas DataFrame

Ordena los valores de las filas usando las etiquetas de las columnas de DataFrame. El uso de .sort_index() y la configuración del eje de parámetro opcional en 1 ordenará el marco de datos por etiquetas de columna. El algoritmo de clasificación se aplica a las etiquetas de los ejes en lugar de a los datos reales. Esto facilita la inspección visual del DataFrame.

Cuando use .sort_index() sin pasar ningún argumento explícito, use axis=0 como argumento predeterminado. El eje de un DataFrame es el índice (eje=0) o la columna (eje=1). Puede usar estos dos ejes para indexar, seleccionar y ordenar datos en el DataFrame.

Clasificación de etiquetas de columna

df.sort_index(axis=1)

inserte la descripción de la imagen aquí

df.sort_index(axis=1, ascending=False)

inserte la descripción de la imagen aquí

Manejo de datos faltantes al ordenar

Los datos del mundo real suelen tener muchas imperfecciones. Si bien pandas tiene una variedad de formas de limpiar los datos antes de clasificarlos, a veces es bueno ver qué datos faltan durante la clasificación. Puede hacer esto con el parámetro na_position.

df["mpgData_"] = df["mpgData"].map({
    
    "Y": True})

inserte la descripción de la imagen aquí

na_position 的 .sort_values()

.sort_values() acepta un parámetro llamado na_position que ayuda a ordenar los datos que faltan en la columna.

df.sort_values(by="mpgData_",na_position="first")

    city08  cylinders fuelType  ...            trany  year mpgData_
1        9         12  Regular  ...     Manual 5-spd  1985      NaN
3       10          8  Regular  ...  Automatic 3-spd  1985      NaN
4       17          4  Premium  ...     Manual 5-spd  1993      NaN
5       21          4  Regular  ...  Automatic 3-spd  1993      NaN
11      18          4  Regular  ...  Automatic 4-spd  1993      NaN
..     ...        ...      ...  ...              ...   ...      ...
32      15          8  Premium  ...  Automatic 4-spd  1993     True
33      15          8  Premium  ...  Automatic 4-spd  1993     True
37      17          6  Regular  ...  Automatic 3-spd  1993     True
85      17          6  Regular  ...  Automatic 4-spd  1993     True
95      17          6  Regular  ...  Automatic 3-spd  1993     True
[100 rows x 11 columns]

Cualquier dato que falte en las columnas utilizadas para ordenar aparecerá al frente del DataFrame. Se utiliza para ver los valores que faltan para una columna.

Modificación de clasificación de DataFrame

Agregue el parámetro importante inplace=True a .sort_values() . El rol es modificar el DataFrame original directamente.

df.sort_values("city08", inplace=True)
df.sort_index(inplace=True)

El df resultante reemplaza al df original para cada ejecución del código en el libro.

Supongo que te gusta

Origin blog.csdn.net/qq_20288327/article/details/124223029
Recomendado
Clasificación