"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > Guía del módulo CSV de Python

Guía del módulo CSV de Python

Publicado el 2024-11-08
Navegar:233

Guide to Python

Trabajar con datos es una parte inevitable de la programación y, como alguien que a menudo se encuentra inmerso en varios formatos de archivos, siempre he apreciado cómo Python simplifica todo el proceso.

Uno de esos formatos de archivo que aparece con regularidad, especialmente en el análisis de datos, es el archivo CSV.

El CSV, o valores separados por comas, es un formato de intercambio de datos popular debido a su simplicidad.

Afortunadamente, Python viene con un módulo integrado llamado csv, que hace que trabajar con estos archivos sea notablemente eficiente.

En este artículo, analizaré cómo funciona el módulo csv en Python, desde el uso básico hasta técnicas más avanzadas que pueden ahorrarle mucho tiempo al procesar datos.


¿Qué es un archivo CSV?

Antes de sumergirnos en el módulo csv, comencemos con una comprensión básica de qué es un archivo CSV.

Un archivo CSV es esencialmente un archivo de texto sin formato donde cada línea representa una fila de datos y cada valor está separado por una coma (o, a veces, por otros delimitadores, como tabulaciones).

Aquí tienes un ejemplo rápido de cómo podría verse:

Name,Age,Occupation
Alice,30,Engineer
Bob,25,Data Scientist
Charlie,35,Teacher

¿Por qué el módulo csv?

Quizás te preguntes por qué necesitarías el módulo csv cuando los archivos CSV son solo archivos de texto que, en teoría, podrían leerse utilizando los métodos de manejo de archivos estándar de Python.

Si bien esto es cierto, los archivos CSV pueden tener complejidades (como comas incrustadas, saltos de línea dentro de las celdas y diferentes delimitadores) que son difíciles de manejar manualmente.

El módulo csv resume todo esto, permitiéndote concentrarte en tus datos.


Lectura de archivos CSV

Pasemos al código.

La operación más común que realizarás en un archivo CSV es leer su contenido.

La función csv.reader() en el módulo es una herramienta fácil de usar para eso.

Aquí tienes una guía paso a paso sobre cómo hacerlo.

Lectura CSV básica

import csv

# Open a CSV file
with open('example.csv', 'r') as file:
    reader = csv.reader(file)

    # Iterate over the rows
    for row in reader:
        print(row)

Esta es la forma más sencilla de leer un archivo CSV.

El csv.reader() devuelve un iterable, donde cada iteración le proporciona una lista que representa una fila del archivo.

Manejo de encabezados
La mayoría de los archivos CSV vienen con encabezados en la primera fila, como nombres de columnas.

Si no necesita estos encabezados, simplemente puede omitir la primera fila al iterar:

import csv

with open('example.csv', 'r') as file:
    reader = csv.reader(file)

    # Skip header
    next(reader)

    for row in reader:
        print(row)

A veces, trabajo con archivos que contienen una combinación de datos útiles e irrelevantes, y me encuentro omitiendo filas basándose en algo más que el encabezado.

Puedes hacer esto fácilmente dentro del bucle for.

DictReader: una forma más intuitiva de leer archivos CSV
Si su archivo CSV tiene encabezados, csv.DictReader() es otra opción fantástica que lee cada fila como un diccionario, siendo las claves los nombres de las columnas:

import csv

with open('example.csv', 'r') as file:
    reader = csv.DictReader(file)

    for row in reader:
        print(row)

Este enfoque puede hacer que su código sea más legible e intuitivo, especialmente cuando se trabaja con grandes conjuntos de datos.

Por ejemplo, acceder a la fila['Nombre'] parece mucho más claro que tratar con un acceso basado en índice como la fila[0].


Escribir en archivos CSV

Una vez que haya leído y procesado sus datos, es probable que desee guardarlos o exportarlos.

La función csv.writer() es tu herramienta de referencia para escribir en archivos CSV.

Escritura CSV básica

import csv

# Data to be written
data = [
    ['Name', 'Age', 'Occupation'],
    ['Alice', 30, 'Engineer'],
    ['Bob', 25, 'Data Scientist'],
    ['Charlie', 35, 'Teacher']
]

