Lectura y escritura de archivos CSV en Python usando el módulo CSV & Pandas

Tabla de contenido:

Anonim

¿Qué es un archivo CSV?

Un archivo CSV es un tipo de archivo de texto sin formato que utiliza una estructura específica para organizar los datos tabulares. CSV es un formato común para el intercambio de datos, ya que es compacto, simple y general. Muchos servicios en línea permiten a sus usuarios exportar datos tabulares del sitio web a un archivo CSV. Los archivos de CSV se abrirán en Excel y casi todas las bases de datos tienen una herramienta para permitir la importación desde un archivo CSV. El formato estándar está definido por datos de filas y columnas. Además, cada fila termina con una nueva línea para comenzar la siguiente fila. También dentro de la fila, cada columna está separada por una coma.

En este tutorial, aprenderá:

  • ¿Qué es un archivo CSV?
  • Archivo de muestra CSV.
  • Módulo CSV de Python
  • Funciones del módulo CSV
  • Lectura de archivos CSV
  • Leer como diccionario
  • Escribir en archivos CSV
  • Leer archivos CSV con Pandas
  • Escribir en archivos CSV con Pandas

Archivo de muestra CSV.

Los datos en forma de tablas también se denominan CSV (valores separados por comas), literalmente "valores separados por comas". Este es un formato de texto destinado a la presentación de datos tabulares. Cada línea del archivo es una línea de la tabla. Los valores de las columnas individuales están separados por un símbolo separador: una coma (,), un punto y coma (;) u otro símbolo. Python puede leer y procesar fácilmente CSV.

Considere la siguiente Tabe

Datos de la tabla

Lenguaje de programación Diseñada por Aparecido Extensión
Pitón Guido van Rossum 1991 .py
Java James Gosling 1995 .Java
C ++ Bjarne Stroustrup 1983 .cpp

Puede representar esta tabla en csv como se muestra a continuación.

Datos CSV

Lenguaje de programación, diseñado por, aparecido, extensión

Python, Guido van Rossum, 1991, .py

Java, James Gosling, 1995, .java

C ++, Bjarne Stroustrup, 1983, .cpp

Como puede ver, cada fila es una nueva línea y cada columna está separada por una coma. Este es un ejemplo de cómo se ve un archivo CSV.

Descargar datos CSV

Módulo CSV de Python

Python proporciona un módulo CSV para manejar archivos CSV. Para leer / escribir datos, debe recorrer las filas del CSV. Debe utilizar el método de división para obtener datos de columnas específicas.

Funciones del módulo CSV

En la documentación del módulo CSV puede encontrar las siguientes funciones:

  • csv.field_size_limit - devuelve el tamaño máximo de campo
  • csv.get_dialect: obtiene el dialecto asociado con el nombre
  • csv.list_dialects: muestra todos los dialectos registrados
  • csv.reader: lee datos de un archivo csv
  • csv.register_dialect - dialecto asociado con el nombre
  • csv.writer: escribe datos en un archivo csv
  • csv.unregister_dialect: elimina el dialecto asociado con el nombre del registro de dialectos
  • csv.QUOTE_ALL : cita todo, independientemente del tipo.
  • csv.QUOTE_MINIMAL - Campos de cotización con caracteres especiales
  • csv.QUOTE_NONNUMERIC - Cita todos los campos que no son valores numéricos
  • csv.QUOTE_NONE : no cite nada en la salida

En este tutorial, nos centraremos solo en las funciones de lectura y escritura que le permiten editar, modificar y manipular los datos en un archivo CSV.

Cómo leer un archivo CSV

Para leer datos de archivos CSV, debe utilizar la función de lector para generar un objeto de lector.

La función de lector está desarrollada para tomar cada fila del archivo y hacer una lista de todas las columnas. Luego, debe elegir la columna para la que desea los datos variables.

Suena mucho más complicado de lo que es. Echemos un vistazo a este ejemplo y descubriremos que trabajar con un archivo csv no es tan difícil.

#import necessary modulesimport csvwith open('X:\data.csv','rt')as f:data = csv.reader(f)for row in data:print(row)

Cuando ejecute el programa anterior, la salida será:

['Programming language; Designed by; Appeared; Extension']['Python; Guido van Rossum; 1991; .py']['Java; James Gosling; 1995; .java']['C++; Bjarne Stroustrup;1983;.cpp']

Cómo leer un archivo CSV como diccionario

También puede utilizar DictReader para leer archivos CSV. Los resultados se interpretan como un diccionario donde la fila de encabezado es la clave y las otras filas son valores.

Considere el siguiente código

#import necessary modulesimport csvreader = csv.DictReader(open("file2.csv"))for raw in reader:print(raw)

El resultado de este código es:

