Volver a la lista

Procesamiento de DataFrames: filtrado, ordenación y agrupación.

Aprenda las técnicas esenciales para extraer, ordenar y agregar datos en un DataFrame de pandas.

Principiante
|
9min
|
Verificado (2026-07)
DataFramefiltradoordenacióngroupbytransformación de datos
Progreso0/17 (0%)

Procesamiento de DataFrames: filtrado, ordenación y agrupación

Al finalizar este tema

Podrá extraer datos de un DataFrame de pandas mediante condiciones, ordenarlos y realizar agregaciones por grupos.


Preparación de los datos

python
import pandas as pd
df = pd.DataFrame({
"nombre": ["Ana", "Luis", "Pablo", "Carmen", "Sofía"],
"departamento": ["Desarrollo", "Marketing", "Desarrollo", "Marketing", "Desarrollo"],
"edad": [30, 25, 35, 28, 32],
"salario": [5000, 3500, 6000, 4000, 5500]
})

Con esta tabla de cinco filas, podrás aprender todas las técnicas clave.


Selección de columnas

python
# Una columna — devuelve una Serie
df["nombre"]
# Varias columnas — devuelve un DataFrame
df[["nombre", "salario"]]
# Añadir una columna
df["salario_neto"] = df["salario"] * 0.85
# Eliminar una columna
df = df.drop(columns=["salario_neto"])

Preste atención a la diferencia entre un solo corchete (df["nombre"]) y doble corchete (df[["nombre", "salario"]]). Un solo corchete devuelve una Serie, y doble corchete devuelve un DataFrame.


Filtrado — Extracción de filas mediante condiciones

python
# Una condición
df[df["edad"] >= 30]
# nombre departamento edad salario
# 0 Ana Desarrollo 30 5000
# 2 Pablo Desarrollo 35 6000
# 4 Sofía Desarrollo 32 5500
# Condición compuesta — & (AND), | (OR)
df[(df["departamento"] == "Desarrollo") & (df["salario"] >= 5500)]
# nombre departamento edad salario
# 2 Pablo Desarrollo 35 6000
# 4 Sofía Desarrollo 32 5500
# Buscar texto incluido
df[df["nombre"].str.contains("Ana")]
# Coincidir con uno de los valores de una lista
df[df["departamento"].isin(["Desarrollo", "Planificación"])]

Encierre las condiciones entre () y conéctelas con & o |. Esto es diferente a los operadores and/or de Python: al filtrar DataFrames, es obligatorio usar &/|.


Ordenación

python
# Por una columna
df.sort_values("salario") # Ascendente (menor→mayor)
df.sort_values("salario", ascending=False) # Descendente
# Por varias columnas
df.sort_values(["departamento", "salario"], ascending=[True, False])
# Departamento ascendente → salario descendente dentro del mismo departamento
# Restablecer el índice (porque queda desordenado después de ordenar)
df_sorted = df.sort_values("salario").reset_index(drop=True)

Si no se incluye reset_index(drop=True), el índice original se mantiene, resultando en un orden como 0, 3, 1, 4, 2.


Agregación por grupos — groupby

Es una de las herramientas más potentes para el análisis de datos. Responde a preguntas como "¿cuál es el salario promedio por departamento?" con una sola línea.

python
# Básico — promedio por departamento
df.groupby("departamento")["salario"].mean()
# Desarrollo 5500.0
# Marketing 3750.0
# Varias funciones de agregación
df.groupby("departamento")["salario"].agg(["mean", "min", "max", "count"])
# mean min max count
# Desarrollo 5500 5000 6000 3
# Marketing 3750 3500 4000 2
# Agregar varias columnas
df.groupby("departamento").agg({
"salario": "mean",
"edad": "max"
})
# salario edad
# Desarrollo 5500 35
# Marketing 3750 28

groupby es un concepto similar al GROUP BY de SQL. Funciona mediante el patrón división (split) → aplicación (apply) → combinación (combine).


Patrón práctico: procesamiento integral

python
# "Personas de Desarrollo con salario de al menos 5000, por salario descendente"
result = (
df[df["departamento"] == "Desarrollo"]
.query("salario >= 5000")
.sort_values("salario", ascending=False)
.reset_index(drop=True)
)
# Número de personas y salario promedio por departamento
summary = (
df.groupby("departamento")
.agg(
personas=("nombre", "count"),
salario_promedio=("salario", "mean"),
salario_máximo=("salario", "max")
)
.sort_values("salario_promedio", ascending=False)
)

.query() es una forma de definir condiciones mediante cadenas de texto. En condiciones complejas, ofrece una mejor legibilidad que df[(df["a"] > 1) & (df["b"] < 5)].


Resumen de los métodos más utilizados

TareaMétodoEjemplo
Filtro de condicionesdf[condición]df[df["edad"] > 30]
Selección de columnasdf[["a", "b"]]df[["nombre", "salario"]]
Ordenaciónsort_values()df.sort_values("salario")
Agregación por grupogroupby().agg()df.groupby("departamento")["salario"].mean()
Los N primerosnlargest() / nsmallest()df.nlargest(3, "salario")
Valores únicosunique() / nunique()df["departamento"].nunique()
Distribución de valoresvalue_counts()df["departamento"].value_counts()

Resumen clave

El procesamiento de DataFrames es el proceso de expresar en código "qué es lo que se quiere ver". Con solo cuatro verbos — filtrar (¿qué filas?), ordenar (¿en qué orden?), agrupar (¿bajo qué criterio?) y agregar (¿qué calcular?) — se puede responder a la mayoría de las preguntas sobre los datos. Si conoces SQL, puedes considerarlo como una correspondencia 1:1 con SELECT ... WHERE ... GROUP BY ... ORDER BY.


💬 Preguntas y comentarios

0 comentarios

Puedes publicar sin iniciar sesión. Los comentarios de invitados no pueden editarse ni eliminarse después.

0/2000

Cargando...