python

Leer archivo CSV con Python

En este post de programación con Python te mostraré cómo leer un archivo CSV. Un archivo CSV es un archivo que tiene datos separados por comas (aunque el delimitador puede ser otro carácter).

Te enseñaré a leer un CSV con Python de dos maneras:

  • Manualmente usando split y funciones del lenguaje
  • Usando el módulo csv ya presente en Python

Al final también te dejaré un ejemplo en donde sacamos el promedio de datos del archivo CSV usando Python.

El archivo CSV que vamos a leer

Vamos a abrir un CSV que se ve así:

Nombre,Calificación,Precio
Cuphead,100,180
Doom eternal,99,1400
Horizon Zero Dawn,90,450.7
Resident Evil 2 Remake,95,450.88
Super Mario Odyssey,90,1700.05
Minecraft,95,550.54

Si lo ves formateado es porque Gist lo hace así, pero si le das en “view raw” se verá como es originalmente.

Como sea, es una lista de juegos con calificación y precio. Recuerda que estos datos no son reales; solo son de ejemplo.

Leer CSV con Python manualmente

Veamos el primer enfoque, el cual es leerlo sin usar módulos o paquetes. El algoritmo es sencillo.

Primero, abrimos el archivo como cualquier otro. Luego, lo iteramos línea por línea (pero omitimos la primera, pues es el encabezado). En cada paso, usamos split para convertir la línea a lista (de este modo tendremos las columnas del archivo).

Ahora podemos acceder a la lista y tendremos cada valor a través del índice. La primera columna estará en el índice 0, la segunda en 1, etcétera.

El código queda así:

"""
    https://parzibyte.me/blog
"""

nombre_archivo = "videojuegos.csv"
with open(nombre_archivo, "r") as archivo:
    # Omitir el encabezado
    next(archivo, None)
    for linea in archivo:
        # Remover salto de línea
        linea = linea.rstrip()
        # Ahora convertimos la línea a arreglo con split
        separador = ","
        lista = linea.split(",")
        # Tenemos la lista. En la 0 tenemos el nombre, en la 1 la calificación y en la 2 el precio
        nombre = lista[0]
        calificacion = int(lista[1])
        precio = float(lista[2])
        print(
            f"Juego: '{nombre}' con calificación {calificacion} y precio {precio}")

Como puedes ver, usamos next para omitir la primera línea, pues al final el archivo es un iterador. También es importante notar que usamos las conversiones de tipos, por ejemplo convertimos a entero en la línea 17, y en la 18 convertimos a flotante.

Finalmente usamos las f strings de Python para imprimir cada valor. La salida será:

Juego: 'Cuphead' con calificación 100 y precio 180.0
Juego: 'Doom eternal' con calificación 99 y precio 1400.0
Juego: 'Horizon Zero Dawn' con calificación 90 y precio 450.7
Juego: 'Resident Evil 2 Remake' con calificación 95 y precio 450.88
Juego: 'Super Mario Odyssey' con calificación 90 y precio 1700.05
Juego: 'Minecraft' con calificación 95 y precio 550.54

Usar módulo csv en Python

Ya existe un módulo nativo en Python que sirve para leer archivos CSV. Permite igualmente leer un archivo pero de una manera más sencilla.

Comenzamos importando el módulo csv, después creamos un lector a partir del archivo, usando csv.reader. Finalmente tendremos un iterador en donde ya tenemos a las columnas (como cuando hicimos el split) y podemos acceder a ellas.

import csv
"""
    https://parzibyte.me/blog
"""

nombre_archivo = "videojuegos.csv"
with open(nombre_archivo, "r") as archivo:
    lector = csv.reader(archivo, delimiter=",")
    # Omitir el encabezado
    next(lector, None)
    for fila in lector:
        # Tenemos la lista. En la 0 tenemos el nombre, en la 1 la calificación y en la 2 el precio
        nombre = fila[0]
        calificacion = int(fila[1])
        precio = float(fila[2])
        print(
            f"Juego: '{nombre}' con calificación {calificacion} y precio {precio}")

La diferencia que podemos notar aquí es que al crear el lector indicamos el delimitador, de este modo podemos cambiarlo fácilmente. La salida es la misma que la anterior.

Ejercicio con Python y CSV: promedio

Solo para terminar este post te mostraré un ejercicio sencillo. A partir de los datos, vamos a sacar el promedio de los precios y el promedio de la calificación. Realmente estos datos no son útiles, pero sí que sirven para practicar.

Por lo tanto el código queda así:

import csv
"""
    https://parzibyte.me/blog
"""

nombre_archivo = "videojuegos.csv"
with open(nombre_archivo, "r") as archivo:
    lector = csv.reader(archivo, delimiter=",")
    # Omitir el encabezado
    next(lector, None)
    suma_calificacion = 0
    suma_precio = 0
    contador = 0
    for fila in lector:
        # Tenemos la lista. En la 0 tenemos el nombre, en la 1 la calificación y en la 2 el precio
        nombre = fila[0]
        calificacion = int(fila[1])
        precio = float(fila[2])
        suma_calificacion += calificacion
        suma_precio += precio
        contador += 1
    promedio_precio = suma_precio / contador
    promedio_calificacion = suma_calificacion / contador
    print(
        f"Promedio de precio es {promedio_precio} y promedio calificación es {promedio_calificacion}")

También te dejo con más tutoriales sobre Python.

Estoy aquí para ayudarte 🤝💻


Estoy aquí para ayudarte en todo lo que necesites. Si requieres alguna modificación en lo presentado en este post, deseas asistencia con tu tarea, proyecto o precisas desarrollar un software a medida, no dudes en contactarme. Estoy comprometido a brindarte el apoyo necesario para que logres tus objetivos. Mi correo es parzibyte(arroba)gmail.com, estoy como@parzibyte en Telegram o en mi página de contacto

No te pierdas ninguno de mis posts 🚀🔔

Suscríbete a mi canal de Telegram para recibir una notificación cuando escriba un nuevo tutorial de programación.
parzibyte

Programador freelancer listo para trabajar contigo. Aplicaciones web, móviles y de escritorio. PHP, Java, Go, Python, JavaScript, Kotlin y más :) https://parzibyte.me/blog/software-creado-por-parzibyte/

Ver comentarios

Entradas recientes

Servidor HTTP en Android con Flutter

El día de hoy te mostraré cómo crear un servidor HTTP (servidor web) en Android…

4 días hace

Imprimir automáticamente todos los PDF de una carpeta

En este post te voy a enseñar a designar una carpeta para imprimir todos los…

4 días hace

Guía para imprimir en plugin versión 1 desde Android

En este artículo te voy a enseñar la guía para imprimir en una impresora térmica…

1 semana hace

Añadir tasa de cambio en sistema de información

Hoy te voy a mostrar un ejemplo de programación para agregar un módulo de tasa…

2 semanas hace

Comprobar validez de licencia de plugin ESC POS

Los usuarios del plugin para impresoras térmicas pueden contratar licencias, y en ocasiones me han…

2 semanas hace

Imprimir euro € en impresora térmica

Hoy voy a enseñarte cómo imprimir el € en una impresora térmica. Vamos a ver…

4 semanas hace

Esta web usa cookies.