Usando VS Code para Datos tabulares en pyret
VS Code
Bajen e instalen VS Code de la pagina de Microsoft. Vayan a los extensions (las cajitas en el margen de la izquierda) y busquen pyret. El proceso esta descrito en el libro.
Leyendo datos tabulares en VS Code
En clase y en el libro vimos varias maneras de trabajar con datos tabulares en pyret. Esta vez vamos a intentar leerlos con VS Code. Verifiqen las instrucciones en el libro (la seccion que dice "Load from a CSV file on your computer:").
En este documento, daré un ejemplo utilizando los datos que el gobierno de Puerto Rico publica sobre el tren urbano.
Datos
Los datos que utilizaré de ejemplo son este conjunto.
Si exploran el conjunto, aparece un enlace para descargar el archivo .csv. Este archivo es problematico porque ponen "," dentro de numeros mayores a 1000, y tiene varios datos en blanco.
Reparando los datos
Bajé el archivo tabla-patrocinio-tren-urbano.csv
y usé sed
para reparar las columnas:
sed -E 's/"([[:digit:]]+),([[:digit:]]{3})"/\1\2/g' tabla-patrocinio-tren-urbano.csv | sed -E 's/"([[:digit:]]),([[:digit:]]{3}),([[:digit:]]{3})"/\1\2\3/g' > tabla-patrocinio-tren-urbano-num.csv
(NOTA No espero que puedan reproducir esto. Lo estoy dejando documentado para la proxima vez que dé la clase. sed
es otro lenguage de programacion, y hay libros enteros de como utilizarlo.)
Los datos corregido estan en el siguiente enlace. Los pueden bajar a su computadora y guardar junto con su programa.
https://ccom.uprrp.edu/~humberto/pages/teaching/ccom3030-f2025/tabla-patrocinio-tren-urbano-num.csv
Importando los datos a pyret
Siguiendo los ejemplos del libro y de la documentacion de pyret podemos leer los datos. Recuerden cambiar el contexto a dcic2024
.
include csv
include data-source # for sanitizers
fun num-or-empty-sanitizer(A, col, row) -> Number:
doc: "Convert a (possibly empty) cell to a Number. Empty cells are assigned a 0 value."
if string-sanitizer(A, col, row) == "":
# cell was empty
0
else:
# not empty, try converting to number
num-sanitizer(A, col, row)
end
end
path = "tabla-patrocinio-tren-urbano-num.csv"
tren-data =
load-table: Month, Bayamon-entradas, Deportivo-entradas, Jardines-entradas, Torrimar-entradas, Martinez-Nadal-entradas, Las-Lomas-entradas, San-Francisco-entradas, Centro-Medico-entradas, Cupey-entradas, Rio-Piedras-entradas, Universidad-entradas, Pinero-entradas, Domenech-entradas, Roosevelt-entradas, Hato-Rey-entradas, Sagrado-Corazon-entradas,Total-entradas , Bayamon-salidas, Deportivo-salidas, Jardines-salidas, Torrimar-salidas, Martinez-Nadal-salidas, Las-Lomas-salidas, San-Francisco-salidas, Centro-Medico-salidas, Cupey-salidas, Rio-Piedras-salidas, Universidad-salidas, Pinero-salidas, Domenech-salidas, Roosevelt-salidas, Hato-Rey-salidas, Sagrado-Corazon-salidas,Total-salidas
source: csv-table-file(path, default-options)
sanitize Total-entradas using num-or-empty-sanitizer
sanitize Total-salidas using num-or-empty-sanitizer
end
Graficando los datos
bar-chart(tren-data, "Month", "Total-salidas")
Ejercício de práctica
Crea una gráfica de el total de salidas por mes el 2015 en pyret. Pueden
utilizar filter-with
para encontrar filas que contienen "2015" en la columna
"Month" (con la funcion string-contains
). Hay un ejemplo de
filter-with
en el libro.
Adjunto el programa completo para leer y graficar los datos de arriba. Enlace al programa .arr completo