Archivos CSV
1. Qué es un archivo CSV? #
Un CSV (Comma-Separated Values) es un archivo de texto plano que utiliza comas para separar valores. Cada línea del archivo representa una fila de datos, y cada valor separado por comas representa una columna. Los archivos CSV son una manera común de almacenar datos tabulares, como una hoja de cálculo o una tabla de base de datos, en un formato simple y fácil de leer.
2. Manejo de archivos CSV en Python #
Python facilita el trabajo con archivos CSV gracias al módulo csv, que viene incluido en la biblioteca estándar.
3. Leer un archivo CSV #
Supongamos que tienes un archivo CSV llamado datos.csv con el siguiente contenido:
nombre,edad,ciudad
Ana,28,Madrid
Luis,34,Barcelona
Eva,22,Sevilla
Vamos a leer este archivo y mostrar su contenido en pantalla.
Ejemplo: Leer un archivo CSV #
1import csv 2 3# Abrir el archivo CSV en modo lectura 4with open('datos.csv', mode='r') as archivo: 5 lector_csv = csv.reader(archivo) 6 7 # Recorrer las filas del archivo 8 for fila in lector_csv: 9 print(fila)
- ¿Qué hace este código?:
- Abre el archivo
datos.csven modo lectura ('r'). - Usa
csv.readerpara crear un objeto lector que permite recorrer cada fila del archivo. - Imprime cada fila como una lista de valores.
- Abre el archivo
- Resultado en pantalla:
['nombre', 'edad', 'ciudad'] ['Ana', '28', 'Madrid'] ['Luis', '34', 'Barcelona'] ['Eva', '22', 'Sevilla']
4. Escribir en un archivo CSV #
Ahora supongamos que quieres crear un archivo CSV nuevo con algunos datos.
Ejemplo: Escribir en un archivo CSV #
1import csv 2 3# Datos que queremos escribir 4datos = [ 5 ["nombre", "edad", "ciudad"], 6 ["Carlos", "30", "Valencia"], 7 ["María", "25", "Bilbao"], 8 ["Pedro", "35", "Málaga"] 9] 10 11# Abrir el archivo CSV en modo escritura 12with open('nuevos_datos.csv', mode='w', newline='') as archivo: 13 escritor_csv = csv.writer(archivo) 14 15 # Escribir las filas en el archivo 16 escritor_csv.writerows(datos) 17 18print("Archivo CSV creado con éxito.")
- ¿Qué hace este código?:
- Abre (o crea si no existe) un archivo llamado
nuevos_datos.csven modo escritura ('w'). - Usa
csv.writerpara crear un objeto escritor que permite escribir filas en el archivo. - Escribe las filas de datos en el archivo usando
writerows. - Imprime un mensaje confirmando que el archivo se creó con éxito.
- Abre (o crea si no existe) un archivo llamado
- Resultado en pantalla:
Archivo CSV creado con éxito.
Si abres el archivo nuevos_datos.csv, verás el siguiente contenido:
nombre,edad,ciudad
Carlos,30,Valencia
María,25,Bilbao
Pedro,35,Málaga
5. Leer un archivo CSV usando un diccionario #
En lugar de trabajar con listas, también puedes leer un archivo CSV en forma de diccionarios, donde cada fila del archivo se convierte en un diccionario con los nombres de las columnas como claves.
Ejemplo: Leer un archivo CSV como diccionario #
1import csv 2 3# Abrir el archivo CSV en modo lectura 4with open('datos.csv', mode='r') as archivo: 5 lector_csv = csv.DictReader(archivo) 6 7 # Recorrer las filas del archivo 8 for fila in lector_csv: 9 print(fila)
- ¿Qué hace este código?:
- Abre el archivo
datos.csven modo lectura. - Usa
csv.DictReaderpara leer el archivo y convertir cada fila en un diccionario. - Imprime cada fila como un diccionario, donde las claves son los nombres de las columnas.
- Abre el archivo
- Resultado en pantalla:
{'nombre': 'Ana', 'edad': '28', 'ciudad': 'Madrid'} {'nombre': 'Luis', 'edad': '34', 'ciudad': 'Barcelona'} {'nombre': 'Eva', 'edad': '22', 'ciudad': 'Sevilla'}
6. Escribir en un archivo CSV usando un diccionario #
También puedes escribir datos en un archivo CSV utilizando diccionarios, lo que puede ser más intuitivo cuando trabajas con datos estructurados.
Ejemplo: Escribir en un archivo CSV usando un diccionario #
1import csv 2 3# Datos que queremos escribir 4datos = [ 5 {"nombre": "Carlos", "edad": 30, "ciudad": "Valencia"}, 6 {"nombre": "María", "edad": 25, "ciudad": "Bilbao"}, 7 {"nombre": "Pedro", "edad": 35, "ciudad": "Málaga"} 8] 9 10# Nombres de las columnas 11campos = ["nombre", "edad", "ciudad"] 12 13# Abrir el archivo CSV en modo escritura 14with open('datos_diccionario.csv', mode='w', newline='') as archivo: 15 escritor_csv = csv.DictWriter(archivo, fieldnames=campos) 16 17 # Escribir los nombres de las columnas 18 escritor_csv.writeheader() 19 20 # Escribir las filas en el archivo 21 escritor_csv.writerows(datos) 22 23print("Archivo CSV con diccionarios creado con éxito.")
- ¿Qué hace este código?:
- Abre (o crea) un archivo llamado
datos_diccionario.csven modo escritura. - Usa
csv.DictWriterpara escribir filas en el archivo como diccionarios. - Escribe las filas de datos en el archivo usando
writerows. - Imprime un mensaje confirmando que el archivo se creó con éxito.
- Abre (o crea) un archivo llamado
- Resultado en pantalla:
Archivo CSV con diccionarios creado con éxito.
Si abres el archivo datos_diccionario.csv, verás el siguiente contenido:
nombre,edad,ciudad
Carlos,30,Valencia
María,25,Bilbao
Pedro,35,Málaga
Resumen del tema
Conceptos clave #
- Módulo Estándar
csv: herramientas integradas para procesar archivos de valores separados por comas y delimitadores personalizados. - Lectura y Escritura por Posición:
csv.reader(f): itera filas como listas de strings.csv.writer(f): escribe filas a partir de listas con.writerow()o.writerows().
- Lectura y Escritura por Mapeo de Columnas:
csv.DictReader(f): mapea automáticamente cada fila a un diccionario usando la cabecera como claves.csv.DictWriter(f, fieldnames=...): escribe diccionarios en el archivo tras generar las cabeceras con.writeheader().
- Parámetro
newline='': obligatorio al abrir archivos en modo escritura para evitar saltos de línea adicionales en plataformas como Windows.
Qué debes recordar #
Usa csv.DictReader y csv.DictWriter para trabajar con filas como diccionarios con cabeceras, recordando usar newline='' al abrir el archivo.