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.
Directorio de artículos
- Primeros pasos con los métodos de clasificación de Pandas
- Clasificación de datos de una sola columna DataFrame
- Clasificación de datos de varias columnas de DataFrame
- Ordenación del índice DataFrame
- Ordenación de columnas DataFrame
- Manejo de datos faltantes al ordenar
- Modificación de clasificación de DataFrame
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.
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()
.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.
.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
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")
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)
algoritmo de clasificación de selección
Los algoritmos disponibles son quicksort, mergesort y heapsort .
df.sort_values(by="city08",ascending=False,kind="mergesort")
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
Use .sort_index() para restaurar el orden original del DataFrame.
sorted_df.sort_index()
Use bool para juzgar.
sorted_df.sort_index() == df
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
Use .sort_index() para ordenar.
assigned_index_df.sort_index()
Ordenar por índice descendente
assigned_index_df.sort_index(ascending=False)
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)
df.sort_index(axis=1, ascending=False)
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})
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.