Cómo manejar los archivos CSV en Python

Cómo manejar los archivos CSV en Python
Este artículo cubrirá un tutorial sobre el manejo de archivos "CSV" usando Python. El término "CSV" significa "valores separados por coma" donde cada fila o línea contiene valores basados ​​en texto delimitados por comas. En algunos casos, "Semicolon" también se usa en lugar de "coma" para separar valores. Sin embargo, esto no hace mucha diferencia en las reglas de formato de archivo y la lógica para manejar ambos tipos de separadores sigue siendo el mismo.

El formato de archivo CSV se usa más comúnmente para mantener bases de datos y hojas de cálculo. La primera línea en un archivo CSV se usa más comúnmente para definir los campos de columna, mientras que cualquier otra línea restante se consideran filas. Esta estructura permite a los usuarios presentar datos tabulares utilizando archivos CSV. Los archivos CSV se pueden editar en cualquier editor de texto. Sin embargo, aplicaciones como LibreOffice Calc proporcionan herramientas de edición avanzadas, clasificación y funciones de filtro.

Lectura de datos de archivos CSV usando Python

El módulo CSV en Python le permite leer, escribir y manipular cualquier dato almacenado en archivos CSV. Para leer un archivo CSV, deberá usar el método "Lector" del módulo "CSV" de Python que se incluye en la Biblioteca estándar de Python.

Considere que tiene un archivo CSV que contiene los siguientes datos:

Mango, plátano, manzana, naranja
50,70,30,90

La primera fila del archivo define cada categoría de columna, nombre de las frutas en este caso. La segunda línea almacena valores en cada columna (stock en la mano). Todos estos valores son delimitados por una coma. Si tuviera que abrir este archivo en una aplicación de hoja de cálculo como LibreOffice Calc, se vería así:

Ahora para leer los valores de "Fruits.Archivo CSV "Usando el módulo" CSV "de Python, deberá usar el método" Lector "en el siguiente formato:

Importar CSV
con abierto ("frutas.CSV ") como archivo:
data_reader = CSV.Lector (archivo)
Para la línea en data_reader:
Imprimir (línea)

