Saltar al contenido

¿Cómo leo y escribo archivos CSV con Python?

Esta es la respuesta más válida que encomtrarás compartir, pero primero mírala pausadamente y valora si se puede adaptar a tu trabajo.

Solución:

Aquí hay algunos ejemplos completos mínimos sobre cómo leer archivos CSV y cómo escribir archivos CSV con Python.

Python 3: Lectura de un archivo CSV

pitón pura

import csv

# Define data
data = [
    (1, "A towel,", 1.0),
    (42, " it says, ", 2.0),
    (1337, "is about the most ", -1),
    (0, "massively useful thing ", 123),
    (-2, "an interstellar hitchhiker can have.", 3),
]

# Write CSV file
with open("test.csv", "wt") as fp:
    writer = csv.writer(fp, delimiter=",")
    # writer.writerow(["your", "header", "foo"])  # write header
    writer.writerows(data)

# Read CSV file
with open("test.csv") as fp:
    reader = csv.reader(fp, delimiter=",", quotechar='"')
    # next(reader, None)  # skip the headers
    data_read = [row for row in reader]

print(data_read)

Posteriormente, el contenido de data_read están

[['1', 'A towel,', '1.0'],
 ['42', ' it says, ', '2.0'],
 ['1337', 'is about the most ', '-1'],
 ['0', 'massively useful thing ', '123'],
 ['-2', 'an interstellar hitchhiker can have.', '3']]

Tenga en cuenta que CSV solo lee cadenas. Debe convertir los tipos de columna manualmente.

Antes había una versión de Python 2+3 (enlace), pero se eliminó la compatibilidad con Python 2. Eliminar las cosas de Python 2 simplificó enormemente esta respuesta.

Relacionados

  • ¿Cómo escribo datos en formato csv como string (no archivo)?
  • ¿Cómo puedo usar io.StringIO() con el módulo csv?: Esto es interesante si desea servir un CSV sobre la marcha con Flask, sin almacenar realmente el CSV en el servidor.

mpu

Echa un vistazo a mi paquete de utilidades mpu para uno súper simple y fácil de recordar:

import mpu.io
data = mpu.io.read('example.csv', delimiter=',', quotechar='"', skiprows=None)
mpu.io.write('example.csv', data)

pandas

import pandas as pd

# Read the CSV into a pandas data frame (df)
#   With a df you can do many things
#   most important: visualize data with Seaborn
df = pd.read_csv('myfile.csv', sep=',')
print(df)

# Or export it in many ways, e.g. a list of tuples
tuples = [tuple(x) for x in df.values]

# or export it as a list of dicts
dicts = df.to_dict().values()

Ver read_csv documentos para obtener más información. Tenga en cuenta que pandas infiere automáticamente si hay una línea de encabezado, pero también puede configurarla manualmente.

Si no has oído hablar de Seaborn, te recomiendo echarle un vistazo.

Otro

La lectura de archivos CSV es compatible con muchas otras bibliotecas, por ejemplo:

  • dask.dataframe.read_csv
  • spark.read.csv

Archivo CSV creado

1,"A towel,",1.0
42," it says, ",2.0
1337,is about the most ,-1
0,massively useful thing ,123
-2,an interstellar hitchhiker can have.,3

Terminaciones comunes de archivos

.csv

Trabajando con los datos

Después de leer el archivo CSV en una lista de tuplas / dictados o un marco de datos de Pandas, simplemente está trabajando con este tipo de datos. Nada específico de CSV.

Alternativas

  • JSON: Agradable para escribir datos legibles por humanos; MUY comúnmente utilizado (lectura y escritura)
  • CSV: formato súper simple (lectura y escritura)
  • YAML: agradable de leer, similar a JSON (lectura y escritura)
  • pickle: un formato de serialización de Python (lectura y escritura)
  • MessagePack (paquete de Python): representación más compacta (lectura y escritura)
  • HDF5 (paquete de Python): Agradable para matrices (lectura y escritura)
  • XML: también existe *suspiro* (lectura y escritura)

Para su aplicación, lo siguiente podría ser importante:

  • Soporte de otros lenguajes de programación
  • Rendimiento de lectura/escritura
  • Compacidad (tamaño de archivo)

Ver también: Comparación de formatos de serialización de datos

En caso de que esté buscando una forma de crear archivos de configuración, es posible que desee leer mi breve artículo Archivos de configuración en Python

Te invitamos a corroborar nuestra labor mostrando un comentario y valorándolo te estamos agradecidos.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)


Tags : / /

Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *