Pandas: DataFrames, filtros y agrupaciones

Actualizado el: 20/08/2026
Tempo de leitura: 3 minutos
Mesa de trabalho com laptop exibindo gráficos e a logo do Pandas em primeiro plano

Pandas en Python es una de las herramientas más utilizadas para trabajar con datos tabulares. Permite importar archivos, seleccionar columnas, filtrar filas, limpiar valores ausentes, agrupar información y exportar resultados mediante objetos llamados Series y DataFrame.

En esta guía aprenderás el flujo básico de Pandas desde la instalación hasta un pequeño análisis completo. La sección oficial Getting started de Pandas ofrece tutoriales introductorios, y la guía oficial de usuario documenta las operaciones avanzadas.

Instalar e importar Pandas

python -m pip install pandas
import pandas as pd

print(pd.__version__)

Utiliza un entorno virtual para evitar conflictos entre proyectos. La guía de venv en Python explica el proceso.

Crear una Series

import pandas as pd

ventas = pd.Series(
    [1200, 950, 1430],
    index=["enero", "febrero", "marzo"],
    name="ventas",
)

print(ventas)
print(ventas["febrero"])

Una Series representa una colección unidimensional con etiquetas.

Crear un DataFrame

datos = {
    "producto": ["Teclado", "Ratón", "Monitor"],
    "cantidad": [4, 8, 2],
    "precio": [45.0, 20.0, 210.0],
}

df = pd.DataFrame(datos)
print(df)

Un DataFrame organiza columnas con nombres y filas indexadas. Los diccionarios son una forma frecuente de construirlo; consulta la guía de diccionarios en Python para repasar esta estructura.

Leer CSV y Excel

ventas_csv = pd.read_csv("ventas.csv")
ventas_excel = pd.read_excel(
    "ventas.xlsx",
    sheet_name="Datos",
)

Para archivos CSV, revisa la guía de CSV en Python. Para seleccionar hojas, columnas y motores de Excel, consulta cómo importar Excel con Pandas.

Inspeccionar los datos

print(df.head())
print(df.tail())
print(df.shape)
print(df.columns)
print(df.dtypes)
print(df.info())
print(df.describe())

Inspecciona siempre antes de limpiar. Los tipos inferidos pueden no coincidir con el significado real de una columna.

Seleccionar columnas

productos = df["producto"]
resumen = df[["producto", "precio"]]

Seleccionar filas con loc e iloc

primera_fila = df.iloc[0]
primeras_dos = df.iloc[:2]

productos_caros = df.loc[
    df["precio"] > 40,
    ["producto", "precio"],
]

iloc usa posiciones enteras. loc usa etiquetas y condiciones.

Filtrar datos

filtro = (
    (df["cantidad"] >= 3)
    & (df["precio"] < 100)
)

seleccion = df[filtro]

Usa &, | y ~ con condiciones entre paréntesis. Los operadores booleanos normales and y or no funcionan elemento por elemento en una Series.

Crear y modificar columnas

df["total"] = df["cantidad"] * df["precio"]
df["producto"] = df["producto"].str.strip().str.title()

Las operaciones vectorizadas suelen ser más claras y rápidas que recorrer fila por fila.

Valores ausentes

print(df.isna().sum())

df["cantidad"] = df["cantidad"].fillna(0)
df = df.dropna(subset=["producto"])

Antes de rellenar, define qué significa la ausencia. Cero, cadena vacía y dato desconocido no son equivalentes.

Convertir tipos

df["cantidad"] = pd.to_numeric(
    df["cantidad"],
    errors="coerce",
).astype("Int64")

df["fecha"] = pd.to_datetime(
    df["fecha"],
    errors="coerce",
)

errors="coerce" convierte valores inválidos en ausentes, que después deben revisarse.

Agrupar y resumir

resumen = (
    df.groupby("categoria", as_index=False)
    .agg(
        ventas_totales=("total", "sum"),
        precio_medio=("precio", "mean"),
        registros=("producto", "count"),
    )
    .sort_values("ventas_totales", ascending=False)
)

La guía de análisis de datos con Pandas y NumPy amplía agrupaciones, limpieza y flujos completos.

Combinar DataFrames

ventas = pd.DataFrame({
    "producto_id": [1, 2, 1],
    "cantidad": [3, 2, 4],
})

productos = pd.DataFrame({
    "producto_id": [1, 2],
    "nombre": ["Teclado", "Ratón"],
})

resultado = ventas.merge(
    productos,
    on="producto_id",
    how="left",
)

Verifica siempre la unicidad de las claves. Un merge con duplicados inesperados puede multiplicar filas.

Ordenar y eliminar duplicados

df = df.sort_values(
    ["categoria", "precio"],
    ascending=[True, False],
)

