Excel con Python y Pandas: importa datos

Actualizado el: 21/08/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

    Imagem ilustrativa de conteúdo Python para YouTube
    Automatización y Scripts
    Foto de perfil de Leandro Hirt da Academify

    YouTube con Python: descarga vídeos propios con yt-dlp

    Descarga copias de tus propios vídeos o contenido autorizado con Python y yt-dlp, validación, historial, límites, FFmpeg y prácticas responsables.

    Ler mais

    Tempo de leitura: 6 minutos
    12/07/2026
    Automação de postagens no Twitter usando Python
    Automatización y Scripts
    Foto de perfil de Leandro Hirt da Academify

    Tweepy: automatiza publicaciones en X con Python

    Automatiza publicaciones en X con Tweepy, credenciales seguras, validación, deduplicación, programación, logs y prácticas responsables contra el spam.

    Ler mais

    Tempo de leitura: 5 minutos
    12/07/2026
    Geração e edição de planilhas Excel usando Python
    Automatización y Scripts
    Foto de perfil de Leandro Hirt da Academify

    Excel con Python: crea y edita con openpyxl

    Crea y edita Excel con Pandas y openpyxl: hojas, fórmulas, estilos, filtros, validación, gráficos, rutas seguras y manejo de archivos

    Ler mais

    Tempo de leitura: 4 minutos
    12/07/2026
    Gerando aplicativo APK Android com Python
    Automatización y Scripts
    Foto de perfil de Leandro Hirt da Academify

    APK Android con Python, Kivy y Buildozer

    Genera un APK Android con Python, Kivy y Buildozer: configuración, permisos, recursos, compilación, pruebas, almacenamiento, firma y publicación.

    Ler mais

    Tempo de leitura: 6 minutos
    12/07/2026
    Web scraper de notícias em Python com envio para Telegram
    Automatización y Scripts
    Foto de perfil de Leandro Hirt da Academify

    Scraper de noticias con Python y Telegram

    Crea un scraper de noticias con Requests y Beautiful Soup, elimina duplicados y envía titulares a Telegram de forma segura

    Ler mais

    Tempo de leitura: 5 minutos
    11/07/2026
    Compactação de arquivos ZIP usando Python
    Automatización y Scripts
    Foto de perfil de Leandro Hirt da Academify

    zipfile: descomprime archivos ZIP con seguridad

    Descomprime archivos ZIP con Python de forma segura: valida rutas, evita Zip Slip, limita tamaños, verifica integridad y procesa archivos

    Ler mais

    Tempo de leitura: 4 minutos
    11/07/2026