La primera línea en la muestra anterior importa el módulo "CSV". A continuación, la instrucción "con abierta" se usa para abrir de forma segura un archivo almacenado en su disco duro ("frutas.CSV ”en este caso). Se crea un nuevo objeto "data_reader" llamando al método "lector" del módulo "CSV". Este método "lector" toma un nombre de archivo como argumento obligatorio, por lo que la referencia a "frutas.CSV "se le pasa. A continuación, se ejecuta una declaración de bucle "para" para imprimir cada línea desde las "frutas.archivo CSV ". Después de ejecutar la muestra de código mencionada anteriormente, debe obtener la siguiente salida:

['50', '70', '30', '90']

Si desea asignar números de línea a la salida, puede usar la función "enumerada" que asigna un número a cada elemento en un iterable (a partir de 0 a menos que se cambie).

Importar CSV
con abierto ("frutas.CSV ") como archivo:
data_reader = CSV.Lector (archivo)
Para el índice, línea en enumerate (data_reader):
Imprimir (índice, línea)

La variable "índice" mantiene el recuento de cada elemento. Después de ejecutar la muestra de código mencionada anteriormente, debe obtener la siguiente salida:

0 ['mango', 'plátano', 'manzana', 'naranja']
1 ['50', '70', '30', '90']

Dado que la primera línea en un archivo "CSV" generalmente contiene encabezados de columna, puede usar la función "enumerada" para extraer estos encabezados:

Importar CSV
con abierto ("frutas.CSV ") como archivo:
data_reader = CSV.Lector (archivo)
Para el índice, línea en enumerate (data_reader):
Si índice == 0:
encabezados = línea
Imprimir (encabezados)

El bloque "si" en la declaración anterior verifica si el índice es igual a cero (primera línea en "frutas.archivo csv "). En caso afirmativo, entonces el valor de la variable "línea" se asigna a una nueva variable "encabezados". Después, ejecutando la muestra de código anterior, debe obtener la siguiente salida:

['Mango', 'plátano', 'manzana', 'naranja']

Tenga en cuenta que puede usar su propio delimitador al llamar a "CSV.Método del lector "utilizando un argumento opcional" delimitador "en el siguiente formato:

Importar CSV
con abierto ("frutas.CSV ") como archivo:
data_reader = CSV.lector (archivo, delimiter = ";")
Para la línea en data_reader:
Imprimir (línea)

Dado que en un archivo CSV, cada columna está asociada con valores seguidos, es posible que desee crear un objeto "Diccionario" de Python al leer datos de un archivo "CSV". Para hacerlo, debe usar el método "Dictreader", como se muestra en el código a continuación:

Importar CSV
con abierto ("frutas.CSV ") como archivo:
data_reader = CSV.Dictreader (archivo)
Para la línea en data_reader:
Imprimir (línea)

Después de ejecutar la muestra de código mencionada anteriormente, debe obtener la siguiente salida:

'Mango': '50', 'Banana': '70', 'Apple': '30', 'Orange': '90'

Entonces, ahora tiene un objeto de diccionario que asocia las columnas individuales con sus valores correspondientes en las filas. Esto funciona bien si solo tienes una fila. Supongamos que las "frutas.El archivo CSV ”ahora incluye una fila adicional que especifica cuántos días tardará en perecer el stock de fruta.

Mango, plátano, manzana, naranja
50,70,30,90
3,1,6,4

Cuando tiene varias filas, ejecutar la misma muestra de código anterior producirá una salida diferente.

'Mango': '50', 'Banana': '70', 'Apple': '30', 'Orange': '90'
'Mango': '3', 'plátano': '1', 'manzana': '6', 'naranja': '4'

Esto puede no ser ideal ya que desee mapear todos los valores relacionados con una columna a un par de valores clave en un diccionario de Python. Pruebe esta muestra de código en su lugar:

Importar CSV
con abierto ("frutas.CSV ") como archivo:
data_reader = CSV.Dictreader (archivo)
data_dict =
Para la línea en data_reader:
Para la clave, valor en línea.elementos():
data_dict.setDefault (clave, [])
data_dict [clave].agregar (valor)
imprimir (data_dict)

Después de ejecutar la muestra de código mencionada anteriormente, debe obtener la siguiente salida:

'Mango': ['50', '3'], 'Banana': ['70', '1'], 'Apple': ['30', '6'], 'Orange': ['90 ',' 4 ']

Se usa un bucle "para" en cada elemento del objeto "Dictreader" para bucle sobre pares de valor clave. Una nueva variable de diccionario de Python "data_dict" se define antes de eso. Almacenará mapeos de datos finales. Bajo el segundo bloque de bucle "para", se utiliza el método "setdefault" del diccionario de Python. Este método asigna un valor a una clave de diccionario. Si el par de valor clave no existe, se crea uno nuevo a partir de los argumentos especificados. Entonces, en este caso, se asignará una nueva lista vacía a una clave si aún no existe. Por último, el "valor" se agrega a su clave correspondiente en el objeto final "data_dict".

Escribir datos en un archivo CSV

Para escribir datos en un archivo "CSV", deberá usar el método "Writer" desde el módulo "CSV". El siguiente ejemplo agregará una nueva fila a los "frutos existentes.archivo CSV ".

Importar CSV
con abierto ("frutas.csv "," a ") como archivo:
data_writer = CSV.escritor (archivo)
data_writer.Writerow ([3,1,6,4])

La primera declaración abre el archivo en modo "adjunto", denotado por el argumento "a". A continuación se llama el método "escritor" y la referencia a "frutas.El archivo CSV ”se le pasa como argumento. El método "escritorw" escribe o agrega una nueva fila al archivo.

Si desea convertir el diccionario de Python en una estructura de archivo "CSV" y guardar la salida en un archivo "CSV", intente este código:

Importar CSV
con abierto ("frutas.csv "," w ") como archivo:
encabezados = ["mango", "plátano", "manzana", "naranja"]
data_writer = CSV.DictWriter (archivo, fieldNames = encabezados)
data_writer.WriteHeader ()
data_writer.Writerow ("Mango": 50, "Banana": 70, "Apple": 30, "Orange": 90)
data_writer.escritorw ("mango": 3, "plátano": 1, "manzana": 6, "naranja": 4)

Después de abrir un "frutas vacío.Archivo CSV "Usando una declaración" Con Open ", se define una nueva variable" encabezados "que contiene encabezados de columna. Se crea un nuevo objeto "data_writer" llamando al método "DictWriter" y transmitiendo su referencia a las "Frutas.archivo csv "y un argumento de" fieltro de campo ". En la siguiente línea, los encabezados de columna se escriben en el archivo utilizando el método "WriteHeader". Las dos últimas declaraciones agregan nuevas filas a sus encabezados correspondientes creados en el paso anterior.

Conclusión

Los archivos CSV proporcionan una forma ordenada de escribir datos en formato tabular. El módulo "CSV" incorporado de Python facilita el manejo de los datos disponibles en archivos "CSV" e implementa una lógica adicional en él.