df = df.drop_duplicates(
    subset=["producto", "fecha"],
    keep="last",
)

Exportar resultados

df.to_csv(
    "ventas_limpias.csv",
    index=False,
    encoding="utf-8",
)

resumen.to_excel(
    "resumen.xlsx",
    index=False,
)

Proyecto práctico

import pandas as pd


def crear_resumen(ruta_origen, ruta_destino):
    df = pd.read_csv(ruta_origen)

    requeridas = {
        "producto",
        "categoria",
        "cantidad",
        "precio",
    }
    faltantes = requeridas - set(df.columns)

    if faltantes:
        raise ValueError(
            f"Faltan columnas: {sorted(faltantes)}"
        )

    df["cantidad"] = pd.to_numeric(
        df["cantidad"],
        errors="coerce",
    )
    df["precio"] = pd.to_numeric(
        df["precio"],
        errors="coerce",
    )

    df = df.dropna(
        subset=["producto", "cantidad", "precio"]
    )
    df = df[
        (df["cantidad"] >= 0)
        & (df["precio"] >= 0)
    ].copy()
    df["total"] = df["cantidad"] * df["precio"]

    resumen = (
        df.groupby("categoria", as_index=False)["total"]
        .sum()
        .sort_values("total", ascending=False)
    )
    resumen.to_csv(ruta_destino, index=False)
    return resumen

Errores frecuentes

  • Modificar una vista sin usar .copy().
  • Confiar en tipos inferidos sin inspeccionarlos.
  • Rellenar todos los ausentes con el mismo valor.
  • Usar bucles fila por fila para operaciones vectorizables.
  • Realizar un merge sin validar claves y cardinalidad.
  • Cargar columnas innecesarias de archivos enormes.
  • Sobrescribir el archivo original antes de revisar el resultado.

Conclusión

Pandas en Python ofrece un flujo consistente para importar, inspeccionar, limpiar, transformar, agrupar y exportar datos. Empieza verificando columnas y tipos, aplica reglas explícitas para valores ausentes y conserva una copia del origen. La productividad de Pandas aumenta cuando el proceso es reproducible y cada transformación puede explicarse.

Compartilhe:

Facebook
WhatsApp
Twitter
LinkedIn

Contenido del artículo

    Artículos relacionados

    Logo do Numpy em um fundo roxo-escuro
    Ciencia de Datos
    Foto de perfil de Leandro Hirt da Academify

    NumPy: arrays y cálculo numérico en Python

    Aprende NumPy desde cero: arrays, dtype, shape, slicing, vistas, vectorización, broadcasting, filtros, estadísticas y matrices.

    Ler mais

    Tempo de leitura: 4 minutos
    11/07/2026
    Limpeza de dados sujos em Python para data cleaning
    Ciencia de Datos
    Foto de perfil de Leandro Hirt da Academify

    Pandas: limpia datos sucios en Python

    Limpia datos sucios con Pandas: valores ausentes, duplicados, fechas, números, texto, categorías, outliers y validaciones reproducibles.

    Ler mais

    Tempo de leitura: 4 minutos
    11/07/2026
    logos do Python, Pandas e NumPy numa mesa de madeira
    Ciencia de Datos
    Foto de perfil de Leandro Hirt da Academify

    Análisis de datos con Python, Pandas y NumPy

    Aprende análisis de datos con Python, NumPy y Pandas: arrays, DataFrames, limpieza, filtros, agrupaciones, merges y exportación.

    Ler mais

    Tempo de leitura: 4 minutos
    11/07/2026
    representação de IA com código binário na tela
    Ciencia de Datos
    Foto de perfil de Leandro Hirt da Academify

    Scikit-Learn: clasificación, regresión y pipelines

    Aprende Scikit-Learn desde cero: prepara datos, entrena clasificación y regresión, usa pipelines, métricas, validación y evita fugas de datos.

    Ler mais

    Tempo de leitura: 5 minutos
    11/07/2026
    Logo do matplotlib em um fundo branco
    Ciencia de Datos
    Foto de perfil de Leandro Hirt da Academify

    Matplotlib: crea gráficos en Python

    Aprende Matplotlib en Python para crear gráficos de líneas, barras, dispersión, histogramas, subplots y archivos de alta resolución.

    Ler mais

    Tempo de leitura: 4 minutos
    11/07/2026
    Visualização de dados com Plotly em Python
    Ciencia de Datos
    Foto de perfil de Leandro Hirt da Academify

    Plotly: crea gráficos interactivos en Python

    Aprende Plotly en Python para crear gráficos interactivos de líneas, barras y dispersión, personalizar figuras, usar Pandas y exportar resultados.

    Ler mais

    Tempo de leitura: 5 minutos
    11/07/2026