Los archivos CSV (comma separated values) son muy útiles ya que muchos programas exportan datos en CSV y es una forma de tener un respaldo de nuestros datos. En este articulo les mostrate 3 formas faciles para leer archivos CSV con Python.
Python es un buen lenguaje de programación para manejar datos y hacer scripts que manipulen datos en CSV u otro formato.
Vamos a ver las 3 formas para leer archivos CSV.
Archivo de datos CSV
Lo primero sera mostrar el archivo de datos CSV que vamos a leer con los 3 scripts, ustedes pueden usar después el archivo que prefieran.
[code]nombre,email,edad
Agustin Ramos,evilnapsis@gmail.com,26
Sebastian Ramos,kuro@xmail.com,23
Leonardo Ramos,leonovox@xmail.com,17
Jennifer Janix,jjvxdix@xmail.com,26
Diana Ximx,dian@xmail.com,26
Este es un archivo CSV sencillo que tiene 3 columnas: nombre, email y edad
Los datos de los archivos por definición CSV comma separated values, siempre van separados por commas (,) pero es posible usar cualquier separador, y en los 3 scripts lo podemos cambiar, en caso de que deseen leer un archivo que no este separado por coma (,).
Forma 1: Usando Split
Esta es la forma mas fácil, sin usar ninguna librería
[code language=”python”]archivo = open("datos.txt")
for linea in archivo:
datos = linea.split(",")
print(datos[0]+"\t" +datos[1]+"\t"+datos[2])
Este ejemplo es la base para los siguientes ejemplos, ya que la estructura es la misma.
- Abrimos el archivo
- Recorremos linea por linea el archivo
- Usamos linea.split(‘,’) para separar la linea apartir del separador de coma y asi tener un array con 3 elementos (nombre, email, edad)
- Imprimimos los datos, es un array con 3 valores, pero siempre empieza por 0 (cero), por tanto tenemos los valores 0 = nombre, 1 = email, 2 = edad
En caso de que tengamos mas datos solo es cuestión de saber cuantas columnas tiene el CSV y asi agregarlas a la linea 4.
Forma 2: Usando CSV Reader
En esta forma vamos a usar una librería o modulo básico de python: csv
[code language=”python”]import csv
archivo = open("datos.txt")
reader = csv.reader(archivo,delimiter=’,’)
for linea in reader:
print(linea[0]+"\t" +linea[1]+"\t"+linea[2])
En este ejemplo hacemos lo siguiente:
- Importamos el modulo csv
- Abrimos el archivo
- Usamos el método csv.reader con el descriptor del archivo para descifrar el archivo, recordamos usar el deliminador ‘,’
- Recorremos linea por linea el reader
- Imprimimos los datos de la misma forma del ejemplo anterior, tomando el indice del array
En esta forma no usamos split pero la el csv.reader hace algo muy similar.
Forma 3: Usando CSV DictReader
Esta forma es un similar a la forma 2 solo cambia que en lugar de csv.reader usamos csv.DictReader y en lugar de usar el indice del array usaremos el nombre de la cabecera de cada columa: nombre, email, edad.
[code language=”python”]import csv
archivo = open("datos.txt")
reader = csv.DictReader(archivo,delimiter=’,’)
for linea in reader:
print(linea[‘nombre’]+"\t" +linea[’email’]+"\t"+linea[‘edad’])
Como pueden ver solo cambian las lineas 3 y 5
- Linea 3: Usamos csv.DictReader para descifrar el archivo
- Linea 5: Imprimimos los valores usando el array y la cabecera del archivo CSV definidos en la linea 1 del CSV
Esta es una forma un poco mas legible, tomando en cuenta que un archivo CSV de 20 columnas, por ejemplo, es mas difícil de manipular, se puede olvidar o confundir el indice de alguna columna y con esta forma queda claro el rol de cada columna.
Resultado
Aqui les muestro el resultado de ejecutar cada script.
No olviden dejar sus dudas y/o comentarios.