OrderedDict([('Programming language', 'Python'), ('Designed by', 'Guido van Rossum'), (' Appeared', ' 1991'), (' Extension', ' .py')])OrderedDict([('Programming language', 'Java'), ('Designed by', 'James Gosling'), (' Appeared', ' 1995'), (' Extension', ' .java')])OrderedDict([('Programming language', 'C++'), ('Designed by', ' Bjarne Stroustrup'), (' Appeared', ' 1985'), (' Extension', ' .cpp')])

Y esta forma de leer datos desde un archivo CSV es mucho más fácil que el método anterior. Sin embargo, esta no es la mejor manera de leer datos.

Cómo escribir un archivo CSV

Cuando tenga un conjunto de datos que le gustaría almacenar en un archivo CSV, debe usar la función escritor (). Para iterar los datos sobre las filas (líneas), debe usar la función writerow ().

Considere el siguiente ejemplo. Escribimos datos en un archivo "writeData.csv" donde el delimitador es un apóstrofo.

#import necessary modulesimport csvwith open('X:\writeData.csv', mode='w') as file:writer = csv.writer(file, delimiter=',', quotechar='"', quoting=csv.QUOTE_MINIMAL)#way to write to csv filewriter.writerow(['Programming language', 'Designed by', 'Appeared', 'Extension'])writer.writerow(['Python', 'Guido van Rossum', '1991', '.py'])writer.writerow(['Java', 'James Gosling', '1995', '.java'])writer.writerow(['C++', 'Bjarne Stroustrup', '1985', '.cpp'])

El resultado en el archivo csv es:

Programming language, Designed by, Appeared, ExtensionPython, Guido van Rossum, 1991, .pyJava, James Gosling, 1995, .javaC++, Bjarne Stroustrup,1983,.cpp

Leer archivos CSV con Pandas

Pandas es una biblioteca de código abierto que le permite realizar la manipulación de datos en Python. Los pandas brindan una manera fácil de crear, manipular y eliminar los datos.

Debe instalar la biblioteca de pandas con el comando pip install pandas . En Windows, ejecutará este comando en el símbolo del sistema mientras está en Linux en la Terminal.

Leer el CSV en un DataFrame de pandas es muy rápido y fácil:

#import necessary modulesimport pandasresult = pandas.read_csv('X:\data.csv')print(result)

Resultado:

Programming language, Designed by, Appeared, Extension0 Python, Guido van Rossum, 1991, .py1 Java, James Gosling, 1995, .java2 C++, Bjarne Stroustrup,1983,.cpp 

Biblioteca muy útil. En solo tres líneas de código obtienes el mismo resultado que antes. Los pandas saben que la primera línea del CSV contiene nombres de columnas y los usará automáticamente.

Escribir en archivos CSV con Pandas

Escribir en un archivo CSV con Pandas es tan fácil como leer. Aquí puedes convencer en él. Primero debe crear DataFrame basado en el siguiente código.

from pandas import DataFrameC = {'Programming language': ['Python','Java', 'C++'],'Designed by': ['Guido van Rossum', 'James Gosling', 'Bjarne Stroustrup'],'Appeared': ['1991', '1995', '1985'],'Extension': ['.py', '.java', '.cpp'],}df = DataFrame(C, columns= ['Programming language', 'Designed by', 'Appeared', 'Extension'])export_csv = df.to_csv (r'X:\pandaresult.csv', index = None, header=True) # here you have to write path, where result file will be storedprint (df)

Aquí está la salida

Programming language, Designed by, Appeared, Extension0 Python, Guido van Rossum, 1991, .py1 Java, James Gosling, 1995, .java2 C++, Bjarne Stroustrup,1983,.cpp

Y el archivo CSV se crea en la ubicación especificada.

Conclusión

Entonces, ahora sabe cómo usar el método 'csv' y también leer y escribir datos en formato CSV. Los archivos CSV se utilizan ampliamente en aplicaciones de software porque son fáciles de leer y administrar, y su pequeño tamaño los hace relativamente rápidos para su procesamiento y transmisión.

El módulo csv proporciona varias funciones y clases que le permiten leer y escribir fácilmente. Puede consultar la documentación oficial de Python y encontrar algunos consejos y módulos más interesantes. CSV es la mejor forma de guardar, ver y enviar datos. En realidad, no es tan difícil de aprender como parece al principio. Pero con un poco de práctica, lo dominarás.

Pandas es una excelente alternativa para leer archivos CSV.

Además, hay otras formas de analizar archivos de texto con bibliotecas como ANTLR, PLY y PlyPlus. Todos pueden manejar análisis de alta resistencia, y si la manipulación simple de cadenas no funciona, hay expresiones regulares que puede usar.