Pitón

Cómo manejar archivos CSV en Python

Cómo manejar 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 comas", donde cada fila o línea contiene valores basados ​​en texto delimitados por comas. En algunos casos, también se utiliza "punto y coma" en lugar de "coma" para separar los 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 la misma.

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 campos de columna, mientras que cualquier otra línea restante se considera 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, funciones de clasificación y filtrado.

Leer datos de archivos CSV con 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á utilizar el método "reader" 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 frutas en este caso. La segunda línea almacena valores debajo de cada columna (existencias en mano). Todos estos valores están delimitados por una coma. Si abriera este archivo en una aplicación de hoja de cálculo como LibreOffice Calc, se vería así:

Ahora para leer los valores de "frutas.csv ”usando el módulo“ csv ”de Python, necesitará usar el método“ reader ”en el siguiente formato:

importar csv
con abierto ("frutas.csv ") como archivo:
lector_datos = csv.lector (archivo)
para la línea en el lector de datos:
imprimir (línea)

La primera línea del ejemplo anterior importa el módulo "csv". A continuación, la declaración "con abierto" se utiliza 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 "reader" desde el módulo "csv". Este método de "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 instrucción de bucle "for" para imprimir cada línea de las "frutas.csv "archivo. Después de ejecutar el ejemplo de código mencionado anteriormente, debería obtener el siguiente resultado:

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

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

importar csv
con abierto ("frutas.csv ") como archivo:
lector_datos = csv.lector (archivo)
para índice, línea en enumerate (data_reader):
imprimir (índice, línea)

La variable "índice" mantiene el recuento de cada elemento. Después de ejecutar el ejemplo de código mencionado anteriormente, debería obtener el siguiente resultado:

0 ['Mango', 'Plátano', 'Manzana', 'Naranja']
1 ['50', '70', '30', '90']

Dado que la primera línea de un archivo "csv" normalmente contiene encabezados de columna, puede utilizar la función "enumerar" para extraer estos encabezados:

importar csv
con abierto ("frutas.csv ") como archivo:
lector_datos = 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.csv "archivo). En caso afirmativo, el valor de la variable "línea" se asigna a una nueva variable "encabezados". Después de ejecutar el ejemplo de código anterior, debería obtener el siguiente resultado:

['Mango', 'Plátano', 'Manzana', 'Naranja']

Tenga en cuenta que puede utilizar su propio delimitador al llamar a "csv."lector" mediante el uso de un argumento "delimitador" opcional en el siguiente formato:

importar csv
con abierto ("frutas.csv ") como archivo:
lector_datos = csv.lector (archivo, delimitador = ";")
para la línea en el lector de datos:
imprimir (línea)

Dado que en un archivo csv, cada columna está asociada con valores en una fila, es posible que desee crear un objeto de "diccionario" de Python al leer datos de un archivo "csv". Para hacerlo, debe utilizar el método "DictReader", como se muestra en el siguiente código:

importar csv
con abierto ("frutas.csv ") como archivo:
lector_datos = csv.DictReader (archivo)
para la línea en el lector de datos:
imprimir (línea)

Después de ejecutar el ejemplo de código mencionado anteriormente, debería obtener el siguiente resultado:

'Mango': '50', 'Plátano': '70', 'Manzana': '30', 'Naranja': '90'

Entonces ahora tiene un objeto de diccionario que asocia columnas individuales con sus valores correspondientes en las filas. Esto funciona bien si solo tiene una fila. Supongamos que las "frutas.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 el mismo ejemplo de código anterior producirá una salida diferente.

'Mango': '50', 'Plátano': '70', 'Manzana': '30', 'Naranja': '90'
'Mango': '3', 'Plátano': '1', 'Manzana': '6', 'Naranja': '4'

Es posible que esto no sea ideal, ya que es posible que desee asignar todos los valores pertenecientes a una columna a un par clave-valor en un diccionario de Python. Pruebe este ejemplo de código en su lugar:

importar csv
con abierto ("frutas.csv ") como archivo:
lector_datos = csv.DictReader (archivo)
data_dict =
para la línea en el lector de datos:
para clave, valor en línea.artículos():
data_dict.setdefault (clave, [])
data_dict [clave].añadir (valor)
imprimir (data_dict)

Después de ejecutar el ejemplo de código mencionado anteriormente, debería obtener el siguiente resultado:

'Mango': ['50', '3'], 'Plátano': ['70', '1'], 'Manzana': ['30', '6'], 'Naranja': ['90 ',' 4 ']

Se utiliza un bucle "for" en cada elemento del objeto "DictReader" para recorrer los pares clave-valor. Una nueva variable de diccionario de Python "data_dict" se define antes de eso. Almacenará asignaciones de datos finales. En el segundo bloque de bucle "for", se utiliza el método "setdefault" del diccionario de Python. Este método asigna un valor a una clave de diccionario. Si el par clave-valor 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, "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á utilizar el método "escritor" del módulo "csv". El siguiente ejemplo agregará una nueva fila a las "frutas.csv "archivo.

importar csv
con abierto ("frutas.csv "," a ") como archivo:
data_writer = csv.escritor (archivo)
escritor_de_datos.escritor ahora ([3,1,6,4])

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

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

importar csv
con abierto ("frutas.csv "," w ") como archivo:
encabezados = ["Mango", "Plátano", "Manzana", "Naranja"]
data_writer = csv.DictWriter (archivo, nombres de campo = encabezados)
escritor_de_datos.writeheader ()
escritor_de_datos.Writerow ("Mango": 50, "Plátano": 70, "Manzana": 30, "Naranja": 90)
escritor_de_datos.Writerow ("Mango": 3, "Plátano": 1, "Manzana": 6, "Naranja": 4)

Después de abrir un vacío "frutas.csv "usando una declaración" con abierto ", se define una nueva variable" encabezados "que contiene encabezados de columna. Se crea un nuevo objeto "data_writer" llamando al método "DictWriter" y pasándole una referencia a las "frutas.csv "y un argumento" nombres de campo ". En la siguiente línea, los encabezados de las columnas se escriben en el archivo mediante 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" integrado de Python facilita el manejo de los datos disponibles en archivos "csv" e implementa más lógica en ellos.

Cómo cambiar los botones izquierdo y derecho del mouse en una PC con Windows 10
Es una norma que todos los dispositivos de mouse de computadora estén diseñados ergonómicamente para usuarios diestros. Pero hay dispositivos de mouse...
Emule los clics del mouse colocando el mouse con Clickless Mouse en Windows 10
El uso excesivo de un mouse o teclado en una postura incorrecta puede provocar muchos problemas de salud, como tensión, síndrome del túnel carpiano y ...
Agregue gestos del mouse a Windows 10 con estas herramientas gratuitas
En los últimos años, las computadoras y los sistemas operativos han evolucionado enormemente. Hubo un momento en que los usuarios tenían que usar coma...