Leer un CSV con su encabezado en Python

Vaibhav Vaibhav 23 enero 2022
Leer un CSV con su encabezado en Python

Python es un lenguaje de programación de propósito general definido y fácil de entender.

Python es uno de los cinco lenguajes de programación más importantes a nivel mundial porque tiene una sintaxis sencilla y muchas utilidades para múltiples dominios, como aprendizaje automático, ciencia de datos, desarrollo de juegos, desarrollo web, desarrollo de aplicaciones, etc. escenas.

Python hace que el manejo de archivos sea una tarea sencilla. Podemos crear archivos, leer archivos, agregar datos o sobrescribir datos en archivos existentes fácilmente usando Python, ya que puede manejar muchos formatos de archivo como txt, csv, xlsx, pdf, etc.

Además, tiene muchos paquetes de código abierto que hacen que el manejo de archivos sea más eficiente y sencillo.

Aprenderemos a leer un archivo CSV y su encabezado usando Python en este artículo. Para que estemos en la misma nota, usaremos un archivo de muestra con fines ilustrativos en los fragmentos de código. Puede descargar este archivo CSV desde aquí. Los ejemplos siguientes considerarán la primera fila del archivo CSV como su encabezado.

Leer un CSV con su encabezado en Python

Python tiene un paquete csv que podemos usar para leer archivos CSV. Este paquete está presente de forma predeterminada en la instalación oficial de Python.

El paquete csv tiene un método reader() que podemos usar para leer archivos CSV. Devuelve un objeto iterable que podemos atravesar para imprimir el contenido del archivo CSV que se está leyendo.

from csv import reader

file_name = "email.csv"

with open(file_name, "r") as csv_file:
    csv_reader = reader(csv_file)

    for row in csv_reader:
        print(row)

Producción :

['Login email', 'Identifier', 'First name', 'Last name']
['laura@example.com', '2070', 'Laura', 'Grey']
['craig@example.com', '4081', 'Craig', 'Johnson']
['mary@example.com', '9346', 'Mary', 'Jenkins']
['jamie@example.com', '5079', 'Jamie', 'Smith']

La complejidad temporal de la solución anterior es O(n).

Como podemos ver, la salida muestra que la primera fila es el encabezado y las otras filas tienen los valores. Podemos embellecer aún más la salida almacenando el encabezado en una variable separada e imprimiendo todo en un formato de apariencia adecuada.

from csv import reader

file_name = "email.csv"

with open(file_name, "r") as csv_file:
    csv_reader = reader(csv_file)
    header = next(csv_reader)
    print("Header:")
    print(", ".join(header))
    print("Values:")

    for row in csv_reader:
        print(", ".join(row))

Producción :

Header:
Login email, Identifier, First name, Last name
Values:
laura@example.com, 2070, Laura, Grey
craig@example.com, 4081, Craig, Johnson
mary@example.com, 9346, Mary, Jenkins
jamie@example.com, 5079, Jamie, Smith

La complejidad temporal de la solución anterior es O(n).

En el código anterior, csv_reader es iterable. Usando el método next(), primero obtuvimos el encabezado de csv_reader y luego iteramos sobre los valores usando un bucle for.

Como sugiere el nombre, los archivos CSV tienen valores separados por comas.

A veces, los valores dentro de los archivos CSV no están separados por comas; podrían estar usando un punto y coma (;), dos puntos (:), etc., como separador. En tales casos, se puede utilizar el argumento delimiter del método reader() del paquete csv.

El argumento delimiter acepta una cadena o un carácter que debe considerarse como separador. Por ejemplo, si un archivo CSV tiene ; como separador, el código para leer dicho archivo CSV sería el siguiente.

from csv import reader

file_name = "email.csv"

with open(file_name, "r") as csv_file:
    csv_reader = reader(csv_file, delimiter=";")  # Important
    header = next(csv_reader)
    print("Header:")
    print(", ".join(header))
    print("Values:")

    for row in csv_reader:
        print(", ".join(row))

Producción :

Header:
Login email, Identifier, First name, Last name
Values:
laura@example.com, 2070, Laura, Grey
craig@example.com, 4081, Craig, Johnson
mary@example.com, 9346, Mary, Jenkins
jamie@example.com, 5079, Jamie, Smith
Vaibhav Vaibhav avatar Vaibhav Vaibhav avatar

Vaibhav is an artificial intelligence and cloud computing stan. He likes to build end-to-end full-stack web and mobile applications. Besides computer science and technology, he loves playing cricket and badminton, going on bike rides, and doodling.

Artículo relacionado - Python CSV