Manejo de archivos CSV y JSON

← Fundamentos de Python ⌂ Home

Objetivos

Desarrollo

Archivos CSV

Nota: para realizar los siguientes ejemplos se requiere del siguiente archivo.

Los archivos CSV (Comma Separated Values) por lo general son muy utilizados en la industria debido a que diversos programas de análisis de datos, como Excel o algunos manejadores de bases de datos, permiten exportar toda la información en archivos de este tipo.

Lectura

Para realizar la lectura de la información debemos abrir el archivo y con ayuda del módulo CSV ejecutar el método reader, el cual ayudará a crear un objeto de tipo reader.

import csv

with open("random-bank.csv") as archivocsv:
    datos = csv.reader(archivocsv, delimiter=',')

Para poder analizar los datos, es conveniente transformarlos a alguna estructura de datos de python, como las listas o diccionarios y con eso poder iterar y realizar algún tipo de análisis.

import csv

with open("random-bank.csv") as archivocsv:
    datos = csv.reader(archivocsv, delimiter=',')
    datos = list(datos)
    for elemento in datos:
        print(elemento)

Para poder trabajarlos en forma de diccionario lo hacemos con el método DictReader, el cual nos regresara un diccionario con los encabezados del CSV, como podemos ver en el siguiente ejemplo:

import csv

with open("random-bank.csv") as archivocsv:
    datos = csv.DictReader(archivocsv, delimiter=',')
    datos = list(datos)
    for elemento in datos:
        print(elemento['nombre'])

Escritura

La escritura en CSV se logra mediante el método writer del módulo CSV, y tenemos dos opciones, escribir en un archivo con datos o generar un nuevo archivo CSV.

Para escribir en un archivo existente se recomienda lo siguiente:

with open("random-bank.csv", "a") as archivocsv:
    bankwriter = csv.writer(archivocsv, delimiter=",", lineterminator="\n")
    bankwriter.writerow(['Manuel Lopez', '3549562318260717', 'visa', '$4185.46'])

Y para generar un nuevo archivo CSV se hace de la siguiente manera:

import csv

with open("random-students.csv", "a") as archivocsv:
    encabezados = ['nombre', 'numero_cuenta', 'carrera']
    datos = csv.DictWriter(archivocsv, fieldnames=encabezados)
    datos.writeheader()
    datos.writerow({
        'nombre':'Alejandro Zepeda',
        'numero_cuenta': '123456789',
        'carrera': 'Ing. Computacion'
    })

Como podemos observar se usan diccionarios para tener un control sobre los encabezados que se deben generar.

Ejercicios

  1. Con el archivo de las cuentas bancarias, crear un programa que imprima cuantos tipos de cuentas existen, y cuantos clientes hay de cada tipo.
  2. Con el archivo de las cuentas bancarias, imprimir la suma total de dinero de todos los clientes.
  3. Con el archivo de las cuentas bancarias, imprimir el cliente con la mayor cantidad de dinero y el cliente con la menor cantidad.

Fuentes