Ordenación de datos en Pandas (sort_values
)
El método sort_values()
se usa para ordenar un DataFrame
según los valores de una o más columnas.
Ordenar por una columna
import pandas as pd
df = pd.DataFrame({
'Nombre': ['Ana', 'Luis', 'Carlos', 'Sofía'],
'Edad': [23, 25, 20, 22]
})
# Ordenar por la columna 'Edad' en orden ascendente (predeterminado)
ordenado_asc = df.sort_values(by='Edad')
print(ordenado_asc)
Salida:
Nombre Edad
2 Carlos 20
3 Sofía 22
0 Ana 23
1 Luis 25
Ordenar en orden descendente
Para ordenar de mayor a menor, se usa ascending=False
.
ordenado_desc = df.sort_values(by='Edad', ascending=False)
print(ordenado_desc)
Ordenar por múltiples columnas
Si se quiere ordenar por más de una columna, se pasa una lista:
# Ordenar por 'Edad' y, en caso de empate, por 'Nombre'
df.sort_values(by=['Edad', 'Nombre'], ascending=[True, True])
Filtrado de datos en Pandas (loc
, query
y máscaras booleanas)
Filtrar datos es fundamental en la manipulación de datos. Existen varios métodos eficientes para hacerlo en Pandas.
Filtrar con condiciones (loc
y máscaras booleanas)
Se pueden filtrar filas según condiciones lógicas aplicadas sobre las columnas:
# Filtrar filas donde la edad sea mayor a 22
df_filtrado = df[df['Edad'] > 22]
print(df_filtrado)
Salida:
Nombre Edad
0 Ana 23
1 Luis 25
También se puede usar .loc[]
para mayor claridad:
df_filtrado = df.loc[df['Edad'] > 22]
Filtrar con query()
El método query()
permite expresar condiciones de manera más legible y concisa:
df_filtrado = df.query('Edad > 22')
Filtrar con múltiples condiciones
Se pueden combinar condiciones con &
(AND) y |
(OR):
# Filtrar personas mayores de 21 y cuyo nombre empiece con 'A' o 'S'
df_filtrado = df[(df['Edad'] > 21) & (df['Nombre'].str.startswith(('A', 'S')))]
print(df_filtrado)
Usando query()
, la misma consulta se puede escribir como:
df.query("Edad > 21 and Nombre.str.startswith(('A', 'S'))")