Fundamentos de pandas: Operaciones básicas de lectura y escritura

La automatización de hojas de cálculo con Python permite procesar datos de manera eficiente utilizando bibliotecas como openpyxl y pandas. Esta técnica es aplicable en diversos contextos:

1. Lectura y escritura de datos

  • Procesamiento masivo de múltiples libros de trabajo (formatos xls/xlsx/csv)
  • Generación dinámica de reportes con formato personalizado (fuentes, bordes, colores)
  • Ejemplo: Consolidación mensual de datos de ventas de 20 sucursales

2. Limpieza de datos

  • Gestión de valores faltantes (relleno automático o eliminación de filas vacías)
  • Estandarización de formatos (fechas, monedas)
  • Detección de valores atípicos (marcado automático)
  • Ejemplo: Normalización de tablas de clientes (eliminación de duplicados, completado de contactos)

3. Flujos automatizados

  • Tareas programadas (generación automática de informes diarios)
  • Envío automático de correos con archivos adjuntos
  • Integración con bases de datos (exportación SQL a Excel)
  • Ejemplo: Sistema de recursos humanos para generar nóminas y distribuirlas por correo

Consideraciones importantes:

  1. Respaldar los archivos originales antes de procesarlos
  2. Para grandes volúmenes de datos (más de 100,000 filas), procesar en bloques
  3. Verificar compatibilidad entre diferentes versiones de Excel

Operaciones fundamentales

Método read_excel()

Para importar datos desde Excel, se utiliza la función read_excel() de pandas:

import pandas as pd

ruta_archivo = "D:/documentos/datos.xlsx"
df = pd.read_excel(ruta_archivo)
print(df.head())

Esta función acepta varios parámetros opcionales:

Parámetro Descripción
io Ruta del archivo. Obligatorio.
sheet_name Nombre o índice de la hoja (comienza en 0)
skiprows Número de filas iniciales a omitir
skipfooter Número de filas finales a omitir
usecols Columnas a leer (ej: "A:D" o "A,C,F")
names Lista para renombrar encabezados

Ejemplo práctico

Dado un archivo con encabezados combinados que se pierden al seleccionar un rango específico, podemos especificar nuevos nombres:

import pandas as pd

ruta = 'D:/evaluaciones/resultados.xlsx'
nombres_columnas = [
    'estudiante', 'identificador', 'lenguaje', 'matematicas',
    'ingles', 'etica', 'educacion_fisica', 'artes', 'trabajo', 'puntuacion_total'
]

df = pd.read_excel(
    ruta,
    skiprows=7,
    skipfooter=5,
    usecols="B:K",
    names=nombres_columnas
)
print(df.head())

Función concat() para fusionar archivos

Cuando se tienen múltiples archivos con estructura idéntica (por ejemplo, datos de diferentes departamentos), se pueden combinar mediante concat().

Primero, importamos las bibliotecas necesarias:

import pandas as pd
import glob
import os

Definimos la carpeta que contiene los archivos:

ruta_carpeta = 'D:/informes/departamentos'

Utilizando os.path.join() para crear rutas compatibles con cualquier sistema operativo:

patron_busqueda = os.path.join(ruta_carpeta, '*.xlsx')

La función glob.glob() retorna una lista con las rutas de archivos que coinicden:

archivos_encontrados = glob.glob(patron_busqueda)

Para incluir ambos formatos (xlsx y xls), se combinan las listas:

archivos_excel = glob.glob(os.path.join(ruta_carpeta, '*.xlsx')) + \
                  glob.glob(os.path.join(ruta_carpeta, '*.xls'))

Ahora iteramos sobre cada archivo y almacenamos los DataFrames:

todos_los_datos = []

for ruta_archivo in archivos_excel:
    try:
        dataframe = pd.read_excel(ruta_archivo)
        todos_los_datos.append(dataframe)
    except Exception as error:
        print(f"Error al procesar {ruta_archivo}: {error}")

Finalmente, combinamos todos los DataFrames en uno solo:

df_final = pd.concat(todos_los_datos, ignore_index=True)

Parámetros principales de concat():

Parámetro Descripción
objs Lista de DataFrames. Obligatorio.
ignore_index True: reiniciar índices. False: mantener originales.
axis 0 o 'index': apilar verticalmente. 1 o 'columns': concatenar horizontalmente.

Método to_excel() para exportación

Una vez procesada la información, se puede guardar en un nuevo archivo Excel. Es importante verificar que el objeto sea un DataFrame:

print(type(todos_los_datos))    # <class 'list'>
print(type(df_final))           # <class 'pandas.core.frame.DataFrame'>

Parámetros常用 de to_excel():

Parámetro Descripción
excel_writer Ruta y nombre del archivo de salida. Obligatorio.
sheet_name Nombre de la hoja (por defecto: Sheet1)
na_rep Representación de valores NaN (por defecto: cadena vacía)
float_format Formato de números decimales (ej: '%.2f' para dos decimales)
columns Columnas específicas a exportar
header True/False o lista de nombres personalizados
index Incluir índice de fila (por defecto: True)

Ejemplo básico de exportación:

df_final.to_excel('D:/resultados/procesado.xlsx', index=False)

Etiquetas: pandas Python Excel automacion dataframe

Publicado el 8-30 21:01