Manipulación de archivos CSV y Excel
Al finalizar este tema
Podrás leer y escribir archivos CSV y Excel con pandas, y resolver problemas comunes en el ámbito profesional relacionados con la codificación, la selección de hojas de cálculo y la especificación de columnas.
¿Qué es un CSV?
CSV (Comma-Separated Values) es un archivo de texto delimitado por comas. Si lo abres con el Bloc de notas, tendrá este aspecto:
nombre,edad,cuidad
Kim Hun,30,Seúl
Lee Su,25,Pusan
Park Jin,35,DaejeonEs el formato de intercambio de datos más común. Se puede leer en cualquier lenguaje de programación y sistema operativo. Excel, Google Sheets y las bases de datos son compatibles con la exportación a CSV.
Lectura de archivos CSV
import pandas as pd
# Lectura básicadf = pd.read_csv("data.csv")
# Especificar codificación — evitar caracteres corruptosdf = pd.read_csv("data.csv", encoding="cp949")# El CSV en Hangul guardado desde Windows Excel es cp949 (o euc-kr)
# UTF-8 BOMdf = pd.read_csv("data.csv", encoding="utf-8-sig")Si al leer un archivo CSV en coreano aparece UnicodeDecodeError, es un problema de codificación. Pruebe las siguientes opciones en orden: utf-8 → utf-8-sig → cp949 → euc-kr.
Lectura de archivos CSV: opciones avanzadas
# Leer solo columnas específicas — Ahorro de memoria
# Cuando el separador no es una comadf = pd.read_csv("data.tsv", sep="\t") # separador de tabulacióndf = pd.read_csv("data.txt", sep="|") # separador de tubería
# archivo sin encabezadodf = pd.read_csv("data.csv", header=None, names=["col1", "col2", "col3"])
# especificar filas para omitirdf = pd.read_csv("data.csv", skiprows=2) # omite las primeras 2 filas
# archivos grandes — leer en fragmentosfor chunk in pd.read_csv("big.csv", chunksize=10000): process(chunk) # procesa por lotes de 10.000 filaschunksize evita errores de memoria insuficiente al procesar archivos grandes (de varios cientos de MB o más). En lugar de cargar todo el archivo en la memoria de una sola vez, lo procesa en fragmentos.
Lectura de archivos Excel
# lectura predeterminada (primera hoja)df = pd.read_excel("report.xlsx")
# hoja específicadf = pd.read_excel("report.xlsx", sheet_name="ventas")
# varias hojas a la vezsheets = pd.read_excel("report.xlsx", sheet_name=None)# {'Hoja1': DataFrame, 'ventas': DataFrame, 'costos': DataFrame}
for name, data in sheets.items(): print(f"{name}: {len(data)} filas")
# Especificar rango de celdasdf = pd.read_excel("report.xlsx", usecols="B:E", # Solo columnas B a E skiprows=3, # Saltar las primeras 3 filas nrows=100) # Solo 100 filasPara leer archivos de Excel, se necesita el paquete openpyxl (pip install openpyxl).
Guardar archivo
# Guardar como CSVdf.to_csv("output.csv", index=False, encoding="utf-8-sig")# index=False: Excluir columna de números de fila# utf-8-sig: Evita que los caracteres coreanos se desformaten al abrir en Excel
# Guardar como Exceldf.to_excel("output.xlsx", index=False, sheet_name="Resultado")
# Guardar en múltiples hojaswith pd.ExcelWriter("output.xlsx") as writer: df_sales.to_excel(writer, sheet_name="Ventas", index=False) df_cost.to_excel(writer, sheet_name="Costos", index=False)Al guardar en formato CSV, si se utiliza la opción encoding="utf-8-sig", los caracteres coreanos se mostrarán correctamente al abrir el archivo en Excel para Windows. Por otro lado, al guardar con la opción utf-8, es frecuente que los caracteres se distorsionen al abrirlo en Excel.
Flujo de trabajo práctico: Combinación de archivos CSV
Es una tarea común combinar varios archivos CSV mensuales en un único archivo.
import glob
# Buscar todos los CSV en la carpetafiles = glob.glob("monthly_data/*.csv")print(f"Se encontraron {len(files)} archivos")
# Leer y combinardfs = []for f in sorted(files): temp = pd.read_csv(f, encoding="utf-8-sig") temp["source_file"] = f # Registrar nombre del archivo original dfs.append(temp)
df_all = pd.concat(dfs, ignore_index=True)print(f"Total de {len(df_all)} filas")
# Guardar resultadodf_all.to_csv("merged_all.csv", index=False, encoding="utf-8-sig")Si no se incluye ignore_index=True, el índice de cada archivo se mantiene, de modo que la secuencia es 0, 1, 2, ..., 0, 1, 2, ....
Resumen clave
CSV y Excel son el punto de entrada y salida para el análisis de datos. En general, los datos externos se reciben en formato CSV/Excel y los resultados también se entregan en este formato. Si se comprenden bien estos tres aspectos: codificación (utf-8-sig vs cp949), selección de hojas y especificación de columnas, se puede resolver el 90% de los problemas relacionados con "el archivo no se abre".