Pandas es la librería de Python más usada para trabajar con datos en forma de tabla. Sirve para leer ficheros y bases de datos, limpiar y transformar datos, calcular estadísticas y preparar la información para un modelo de aprendizaje automático. Si vas a dedicarte a la ciencia de datos, es probablemente la primera librería que vas a aprender después del propio Python.

Un DataFrame de pandas con ventas por ciudad que, con groupby y sum, se agrupa en una tabla con el total de cada ciudad.

En esta guía explicamos qué es, para qué sirve y cómo dar los primeros pasos con ejemplos de código, incluidas las novedades de pandas 3.0.

Qué es pandas

Pandas es una librería de código abierto construida sobre NumPy. Aporta dos estructuras de datos:

  • Series: una columna de datos con un índice.
  • DataFrame: una tabla con filas y columnas, cada una con su tipo de dato.

Sobre ellas ofrece cientos de operaciones: leer y escribir CSV, Excel, JSON, Parquet o bases de datos SQL; filtrar y seleccionar; tratar valores que faltan; agrupar y agregar; unir tablas; y manejar fechas y series temporales.

Para qué sirve

  • Limpiar y preparar datos: corregir tipos, eliminar duplicados, rellenar huecos.
  • Explorar: ver distribuciones, detectar valores raros, calcular resúmenes.
  • Agregar: totales y medias por cliente, por mes o por región.
  • Combinar fuentes: cruzar ventas con clientes o con un catálogo de productos.
  • Trabajar con series temporales: remuestrear por semanas, calcular medias móviles.
  • Preparar datos para modelos: pandas es la entrada habitual de scikit-learn y de muchas otras librerías.

Instalación

pip install pandas pyarrow

pyarrow no es obligatorio, pero se recomienda: pandas 3.0 lo usa por debajo para trabajar con texto de forma más rápida y para leer y escribir ficheros Parquet.

Primeros pasos con un ejemplo

Supongamos un fichero ventas.csv con las columnas fecha, cliente_id, ciudad, producto, importe y descuento.

import pandas as pd

ventas = pd.read_csv("ventas.csv", parse_dates=["fecha"])

ventas.head()      # primeras filas
ventas.info()      # columnas, tipos y valores no nulos
ventas.describe()  # estadísticas de las columnas numéricas

Seleccionar y filtrar

madrid = ventas.loc[ventas["ciudad"] == "Madrid", ["fecha", "producto", "importe"]]
grandes = ventas.query("importe > 1000")

Crear columnas

ventas["importe_con_iva"] = ventas["importe"] * 1.21
ventas["mes"] = ventas["fecha"].dt.to_period("M")

Agrupar y resumir

por_ciudad = (
    ventas.groupby("ciudad")["importe"]
    .agg(total="sum", media="mean", pedidos="count")
    .sort_values("total", ascending=False)
)

Unir tablas

clientes = pd.read_csv("clientes.csv")
completo = ventas.merge(clientes, on="cliente_id", how="left")

Tratar los valores que faltan

ventas.isna().sum()  # cuántos faltan por columna
ventas["descuento"] = ventas["descuento"].fillna(0)
ventas = ventas.dropna(subset=["cliente_id"])

Guardar el resultado

por_ciudad.to_csv("resumen_por_ciudad.csv")
completo.to_parquet("ventas_completas.parquet")

Novedades de pandas 3.0

Pandas 3.0 se publicó en enero de 2026 y trae cambios que conviene conocer si vienes de versiones anteriores:

  • Nuevo tipo para texto: las columnas de texto se crean con el tipo str en lugar de object, más rápido y con menos memoria, sobre todo si tienes pyarrow instalado.
  • Copy-on-Write por defecto: el resultado de seleccionar una parte de un DataFrame se comporta siempre como una copia. Desaparece el famoso aviso SettingWithCopyWarning y la asignación encadenada deja de funcionar.
  • Expresiones con pd.col: una primera versión de una sintaxis más sencilla para crear columnas con assign.
  • Fechas con resolución en microsegundos por defecto, lo que evita errores con fechas anteriores a 1678 o posteriores a 2262.

El cambio que más código rompe es el de la asignación encadenada:

# Ya no funciona en pandas 3.0
ventas["descuento"][ventas["importe"] > 1000] = 0.1

# Forma correcta
ventas.loc[ventas["importe"] > 1000, "descuento"] = 0.1

Para actualizar un proyecto, el equipo de pandas recomienda pasar primero a la versión 2.3, corregir todos los avisos y después subir a la 3.0.

Pandas y el resto del ecosistema

Pandas no está solo. Con volúmenes que no caben cómodamente en memoria, Polars o DuckDB suelen ser más rápidos; para cálculo numérico se baja a NumPy; y para modelos se pasa a scikit-learn o PyTorch. Aun así, pandas sigue siendo el idioma común para explorar datos y el formato que entienden casi todas las librerías.

Pandas en la era de la IA generativa

Los asistentes y los agentes de código escriben código de pandas con mucha soltura: basta con describir la transformación que quieres. Pero cometen errores sutiles, como uniones que duplican filas, agrupaciones por la columna equivocada o fechas mal interpretadas. Entender pandas es lo que te permite revisar ese código y fiarte del resultado.