Los DataFrames de Pandas ofrecen herramientas poderosas para la manipulación de datos, y la ordenación es una operación fundamental. Este artículo explora cómo ordenar eficientemente un DataFrame por una sola columna, centrándose en el crucial método sort_values()
y sus argumentos clave: ascending
y na_position
.
Tabla de Contenidos
- Control del Orden de Clasificación con
ascending
- Manejo de Valores Faltantes con
na_position
- Ordenación por Múltiples Columnas
- Ordenación In-Place
Control del Orden de Clasificación con ascending
El método sort_values()
proporciona un control sencillo sobre la dirección de la ordenación. El argumento ascending
, que por defecto es True
(orden ascendente), determina si se ordena en orden ascendente o descendente.
import pandas as pd
data = {'Name': ['Alice', 'Bob', 'Charlie', 'David'],
'Age': [25, 30, 22, 28],
'Score': [85, 92, 78, 88]}
df = pd.DataFrame(data)
# Ordenación ascendente por 'Age'
df_ascending = df.sort_values(by='Age')
print("Ascendente:n", df_ascending)
# Ordenación descendente por 'Age'
df_descending = df.sort_values(by='Age', ascending=False)
print("nDescendente:n", df_descending)
Manejo de Valores Faltantes con na_position
Cuando se trabaja con conjuntos de datos que contienen valores faltantes (NaN), el argumento na_position
controla la colocación de estos valores dentro de la columna ordenada. Acepta dos valores:
'first'
(predeterminado): Coloca los valores NaN al principio de la columna ordenada.'last'
: Coloca los valores NaN al final de la columna ordenada.
import pandas as pd
import numpy as np
data = {'Name': ['Alice', 'Bob', 'Charlie', 'David', 'Eve'],
'Age': [25, 30, np.nan, 28, 22],
'Score': [85, 92, 78, 88, 95]}
df = pd.DataFrame(data)
# Valores NaN primero
df_na_first = df.sort_values(by='Age', na_position='first')
print("NaN primero:n", df_na_first)
# Valores NaN últimos
df_na_last = df.sort_values(by='Age', na_position='last')
print("nNaN último:n", df_na_last)
Ordenación por Múltiples Columnas
Puede extender esto fácilmente para ordenar por múltiples columnas pasando una lista al argumento by
. Pandas ordenará por la primera columna de la lista, luego por la segunda, y así sucesivamente.
# Ordenar por Edad (ascendente) luego por Puntuación (descendente)
df_multi = df.sort_values(by=['Age', 'Score'], ascending=[True, False])
print("nOrdenación multi-columna:n", df_multi)
Ordenación In-Place
Por defecto, sort_values()
devuelve un DataFrame ordenado *nuevo*. Para modificar el DataFrame directamente, establezca el argumento inplace
en True
. Tenga en cuenta que esto modifica el DataFrame original, así que tenga cuidado.
df.sort_values(by='Age', inplace=True)
print("nOrdenación in-place:n", df)
Al comprender y utilizar estos argumentos, puede ordenar eficiente y precisamente sus DataFrames de Pandas, optimizando su flujo de trabajo de análisis de datos.