# Open a file in write mode
with open('output.csv', 'w', newline='') as file:
    writer = csv.writer(file)

    # Write data to the file
    writer.writerows(data)

La función escritor.writerows() toma una lista de listas y las escribe en el archivo CSV, donde cada lista interna representa una fila de datos.

DictWriter: una forma más limpia de escribir archivos CSV
Así como tenemos DictReader para leer archivos CSV en diccionarios, tenemos DictWriter para escribir diccionarios en un CSV.

Este método puede ser particularmente útil cuando desea especificar explícitamente los nombres de sus columnas.

import csv

# Data as list of dictionaries
data = [
    {'Name': 'Alice', 'Age': 30, 'Occupation': 'Engineer'},
    {'Name': 'Bob', 'Age': 25, 'Occupation': 'Data Scientist'},
    {'Name': 'Charlie', 'Age': 35, 'Occupation': 'Teacher'}
]

# Open file for writing
with open('output.csv', 'w', newline='') as file:
    fieldnames = ['Name', 'Age', 'Occupation']
    writer = csv.DictWriter(file, fieldnames=fieldnames)

    # Write the header
    writer.writeheader()

    # Write the data
    writer.writerows(data)

Al utilizar DictWriter, obtienes una interfaz agradable y limpia para escribir diccionarios en CSV manteniendo tu código legible y conciso.


Personalización de delimitadores

De forma predeterminada, el módulo CSV usa comas para separar valores, pero a veces es posible que estés trabajando con archivos que usan otros delimitadores, como tabulaciones o punto y coma.

El módulo csv proporciona una manera fácil de manejar estos casos especificando el argumento delimitador.

import csv

with open('example_tab.csv', 'r') as file:
    reader = csv.reader(file, delimiter='\t')

    for row in reader:
        print(row)

Me he encontrado con archivos CSV que usan punto y coma en lugar de comas (generalmente de fuentes europeas) y es reconfortante saber que el módulo csv de Python maneja esto con facilidad.

Ya sean comas, tabulaciones o cualquier otro delimitador, el módulo csv lo tiene cubierto.


Manejo de datos complejos

¿Qué pasa si tus datos contienen comas dentro de los campos, comillas o incluso saltos de línea?

El módulo CSV maneja automáticamente estos casos mediante el uso de mecanismos de cotización.

También puedes controlar cómo funcionan las cotizaciones usando el parámetro de cotización.

import csv

data = [
    ['Name', 'Occupation', 'Description'],
    ['Alice', 'Engineer', 'Works on, "cutting-edge" technology'],
    ['Bob', 'Data Scientist', 'Loves analyzing data.']
]

with open('complex.csv', 'w', newline='') as file:
    writer = csv.writer(file, quoting=csv.QUOTE_ALL)
    writer.writerows(data)

En este ejemplo, QUOTE_ALL garantiza que todos los campos estén entre comillas.

Otras opciones de cotización incluyen csv.QUOTE_MINIMAL, csv.QUOTE_NONNUMERIC y csv.QUOTE_NONE, lo que le brinda control total sobre cómo se formatean sus datos CSV.


Conclusión

A lo largo de los años, he llegado a confiar en el formato CSV como una forma liviana y eficiente de mover datos, y el módulo csv de Python ha sido un compañero confiable en ese viaje.

Ya sea que se trate de hojas de cálculo simples o campos de datos complejos de varias líneas, este módulo hace que el proceso sea intuitivo y sin esfuerzo.

Si bien trabajar con archivos CSV puede parecer una tarea mundana al principio, es una puerta de entrada para dominar la manipulación de datos.

En mi experiencia, una vez que haya conquistado los archivos CSV, se encontrará abordando con confianza formatos más grandes y complejos, como bases de datos JSON o SQL. Después de todo, todo comienza con lo básico.

Declaración de liberación Este artículo se reproduce en: https://dev.to/devasservice/guide-to-pythons-csv-module-32ie?1 Si hay alguna infracción, comuníquese con [email protected] para eliminarla.
Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3