Cómo importar archivos Excel en Python con Pandas

Publicado el: 11/07/2026
Tempo de leitura: 3 minutos
Logos do Python e Excel lado a lado representando a importação de dados do Excel para Python.

Importar archivos Excel en Python permite automatizar informes, validar datos, combinar hojas y preparar información para análisis. Pandas ofrece una interfaz cómoda para leer tablas y convertirlas en DataFrames, mientras que openpyxl funciona como motor para archivos .xlsx y permite tareas más específicas sobre libros y celdas.

En esta guía aprenderás a instalar las dependencias, seleccionar hojas y columnas, controlar tipos, limpiar valores ausentes, trabajar con fechas y exportar resultados. Para comprender la estructura utilizada, consulta la guía de Pandas para principiantes.

Instalar Pandas y openpyxl

python -m pip install pandas openpyxl

Trabaja dentro de un entorno aislado y registra las dependencias del proyecto. La documentación de pandas.read_excel() enumera los formatos, motores y parámetros disponibles. La documentación oficial de openpyxl cubre lectura y escritura de libros de Excel.

Leer una hoja completa

import pandas as pd

df = pd.read_excel("ventas.xlsx")
print(df.head())
print(df.info())

Por defecto se lee la primera hoja. head() muestra una muestra y info() ayuda a detectar columnas, tipos y valores ausentes.

Elegir una hoja

df = pd.read_excel(
    "ventas.xlsx",
    sheet_name="Enero",
)

Para cargar varias hojas en un diccionario de DataFrames:

hojas = pd.read_excel(
    "ventas.xlsx",
    sheet_name=["Enero", "Febrero"],
)

enero = hojas["Enero"]
febrero = hojas["Febrero"]

Listar hojas antes de importar

import pandas as pd

with pd.ExcelFile("ventas.xlsx") as libro:
    print(libro.sheet_names)
    df = pd.read_excel(libro, sheet_name=libro.sheet_names[0])

Este patrón evita asumir que una hoja existe y permite seleccionar dinámicamente.

Importar columnas específicas

df = pd.read_excel(
    "ventas.xlsx",
    usecols=["Fecha", "Producto", "Cantidad", "Precio"],
)

Leer solamente las columnas necesarias reduce memoria y hace explícito el esquema esperado.

Controlar encabezados y filas

df = pd.read_excel(
    "reporte.xlsx",
    sheet_name="Datos",
    skiprows=2,
    header=0,
    nrows=5000,
)

Las hojas empresariales suelen incluir títulos o notas antes de la tabla. Comprueba visualmente dónde comienza el encabezado real.

Convertir tipos y fechas

df = pd.read_excel(
    "ventas.xlsx",
    parse_dates=["Fecha"],
    dtype={
        "Producto": "string",
        "Cantidad": "Int64",
    },
)

No fuerces un tipo antes de inspeccionar los valores. Celdas mezcladas, textos inesperados o identificadores con ceros iniciales pueden requerir limpieza. La guía de datetime en Python ayuda a trabajar con fechas después de la importación.

Limpiar nombres de columnas

df.columns = (
    df.columns
    .astype(str)
    .str.strip()
    .str.lower()
    .str.replace(" ", "_", regex=False)
)

Un esquema predecible simplifica filtros, agrupaciones y exportaciones.

Tratar valores ausentes

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

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

No sustituyas todos los valores ausentes con cero sin analizar su significado. Una celda vacía puede representar un dato desconocido, no aplicable o un error.

Filtrar y calcular columnas

df["total"] = df["cantidad"] * df["precio"]

ventas_validas = df[
    (df["cantidad"] > 0)
    & (df["precio"] >= 0)
]

resumen = (
    ventas_validas
    .groupby("producto", as_index=False)["total"]
    .sum()
    .sort_values("total", ascending=False)
)

La guía de análisis de datos con Pandas y NumPy explica filtros, agrupaciones y resúmenes.

Combinar hojas mensuales

import pandas as pd

hojas = pd.read_excel(
    "ventas-anuales.xlsx",
    sheet_name=None,
)

partes = []
for nombre_hoja, datos in hojas.items():
    copia = datos.copy()
    copia["origen"] = nombre_hoja
    partes.append(copia)

ventas = pd.concat(partes, ignore_index=True)

sheet_name=None devuelve todas las hojas. Añadir el nombre de origen permite rastrear cada fila.

Exportar el resultado

with pd.ExcelWriter(
    "resultado.xlsx",
    engine="openpyxl",
) as escritor:
    ventas_validas.to_excel(
        escritor,
        sheet_name="Datos limpios",
        index=False,
    )
    resumen.to_excel(
        escritor,
        sheet_name="Resumen",
        index=False,
    )

Para intercambios simples y archivos grandes, CSV puede ser más ligero. La guía de archivos CSV en Python compara un flujo basado en texto.

Manejar errores frecuentes

from pathlib import Path
import pandas as pd

ruta = Path("ventas.xlsx")

try:
    df = pd.read_excel(ruta, sheet_name="Datos")
except FileNotFoundError:
    print(f"No existe el archivo: {ruta}")
except ValueError as error:
    print(f"Hoja o configuración no válida: {error}")
except ImportError:
    print("Falta el motor necesario para leer Excel")

La guía de try y except en Python muestra cómo manejar errores sin ocultar fallos inesperados. Para rutas, consulta pathlib en Python.

Buenas prácticas

  • Conserva una copia del archivo original.
  • Valida hojas y columnas antes de transformar datos.
  • Lee solo las columnas necesarias.
  • Documenta tipos, formatos de fecha y valores ausentes.
  • No confíes en estilos visuales como fuente de significado.
  • Exporta a un archivo nuevo antes de reemplazar resultados.
  • Prueba con archivos pequeños y casos problemáticos.

Conclusión

Importar Excel en Python con Pandas funciona mejor cuando el proceso define un esquema claro: archivo, hoja, columnas, tipos y reglas de limpieza. Inspecciona los datos antes de convertirlos, conserva el origen y exporta resultados verificables. Pandas resuelve el trabajo tabular, mientras openpyxl complementa las tareas específicas del formato Excel.

Compartilhe:

Facebook
WhatsApp
Twitter
LinkedIn

Contenido del artículo

    Artículos relacionados

    Python e ícone de e-mail sobre teclado de notebook
    Automatización y Scripts
    Foto de perfil de Leandro Hirt da Academify

    Cómo automatizar correos electrónicos con Python

    Automatiza correos con Python usando EmailMessage y smtplib, variables de entorno, HTML, adjuntos, destinatarios múltiples y manejo de errores.

    Ler mais

    Tempo de leitura: 3 minutos
    11/07/2026
    Logo do Python com o texto 'Python argparse CLI' abaixo
    Automatización y Scripts
    Foto de perfil de Leandro Hirt da Academify

    Cómo crear una CLI en Python con argparse

    Crea una CLI en Python con argparse: argumentos, banderas, tipos, choices, subcomandos, validación, pruebas y empaquetado moderno.

    Ler mais

    Tempo de leitura: 3 minutos
    11/07/2026