ordenar - operaciones con archivos csv python
¿Cómo leo y escribo archivos CSV con Python? (3)
Tengo un archivo
example.csv
con el contenido
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
¿Cómo leo este
example.csv
con Python?
Del mismo modo, si tengo
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)]
¿Cómo escribo
data
en un archivo CSV con Python?
Escribir un archivo CSV
Primero necesitas importar csv
Por ejemplo:
import csv
with open(''eggs.csv'', ''wb'') as csvfile:
spamwriter = csv.writer(csvfile, delimiter='' '',
quotechar=''|'', quoting=csv.QUOTE_MINIMAL)
spamwriter.writerow([''Spam''] * 5 + [''Baked Beans''])
spamwriter.writerow([''Spam'', ''Lovely Spam'', ''Wonderful Spam''])
Aquí hay algunos ejemplos completos mínimos de cómo leer archivos CSV y cómo escribir archivos CSV con Python.
Python 2 + 3: leer un archivo CSV
Pitón puro
# -*- coding: utf-8 -*-
import csv
import sys
# 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
kwargs = {''newline'': ''''}
mode = ''w''
if sys.version_info < (3, 0):
kwargs.pop(''newline'', None)
mode = ''wb''
with open(''test.csv'', mode, **kwargs) as fp:
writer = csv.writer(fp, delimiter='','')
# writer.writerow(["your", "header", "foo"]) # write header
writer.writerows(data)
# Read CSV file
kwargs = {''newline'': ''''}
mode = ''r''
if sys.version_info < (3, 0):
kwargs.pop(''newline'', None)
mode = ''rb''
with open(''test.csv'', mode, **kwargs) as fp:
reader = csv.reader(fp, delimiter='','', quotechar=''"'')
# next(reader, None) # skip the headers
data_read = [row for row in reader]
print(data_read)
Después de eso, los contenidos de
data_read
son
[[''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'']]
Unicode y Python 2.X
Si desea escribir Unicode, debe instalar
unicodecsv
.
No abra el archivo con
codecs.open
sino simplemente con
open
.
Escríbelo con
import unicodecsv as csv
# Write CSV file
with open(''test.csv'', ''w'', newline='''') as fp:
writer = csv.writer(fp, encoding=''utf-8'')
# writer.writerow(["your", "header", "foo"]) # write header
writer.writerows(data)
Relacionado
- ¿Cómo escribo datos en formato csv como cadena (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
Eche un vistazo a mi paquete de utilidades
mpu
para obtener 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()
Consulte los
documentos
read_csv
para obtener más información.
Tenga en cuenta que los pandas se infieren 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:
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
Finales de archivo comunes
.csv
Trabajando con los datos
Después de leer el archivo CSV en una lista de tuplas / dictos o un marco de datos de Pandas, simplemente está trabajando con este tipo de datos. Nada CSV específico.
Alternativas
- JSON: Agradable para escribir datos legibles por humanos; MUY comúnmente utilizado ( leer y escribir )
- CSV: formato súper simple ( lectura y escritura )
- YAML: Agradable de leer, similar a JSON ( leer y escribir )
- pickle: un formato de serialización de Python ( lectura y escritura )
- MessagePack ( paquete Python ): representación más compacta ( lectura y escritura )
- HDF5 ( paquete Python ): agradable para matrices ( lectura y escritura )
- XML: existe también * suspiro * ( read y write )
Para su aplicación, lo siguiente puede ser importante:
- Soporte por otros lenguajes de programación.
- Rendimiento de lectura / escritura
- Compacidad (tamaño del 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, puede leer mi breve artículo Archivos de configuración en Python
import csv
with open(fileLocation+''example.csv'',newline='''') as File: #the csv file is stored in a File object
reader=csv.reader(File) #csv.reader is used to read a file
for row in reader:
print(row)