Leer Archivos CSV en Python

Los archivos CSV (valores separados por comas) son una forma común de almacenar datos tabulares. Python ofrece varias formas de abrir y leer estos archivos.

¿Qué es un Archivo CSV?

Un archivo CSV almacena datos en un formato de texto simple, donde cada línea representa una fila y las columnas están separadas por comas.

Abrir y Leer un Archivo CSV

Python proporciona el módulo csv para trabajar con archivos CSV. Para abrir y leer el archivo, usamos open() y csv.reader.

import csv

# Abrir el archivo CSV
with open("datos.csv", "r") as archivo:
    lector = csv.reader(archivo)
    for fila in lector:
        print(fila)  # Imprime cada fila como una lista
            

Leer un CSV con Encabezados

Si el archivo CSV tiene encabezados, podemos usar csv.DictReader para leer cada fila como un diccionario, donde las claves son los encabezados.

import csv

# Leer un CSV con encabezados
with open("datos.csv", "r") as archivo:
    lector = csv.DictReader(archivo)
    for fila in lector:
        print(fila)  # Imprime cada fila como un diccionario
            

Acceder a Datos Específicos

Al leer un CSV con csv.DictReader, podemos acceder a valores específicos utilizando las claves del diccionario.

with open("datos.csv", "r") as archivo:
    lector = csv.DictReader(archivo)
    for fila in lector:
        print(fila["Nombre"], fila["Edad"])  # Accede a columnas específicas
            

Escribir en un Archivo CSV

Para escribir datos en un archivo CSV, podemos usar csv.writer y el método writerow() para escribir filas.

import csv

# Crear un archivo CSV y escribir en él
with open("salida.csv", "w", newline="") as archivo:
    escritor = csv.writer(archivo)
    escritor.writerow(["Nombre", "Edad"])  # Escribir encabezados
    escritor.writerow(["Ana", 28])         # Escribir datos
    escritor.writerow(["Luis", 35])
            

Conclusión

Los archivos CSV son una forma práctica de manejar datos tabulares en Python. Con el módulo csv, puedes leer y escribir archivos de manera fácil y eficiente.