Volver a la lista

Manejo de archivos CSV y Excel

Aprenda el flujo de trabajo básico para leer, procesar y guardar archivos CSV y Excel con pandas.

Principiante
|
8min
|
Verificado (2026-07)
CSVExcelpandasentrada/salida de datosformato de archivo
Progreso0/17 (0%)

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:

text
nombre,edad,cuidad
Kim Hun,30,Seúl
Lee Su,25,Pusan
Park Jin,35,Daejeon

Es 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

python
import pandas as pd
# Lectura básica
df = pd.read_csv("data.csv")
# Especificar codificación — evitar caracteres corruptos
df = pd.read_csv("data.csv", encoding="cp949")
# El CSV en Hangul guardado desde Windows Excel es cp949 (o euc-kr)
# UTF-8 BOM
df = 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-8utf-8-sigcp949euc-kr.


Lectura de archivos CSV: opciones avanzadas

python
# Leer solo columnas específicas — Ahorro de memoria
# Cuando el separador no es una coma
df = pd.read_csv("data.tsv", sep="\t") # separador de tabulación
df = pd.read_csv("data.txt", sep="|") # separador de tubería
# archivo sin encabezado
df = pd.read_csv("data.csv", header=None,
names=["col1", "col2", "col3"])
# especificar filas para omitir
df = pd.read_csv("data.csv", skiprows=2) # omite las primeras 2 filas
# archivos grandes — leer en fragmentos
for chunk in pd.read_csv("big.csv", chunksize=10000):
process(chunk) # procesa por lotes de 10.000 filas

chunksize 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

python
# lectura predeterminada (primera hoja)
df = pd.read_excel("report.xlsx")
# hoja específica
df = pd.read_excel("report.xlsx", sheet_name="ventas")
# varias hojas a la vez
sheets = 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 celdas
df = pd.read_excel("report.xlsx",
usecols="B:E", # Solo columnas B a E
skiprows=3, # Saltar las primeras 3 filas
nrows=100) # Solo 100 filas

Para leer archivos de Excel, se necesita el paquete openpyxl (pip install openpyxl).


Guardar archivo

python
# Guardar como CSV
df.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 Excel
df.to_excel("output.xlsx", index=False, sheet_name="Resultado")
# Guardar en múltiples hojas
with 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.

python
import glob
# Buscar todos los CSV en la carpeta
files = glob.glob("monthly_data/*.csv")
print(f"Se encontraron {len(files)} archivos")
# Leer y combinar
dfs = []
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 resultado
df_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".


💬 Preguntas y comentarios

0 comentarios

Puedes publicar sin iniciar sesión. Los comentarios de invitados no pueden editarse ni eliminarse después.

0/2000

Cargando...