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.
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
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.
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].
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.
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.
¿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.
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.
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