Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Informe de Práctica
Duración: 18//01/2021 -
Felipe Sanhueza C. 12/03/2021
19.432.964-4 Fecha de entrega: 30/04/2021
sanhuezafce@gmail.com .
(+56) 9 5670 5786 Instituto Milenio Fundamentos
de los Datos
Informe de Práctica Felipe Sanhueza C.
Índice
1. Resumen 2
2. Introducción 3
2.1. Equipo de Trabajo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
2.2. Descripción general del trabajo realizado . . . . . . . . . . . . . . . . . . . . 3
4. Objetivos 5
5. Metodologı́a 6
6. Descripción de la solución 7
6.1. Hardware y Software . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
6.2. Series de tiempo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
6.3. Corrección de errores en BBDD . . . . . . . . . . . . . . . . . . . . . . . . . 9
6.4. Fortalezas y debilidades de las soluciones . . . . . . . . . . . . . . . . . . . . 11
7. Reflexión 12
7.1. Dificultades . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
7.2. Herramientas Universitarias . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
7.3. Aprendizajes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
8. Conclusión 14
1
Informe de Práctica Felipe Sanhueza C.
1. Resumen
El trabajo fue realizado para el Instituto Milenio Fundamentos de los Datos (IMFD de
ahora en adelante). Este trabajo consistió en generar proyecciones económicas empleando
series de tiempo y, en crear un script en python el cual, corrija la estructura de un conjunto
de tablas dentro de una base de datos.
En una primera instancia el practicante investiga todos los conceptos nuevos y tecnologı́as
a utilizar durante la práctica lo cual concluye en una definición de requisitos y metodologı́a
de trabajo para la práctica.
Por otro lado, se desarrolló también un script en python el cual luego de recibir feedback
del supervisor, se le agregaron features, se testeo, documento y, corrigieron casos bordes.
Esto concluye la práctica de manera exitosa cumpliendo ambos objetivos de los dos pro-
yectos, a pesar de no haber tenido proyecciones completamente precisas, el supervisor
está satisfecho con el trabajo realizado ya que se obtuvieron resultados preliminares cohe-
rentes sobre los cuales el IMFD podrá a futuro ajustar los parámetros con más datos y
técnicas.
Sobre los aprendizajes obtenidos, por un lado está la capacidad de explorar lenguajes
de programación nuevos (para el programador) y, por otro lado, la manera apropiada de
levantar requisitos con un cliente.
También vale la pena mencionar el manejo de la librerı́a pandas y, de las técnicas necesarias
para implementar series de tiempo.
2
Informe de Práctica Felipe Sanhueza C.
2. Introducción
Actualmente el IMFD está dividido en múltiples equipos de trabajo los cuales asumen dis-
tintos proyectos todos relacionados al ámbito de Data Science. El practicante se integró al
instituto para prestar apoyo a 2 equipos: el equipo del gobierno de datos los cuales re-
querı́an asistencia para corregir errores en la base de datos de un cliente y, al equipo del
ministerio de transporte (MTT de ahora en adelante) el cual debı́a generar una proyección
empleando series de tiempo.
Debido a esta estructura de trabajo, se dividirán las principales partes del informe para
comentar de manera ininterrumpida cada proyecto.
Finalmente con los datos adquiridos a partir de los gráficos, se generaron proyecciones
sobre el 2022 respecto a las exportaciones desde los puertos de Chile y, se validaron a
través de tests y análisis de gráficos. Con esto se concluye el trabajo para el equipo MTT.
Durante el trabajo con el gobierno de datos el practicante tuvo que solucionar un problema
respecto a la estructura de las tablas presentes en una base de datos, esta corrección se
realizó a través de un script de python el cual, debı́a pasar por un pipeline antes de ser
aceptado por el sistema.
Este script una vez implementando se notificó al supervisor el cual, entregó feedback
sobre nuevas features a implementar. El script entonces es testeado y, las nuevas features
implementadas, concluyendo ası́ el trabajo realizado.
3
Informe de Práctica Felipe Sanhueza C.
MTT
Para el caso del MTT, al momento de que el practicante se incorpora al equipo, estos
estaban cerrando una fase del proyecto con el ministerio de transporte luego de haber
entregado un set de visualizaciones respecto a las exportaciones de los puertos Chilenos.
El problema entonces, era que para la siguiente fase del proyecto, se solicitó generar unas
proyecciones respecto a las exportaciones de los puertos para el año 2021-2022 las cuales
debı́an realizarse con series de tiempo. En la duración de la práctica, se consideraba dentro
de las tareas del practicante aprender sobre series de tiempo.
Gobierno de datos
Por otro lado, el trabajo con el gobierno de datos se basó en un problema en la base de
datos de un cliente, el cual luego de instalar un software para administrar la información
de su personal, generó inconsistencias debido a que el personal no usaba tanto la nueva
plataforma. Estas inconsistencias llevaron a que solicitarán del IMFD ayuda para norma-
lizar bases de datos y crear nuevas vistas. No obstante durante el proceso de validación, el
equipo del IMFD previa a la llegada del practicante se encontró con un bug causado por
la lógica de SQL al eliminar tablas en cascada las cuales contenı́an un ciclo por lo cual,
debieron implementar una solución a través de triggers. Esto último a pesar de haber so-
lucionado el problema, tenı́a una desventaja muy grande ya que al tener que implementar
todos los triggers manualmente y debido al volumen de las tablas, quedaron inconsistencias
difı́ciles de detectar manualmente en varias tablas.
4
Informe de Práctica Felipe Sanhueza C.
4. Objetivos
Los objetivos de esta práctica fueron nuevamente por proyecto ya que entre estos, no habı́a
relación.
MTT
Objetivo Principal
Objetivos especı́ficos
2. Implementar la proyección en Python u, otro lenguaje que permita una mejor pro-
yección.
Gobierno de datos
Objetivo Principal
Automatizar la corrección de las tablas para cualquier base de datos que contenga incon-
sistencias causadas por el problema encontrado.
Objetivos especı́ficos
1. Estudiar las bases de datos y las tecnologı́as necesarias para trabajar en este proyecto.
5
Informe de Práctica Felipe Sanhueza C.
5. Metodologı́a
Se dividirá la metodologı́a en dos partes según cada proyecto.
MTT
Comenzando el trabajo, se procede a estudiar series de tiempo para determinar cuál es
la mejor forma de implementar la solución al problema dado. Esta se concluye que es
implementar un modelo ARIMA en python.
Se procede a hacer los ajustes necesarios para implementar un modelo SARIMAX el cual,
una vez implementado y ajustados los parámetros, entregó mejores resultados.
Una vez finalizado esto, se procede a ordenar los archivos, documentar los métodos y los
análisis realizados para tener un entregable ordenado.
Gobierno de datos
El practicante comienza estudiando la estructura de las bases de datos y, las herramientas
requeridas para trabajar en el proyecto como Gitlab y Docker. Por otro lado, le fue asignado
investigar cómo implementar de manera más efectiva una solución al problema dado. Esto
concluyo en que serı́a un script de python.
Esta fase constó de más de una iteración ya que durante el proceso de corrección se hizo
notar la falta de algunos requisitos que no fueron apropiadamente definidos en un inicio
por lo cual se tuvo que hacer un refactoring de parte del código.
Una vez finalizadas estas iteraciones, se da por cerrada la fase de corrección y se organiza
un entregable bien documentado para el equipo.
6
Informe de Práctica Felipe Sanhueza C.
6. Descripción de la solución
6.1. Hardware y Software
En términos de Hardware, debido a la pandemia todo el trabajo realizado en la práctica
fue remoto, por lo que el hardware relevante son el computador mismo del practicante el
cual se solicitó que tuviera Linux como sistema operativo.
Se realizaron también otras predicciones sobre otros subsets de datos una vez se tuvo la
estructura principal de estas.
Datos a trabajar
Se recibió un dataset filtrado con información justa y necesaria para realizar la serie de
tiempo. El practicante no tuvo acceso al detalle de las operaciones.
El trabajo común para cada archivo (los cuales generan las predicciones) era un pre pro-
cesamiento de datos el cual incluı́a filtrar los datos (para adquirir un sub set adecuado
para cada predicción dada) y, realizar un proceso de re-sampling de estos, para que cada
fila represente un mes de transacciones en vez de una sola. Esto se realizó con la librerı́a
pandas y, permitió obtener predicciones más precisas sobre los datos.
7
Informe de Práctica Felipe Sanhueza C.
utilizar estos modelos, se requirió de la librerı́a de python pandas ya que esta permite
arreglar los datos para obtener predicciones más precisas.
Una vez realizado todo esto, se llama finalmente al método del modelo el cual es invocado
con los parámetros adquiridos a partir del análisis de todos los gráficos y test previamente
realizados.
Proyecciones
Se realizó en primer lugar, una predicción sobre el “FOB total”. Esta predicción fue al-
tamente documentada tanto en la adquisición de los parámetros como en la lógica de la
implementación ya que, se usarı́a como estructura para las demás predicciones.
Los resultados adquiridos de esta proyección no fueron del todo buenos. A pesar de múlti-
ples intentos de adquirir una mejor proyección, existieron limitaciones debido a errores y
problemas con la librerı́a statsmodels y, debido a que en los datos dados al practicante,
existı́an inconsistencias.
Lo mismo ocurrió al usar otros subconjuntos de datos para realizar proyecciones sobre
otros atributos del set de datos inicialmente entregado al practicante.
Proyecciones en R
Para realizar esto, se implementó en un breve periodo de tiempo, los gráficos y test nece-
sarios para adquirir parámetros para el modelo.
Finalmente los resultados adquiridos son de mejor calidad, logrando obtener con ellos
valores distintos para los parámetros previamente seleccionados. Esta implementación en
R no pudo llegar más lejos debido al tiempo restante en la práctica y, no pudo solucionar
los problemas previamente encontrados.
8
Informe de Práctica Felipe Sanhueza C.
Validación y documentación
Para todos los casos, los resultados de las predicciones lograron ser parcialmente validadas,
Indicando que existe aún espacio para ajustar los parámetros y el modelo en sı́.
En una primera reunión con el supervisor se definió que la solución debı́a cumplir los
siguientes requisitos:
Script de python
El script entregado al supervisor recibe por argumentos una carpeta (la cual debe ser el
esquema donde se encuentran las tablas a revisar) y, un parámetro adicional –fix.
El código lo que hace es revisar todas las tablas del esquema y almacenar en un diccio-
nario información sobre qué tablas referencia un trigger o, una llave foránea (todo esto
será necesario para la corrección) y, sobre el contenido del archivo donde se encontró dicha
tabla.
Luego el código a través de una expresión regular(regex ), revisa la tabla referenciada por
un trigger cualquiera y, en dicha tabla busca una llave foránea que la referencia devuelta
(comportamiento esperado). Este mismo proceso se realiza en el sentido inverso (de una
llave foránea a triggers) y, en caso de encontrar inconsistencias estas se guardan en una
lista (estas son las tablas a corregir).
Finalmente, el script si no fue llamado con el parámetro –fix solamente entrega un reporte
de errores para que el usuario pueda revisar manualmente en caso de necesitarlo. En caso
9
Informe de Práctica Felipe Sanhueza C.
de dar el parámetro, el script edita los archivos donde están las tablas afectadas agregando
la estructura de las llaves foráneas o triggers faltantes.
Este código debe pasar un pipeline que lo evaluaba con flake8 para ser aceptado por el
repositorio del proyecto por lo cual, el practicante tuvo que preocuparse de mantener la
solución al estándar adecuado. También en base a comentarios del supervisor y miembros
del equipo, el código se modifica para cumplir con buenas prácticas y, para utilizar las
técnicas más adecuadas para las tareas más generales (parsear argumento, estructurar
tests entre otros),
El código una vez finalizado, se notificó tanto al supervisor como a un miembro del equipo
los cuales, revisaron el código y entregaron feedback respecto a prácticas utilizadas y, sobre
features que se deberı́an agregar al script. Entre estas se encontraban:
Para poder implementar estos nuevos requisitos, se debió refactorizar parte del código lo
cual se realizó exitosamente.
Finalmente, se realizan test con pytest los cuales se volvieron parte del entregable final.
Estos tests incluyen un set de tablas para modificar y, tablas desde las cuales se retornan
al estado inicial de tal forma de no alterar los tests por su ejecución misma. Estos tests
revelaron más casos los cuales fueron corregidos a tiempo.
Una vez realizado todo lo previo, se documentan todos los métodos realizados, los tests y,
se solicita el merge con la rama principal del proyecto dando por finalizado el trabajo con
el equipo del gobierno de datos.
10
Informe de Práctica Felipe Sanhueza C.
Otra debilidad que vale la pena mencionar, es el hecho de que el modelo fue entrenado con
datos del 2018 al 2020. En este perı́odo ocurre el “estallido social”(2019) y, la pandemia
llegó a Chile (2020) por lo tanto, no se contaban con condiciones normales para los datos.
La debilidad de esta solución, recae en que debe ejecutarse el script de python para realizar
la corrección, esta no es capaz de hacerse por sı́ sola y, es algo que a futuro quizás deba
implementarse.
11
Informe de Práctica Felipe Sanhueza C.
7. Reflexión
Previamente el practicante habı́a realizado una práctica relacionada al área de la investi-
gación en el laboratorio SPEL, esta práctica al ser también del mismo ámbito reafirmó la
idea de que la investigación es algo de gran interés para el practicante y, particularmente
el área del data science.
La manera en que los múltiples equipos trabajaban de manera disjunta por un gran ob-
jetivo general, demostró el alto grado organizacional que la empresa tiene y, demostró al
practicante lo eficiente que puede ser un gran equipo de trabajo con un liderazgo y orga-
nización adecuada.
7.1. Dificultades
Las principales dificultades de esta práctica fueron durante el proyecto del equipo MTT y
la implementación de series de tiempo.
Por otro lado, se utilizó python para la implementación de estos modelos y, ya avanzado
el trabajo se evidencio que el lenguaje R es mucho más adecuado para este trabajo, en
parte debido a su capacidad para dar mejor feedback sobre el comportamiento del modelo
y, por los múltiples problemas presentados por la librerı́a statsmodels de python la cual,
es la principal herramienta para modelar series de tiempo en este lenguaje.
Esta librerı́a fue tanto una ayuda como un problema, una ayuda dado que sin ella no
se hubiese podido alcanzar una solución pero aun ası́, esta tenı́a métodos sin implemen-
tar, presentaba problemas para desplegar resultados y, genera también problemas cuando
habı́an inconsistencias en los datos los cuales se pretendı́an arreglar manualmente. Esto
ocurrió principalmente porque los métodos de statsmodels reciben wrappers con la infor-
mación necesaria en vez de vectores o dataframes de pandas.
12
Informe de Práctica Felipe Sanhueza C.
Respecto al equipo del gobierno de datos, una dificultad que se presentó de manera ines-
perada fue la poca claridad del practicante al levantar requisitos para el script de python
con el equipo del gobierno de datos. Durante el desarrollo del proyecto este requirió de
refactoring y múltiples adiciones de features lo cual, pudo haber sido evitado y se pudie-
ron haber ahorrado mucho trabajo si, en la reunión inicial con el supervisor el practicante
hubiese planteado más dudas y hubiese ahondado más en lo solicitado y, en lo que respecta
al uso esperado de la solución.
Por otro lado, herramientas adquiridas en cursos como MA1002-1 (Cálculo Diferencial e
Integral) y, CC3201-1 (Bases de Datos), ayudaron al practicante a entender las tareas
particulares dados en cada proyecto, ya que por un lado el trabajo de las series de tiempo
involucra un alto componente matemático y, por el lado del gobierno de datos, todos los
archivos manipulados eran scripts para crear tablas en SQL.
7.3. Aprendizajes
Respecto de los aprendizajes, el principal fue uno adquirido en el equipo del gobierno
de datos. Debido a las múltiples iteraciones en el entregable final, fue evidente que se
requirió de un levantamiento de requisitos más estricto de parte del practicante, hubieron
múltiples problemas que se a pesar de no ser graves, requirieron de trabajo extra que pudo
ser fácilmente evadido.
Otro aprendizaje importante fue respecto a los lenguajes de programación. Para el caso
del proyecto del MTT, se utilizó python debido a la familiaridad del practicante con este
lenguaje y, debido a que en la investigación se evidenció que existı́an herramientas para
poder realizar el trabajo. Ya más avanzada la practica R demostró finalmente ser la mejor
herramienta a pesar de todo.
Uno de los motivos por los cuales se escogió python fue para enfocar los esfuerzos de la
investigación (solo series de tiempo y no eso más un lenguaje de programación nuevo), el
practicante reconoce que al momento de aprender R para realizar unas pruebas rápidas,
esto no fue una tarea tan difı́cil como pudo haberlo pensado. Lo cual deja como enseñanza
13
Informe de Práctica Felipe Sanhueza C.
Algo más particular, fue el aprendizaje de la librerı́a pandas. Esta fue una de las herra-
mientas más importantes para el manejo de los datos durante la implementación de las
series de tiempos y su uso adecuado fue un aprendizaje importante.
8. Conclusión
En primera instancia respecto al cumplimiento de los objetivos de la práctica, se puede
decir que estos fueron exitosos. A pesar de que los modelos no dieron resultados comple-
tamente precisos, los objetivos de este trabajo eran ver si con una proyección con series
de tiempo se obtenı́an resultados coherentes y relevantes(lo cual se obtuvo), el ajuste de
parámetros es algo que realizara el IMFD en base al trabajo del practicante y a futuro.
Las herramientas matemáticas entregadas por la carrera fueron puestas a prueba en todo
momento por la práctica y fue un gran recordatorio de las capacidades que el programador
tiene al manejar un nivel matemático alto.
El ambiente laboral fue grato y se llegó a relacionar con muchas personas a pesar de las
condiciones (pandemia). Las reuniones diarias, los workshops semanales y las conversa-
ciones ocasionales con el equipo de trabajo permitió un ambiente psicológico de plena
confianza donde ideas podı́an ser compartidas sin miedo y se encontraba siempre apoyo
cuando se requerı́a.
En conclusión, se comenzó esta práctica con altas expectativas y todas estas se cumplieron,
presentó un desafı́o tanto matemático como computacional y, se aprendió mucho del ámbito
laboral empresarial de la computación.
14