Me gusta trabajar con datos abiertos y crear aplicaciones o visualizaciones que ayudan a difundir esta información. Estas son algunas de las cosas que he hecho:
Desde el lanzamiento de los grandes modelos de lenguaje he estado usando algunos de estos como ChatGPT, Claude, Gemini y Copilot para ayudarme a elaborar algunos proyectos. He encontrado que estos modelos son muy útiles para generar código de tareas que tienen una lógica sencilla, pero que pueden ser tediosos o extensos. En particular, me ha ayudado en mayor medida a crear código HTML y JavaScript, en los que no tengo mucha experiencia.
Model Context Protocol (MCP) that allows LLMs to use Jupyter Notebook to execute code and make presentations. Demo.
First Model Context Protocol (MCP) that allows LLMs to use QGIS Desktop. Demo.
Este proyecto es una página web que monitorea en tiempo real el estado de las estaciones de Ecobici en la Ciudad de México, especialmente las reportadas como dañadas.
Es una app web que permite facilitar las cuentas grupales entre amigos o familiares. Resuelve el problema de ¿quién le debe a quién? Y ¿cuánto? Es una alternativa open source a Splitwise.
Este proyecto es una página web para visualizar los datos de los viajes realizados en el sistema público de bicicletas de la Ciudad de México, Ecobici.
Este proyecto es una página web para visualizar los datos de los viajes realizados con la tarjeta de movilidad de la Ciudad de México.
This project is a public website that allows to generate random tests with multiple choice questions for students based on an Excel file with questions and options.
In this website, I'm trying to mimic the functionality of the amazing website "Traza", by La Data, which I think is smart, useful, and simple.
AI powered chatbot to retrieve valuable information from electronic invoices generated using the Mexican tax authority (SAT).
esta herramienta es un visor web que permite cargar información de facturas XML y declaraciones mensuales en PDF para ayudar a llevar un registro de la contabilidad ante el SAT (recaudador de impuestos en México) para el régimen de Personas con Actividad Profesional y Empresarial.
Visualizaciones de los datos de uso del sistema de bicicletas compartidas Ecobici en la Ciudad de México
mapas de las 59 zonas metropolitanas de México a partir de las estimaciones de población de Facebook.
This script facilitates the conversion of various script files into a consolidated PDF document.
En un día típico hay entre 800 y 1600 Ecobicis deshabilitadas en las estaciones, esto puede representar que hasta 1 de cada 3 bicis ancladas está reportada como dañada. En muchos casos, todas las bicis de una estación están deshabilitadas, dejando a los usuarios sin opción de transporte. Más detalles aquí: https://www.linkedin.com/feed/update/urn:li:activity:7299878154691637248/
Siempre he tenido mucha curiosidad de entender hacia dónde viajan los usuarios de Ecobici, así que generé un par de animaciones que muestra las tendencias de movilidad de este sistema en la Ciudad de México. La visualización destaca los flujos entre zonas clave como Roma-Condesa y sus alrededores. Utilicé una cuadrícula y un análisis direccional ponderado para representar la dirección de los viajes. Para más detalles, consulta mi publicación en Twitter aquí.
Este año participé en los retos del Advent of Code. Fue mi primera participación en este evento y me ayudó a practicar retos de algoritmos a los cual no estoy habituado como científico de datos. Resolví al menos uno de los retos en 17 de los 25 días y obtuve 31 puntos. Además, como parte de la comunidad Le Wagon, impulsé al equipo de la Ciudad de México para quedar posicionados como el mejor equipo de América Latina y Canadá en la competencia interna entre campus. Le Wagon reconoció mi trabajo compartiendo las soluciones y recibí como premio una camiseta conmemorativa :)
Mi código puede ser consultado en este repositorio.
Este año participé en el datatón organizado por Danone. El objetivo del reto era predecir el grado de impacto ambiental de nuevos productos usando modelos de Machine Learning. En mi solución usé un modelo CatBoost y obtuve una puntuación de 936/1200 y la posición 8/23. Pueden consultar el código en el repositorio del proyecto.
Este año participé en el datatón organizado por la Secretaría de Economía, enfocado en inclusión financiera de las MiPymes en México. En mi trabajo, analicé la aceptación de medios de pago alternativos al efectivo en los micronegocios familiares en México, usando los microdatos de la ENIGH. Mi trabajo estuvo entre los 5 finalistas. La presentación y el código lo pueden consultar en el repositorio del proyecto.
Junto con Daniela Jiménez y Juvenal Campos participé en el Datatón Anticorrupción 2021 y obtuvimos el segundo lugar 🎉🥳. El datatón fue organizado por la Secretaría Ejecutiva del Sistema Nacional Anticorrupción de México y el reto propuesto consistía en identificar anomalías en declaraciones de funcionarios públicos. Nuestra propuesta consistió en detectar anomalías usando técnicas de aprendizaje supervisado y no supervisado. Los resultados los presentamos en un dashboard en el que se pueden consultar la información por individuo y por institución de gobierno. Aquí pueden consultar el tablero y aquí el repositorio de GitHub con el análisis.
Ha habido mucho revuelo porque en las elecciones a las alcaldías de la Ciudad de México la ciudad quedó dividida en poniente/oriente por las dos principales fuerzas políticas. El poniente "de derecha" versus el oriente de "izquierda". La división se ve clarísima en varios mapas (Primera imagen). Sin embargo, la realidad es mucho más compleja que eso. Además, la forma de representar la información influye mucho. Recordemos que los mapas generan distorsiones en la información mostrada porque el área no representa ninguna cantidad, solo el color. O dicho de otra forma: la tierra no vota, la gente sí (y muchas veces la gente tampoco vota).
Hice este mapa (segunda imagen) para reducir el ruido que introduce el área, cada punto son 5000 votos. Esto nos muestra que en ambos lados hay partidarios de las dos fuerzas políticas. Evidentemente hay una tendencia, pero es bueno mostrar también los matices.
Escribí una entrada en mi blog sobre esto:http://blog.jjsantoso.com/mapas-distribucion-puntos/
Rutas de vuelos sobre la CDMX, comparando el 11 de febrero de 2020 con el 5 de abril de 2021, después del rediseño del espacio aéreo de la Ciudad de México. Hecho con el lenguaje de programación #python
Hice este mapa con los tiempos de desplazamiento desde mi casa a todos los nodos de la red urbana de calles de la Zona Metropolitana del Valle de México, considerando una velocidad promedio de 14 km/h. Esto gracias a los datos generados por Geoff Boeing.
Esta gráfica se puede replicar fácilmente a cualquier ciudad de México (o el mundo) simplemente descargando los datos desde: https://dataverse.harvard.edu/dataverse/global-urban-street-networks .
Acá el código en python: https://gist.github.com/jjsantos01/70e43c485bdaae3c8b6f0a108c70cdea
Junto con Yunoen Badillo y Daniela Jiménez participamos en el Reto Data México, un concurso organizado por la Secretaría de Economía de México para encontrar opciones para la reactivación económica del país tras la pandemia de Covid-19. Nuestra propuesta consistió en un análisis de la recuperación del empleo formal, enfocándonos principalmente en los grupos que tradicionalmente son los más afectados por las crisis económicas. Hicimos un pequeño documento con nuestros hallazgos y construimos un tablero para medir a nivel municipal un semáforo de la recuperación del empleo. Con esta contribución ganamos el primer lugar 🎊🎉.
El tablero que construimos se puede consultar en: https://rybs.shinyapps.io/SemaforoEmpleo/ y el repositorio con los detalles del de nuestra solución puede ser consultados en el repositorio: https://github.com/jjsantos01/datatonse2020. La presentación se puede ver en: https://www.youtube.com/watch?v=8TfLm1m9s0Y a partir del minuto 43.
Junto con Juvenal Campos participamos en el Brewing Data Cup, un concurso de análisis de datos, organizado por Ab Inbev, y ganamos el primer lugar en México 🎊🎉. El reto consistía en encontrar la mejor forma de clusterizar los puntos de venta para minimizar la distancia de reparto cada día. El repositorio con los detalles del reto y nuestra solución pueden ser consultados en el repositorio: https://github.com/Databuesos-Team/brewdatacup2020
La Fundación Alzak me invitó a escribir una entrada en su blog . Yo escogí hablar sobre el gasto en contrataciones públicas, especialmente en la Región Caribe Colombiana (donde nací 💛💙💖 ).
Aquí se puede leer lo que escribí https://alzakfoundation.org/es/emergencia-y-compras-publicas-en-la-costa-caribe/
Acá el código del análisis que hice: https://gist.github.com/jjsantos01/02427d5225340259548ed54535783380
Desde el inicio de la pandemia de Covid-19 mi principal medio de transporte ha sido Ecobici 🚲❤. Por eso, hice una animación mostrando todos los viajes que hice durante el año.
El código se puede consultar en: https://gist.github.com/jjsantos01/c119eb434e8094583700b850f52ffb6e
Aprovechando los datos de valor catastral para cada predio de la Ciudad de México, quise probar la herramienta kepler.gl para mostrar la información a nivel manzana en 3D, para la Alcaldía Benito Juárez. En este caso, la altura de cada polígono estaba determinada por el valor promedio de los predios de la manzana. La visualización 3D tiene la ventaja de que nos permite explorar con detalle las manzanas, aprovechando mejor el carácter espacial de los datos.
El código se puede consultar en: https://gist.github.com/jjsantos01/efceb7ca9511ef091234e7e7dff7c9b0
Así ha sido el desarrollo urbano de la #cdmx en los últimos 70 años. A partir de los datos del catastro liberados por la @LaAgenciaCDMX tenemos el año de construcción o remodelación de los predios
En verde los predios que se añaden cada año, en blanco los de años anteriores.
El código está publicado acá: https://gist.github.com/jjsantos01/af25c02ffa30acde8473385f08baf76f
Siguiendo con el tema de visualizar la movilidad en la Ciudad de México, ahora hice esta animación con los vuelos que pasan sobre la ciudad en un día promedio (5 de noviembre de 2019). No están todos los vuelos por limitaciones de los datos, pero al menos nos da una idea de la cantidad de operaciones que debe soportar el Aeropuerto Internacional de la Ciudad de México. Aquí se muestran solo 340 vuelos, pero en un día normal el AICM debe atender unas 1100 operaciones (llegadas y despegues), en el límite de su capacidad máxima.
En febrero de 2020, casualmente justo antes de que empezaran los encierros por la pandemia de COVID, hice unas gráficas que mostraban los tiempos de llegada y salida de los vuelos de varios aeropuertos en México y USA. Luego, en abril del mismo año, con las políticas de encierro ya vigentes, volví a hacer las gráficas y pude ver lo notorio de los cambios en movilidad. Aquí está el código que usé y algunas de las gráficas generadas:
El 7 de diciembre se llevó a cabo el Datatón anticorrupción 2019, organizado por la Secretaría Ejecutiva del Sistema Nacional Anticorrupción y nuestro equipo se llevó el primer lugar 🏆🎉🎁.
El objetivo era usar datos de contrataciones públicas para encontrar posibles redes de corrupción. Nuestro equipo propuso varias metodologías para detectar irregularidades basadas en la información compartida y la interacción repetida entre contratistas del estado. Pueden consultar nuestro respositorio en la siguiente dirección:
https://github.com/JuveCampos/DatatonAnticorrupcion2019
Fue un gran trabajo en equipo con Jorge Juvenal Campos Ferreira, Daniela Jiménez Lara, Mitchell Valdes, Alejandro Blasco y Georgina Trujillo .
Acá una nota sobre el datatón: https://www.plataformadigitalnacional.org/blog/dataton-anticorrupcion-2019/
Analizo los tiempos de traslado en UBER entre distintos puntos de la Ciudad de México. También calculo medidas de tráfico para ver cuánto más demora un viaje debido a la congestión. Aquí un hilo en Twitter, acá el código del primer y segundo trimestre de 2019.
En 2019, Juvenal Campos y yo participamos en el concurso de visualización de datos organizado por el CIMAT y obtuvimos medalla de oro 🎊🎉🥇. Hicimos un análisis detallado de los viajes del sistema público de bicicletas de la Ciudad de México (ECOBICI).
Algunas de las gráficas y código pueden consultarse aquí
También pueden consultar los modelos de predicción de estatus de las cicloestaciones que entrenamos.
En 2020, Daniela Jiménez, Damián Lugo, Juvenal Campos y yo participamos en el concurso Explora Datos, organizado por el CIEP. Nuestro objetivo fue visualizar los gastos del gobierno federal Mexicano en programas de erradicación de la pobreza. En este archivo se puede consultar el código y gráficas que realizamos.
En febrero de 2019 participamos en el datatón carcelario organizado por Documenta AC, una asociación civil que promueve los derechos humanos de las personas recluidas en las cárceles del país. En esta ocasión obtuvimos el primer lugar con un proyecto que consistió en crear un índice de condiciones de vida en las cárceles al que denominamos INDHPOL. El INDHPOL es un índice compuesto por varias dimensiones que pudimos medir gracias a encuestas como la ENPOL de INEGI y otros datos que recopila la CNDH y Documenta. Como resultado, se creó una pequeña página web en el sitio de Documenta para consultar más detalles del índice. El código con el que se creó el índice se puede consultarse aquí.
El equipo estuvo conformado por Jorge Juvenal Campos Ferreira, Patricia Carmona, Crisna Cuchcatla Méndez, Daniel Choperena, Sonja Gerth, Nora Robledo Frías y yo.
En 2019, junto con un equipo conformado con otros devs y un financiero, participe en el Hackathon Fintech patrocinado por Startupbootcamp. El reto consistía en usar un sandbox de APIs bancarias para construir productos centrados en la salud financiera. Nuestro equipo propuso una plataforma llamada Finefin, que a partir de las transacciones financieras del usuario hacía una evaluación de su salud financiera, brindando recomendaciones y además promoviendo productos financieros que pudieran ser de utilidad. Puedes ver nuestra presentación y el código con el prototipo del proyecto.
En el Laboratorio Nacional de Políticas Públicas analizamos el DENUE 2019 recientemente publicado por el INEGI.
Elaboramos gráficas y mapas que muestran las altas y bajas de Unidades Económicas en todo el país.
El código se puede consultar en este repositorio.
Este año un equipo conformado por Juvenal campos, Alejandro Blasco, Daniel Martínez y yo participamos en el Hackathon BBVA en el reto de Pymes. El objetivo era crear un nuevo modelo de propensión al crédito que considere factores especiales para las Pymes considerando su ciclo de vida y particularidades. Nuestra propuesta fue un modelo de machine learning tipo Random Forest en el que incluimos muchos datos de fuentes abiertas como los datos de empleo del IMSS, padrón de contribuyentes del SAT, estadísticas bancarias y de inclusión financiera de la CNBV, negocios registrados en el DENUE, actividad económica trimestral y variables de seguridad.
El código con el procesamiento de datos y entrenamiento del modelo puede ser consultado aquí.
En los siguientes mapas trato de visualizar cuántas personas son. Usé los datos de Coneval por AGEB y las estimaciones de población de Facebook. Para calcular el número de personas en pobreza asumí el valor medio del rango en el que Coneval clasificó el AGEB. Por ejemplo, si un AGEB está en el rango (70, 100] entonces asigné que el 85% de la población de ese AGEB es pobre. La escala de colores está truncada a un máximo de 100 personas para poder hacer comparables las áreas metropolitanas grandes y chicas.
Hace poco Facebook (@facebookai) estimó la población de México de 2015 en cuadrículas georreferenciadas de 30x30 metros. Es un nivel de detalle impresionante. Los datos se pueden consultar en https://data.humdata.org/dataset/mexico-high-resolution-population-density-maps-demographic-estimates.
Con la nueva base de datos de las notas del DOF del @LNPP_MX buscamos información sobre las declaratorias de emergencia en el país.
Entre 2000 y 2018 se emitieron 1102 declaratorias de emergencias por desastres naturales.
La tendencia es creciente.
Código: https://github.com/jjsantos01/declaratoriasEmergencia/blob/master/emergencias.ipynb
En diciembre de 2018 participamos en el Datatón Anticorrupción, convocado por la Plataforma Digital Nacional y la Secretaría Ejecuta del Sistema Nacional Anticorrupción y obtuvimos el primer lugar 🎉. El equipo estuvo conformado por Daniela Jiménez, Crisna Cushcatla, Alejandro Sánchez, Juvenal campos y yo. Nuestro proyecto consistió en crear un indicador que sintetiza el riesgo de que una oferta pública de contratación vigente pueda contener irregularidades y termine como un caso de corrupción. Pueden consultar este blog para detalles adicionales.
Parte del código que utilizamos para hacer el procesamiento de datos y calcular el índice se puede ver aquí.
En el banco de datos del @LNPP_MX subimos varias bases de datos que contienen las notas del Diario Oficial de la Federación en un formato amigable para quienes hacen investigación. De 2013 a abril de 2019 las bases de datos incluyen el título y el texto de la nota. De 1917 a 2012 solo está disponible el título de la nota. Todas tienen fecha, edición, sección, rama e institución.
Datos: http://datos.cide.edu/handle/10089/17462
Repositorio con código para descargar el diario: https://github.com/jjsantos01/dof-dataset/tree/master
En 2019, Daniela Jiménez, Crisna Cuchcatla, Juvenal Campos y yo participamos en el concurso Explora Datos organizado por el CIEP. Nuestro objetivo fue visualizar los gastos del gobierno federal Mexicano en programas de Derechos Humanos. En este post de Twitter vienen algunos datos y en este archivo viene el código y gráficas que realizamos.
Junto con Yunoen participamos en el Hack CDMX 2018 y ganamos el primer lugar 🎉✨🏆 del reto 4 que consistía en usar datos para mejorar la movilidad. Nuestra propuesta consistió en crear un modelo de machine learning que fuera capaz de estimar el tiempo de traslado entre estaciones del sistema.
Aquí pueden consultar el repositorio con el código y reporte en PDF.
En junio de 2016 terminé mi maestría en Economía en el CIDE 🥳. El tema de mi tesina fue "Desigualdad de oportunidades en educación e ingresos laborales en México" y recibí una beca de la Fundación Rugarcía-Espinosa, a través del Centro de Estudios Espinosa Yglesias, para su elaboración.
El código y el documento final se puede consultar en este repositorio.
Durante el verano de 2015 realicé unas prácticas en el Centro CLEAR LATAM. Mi proyecto fue seleccionado entre varias propuestas y consistió en la evaluación de impacto del programa de transferencias condicionadas Familias en Acción sobre la mortalidad en los municipios de Colombia. Mis resultados mostraron efectos modestos, pero estadísticamente significativos.
El código y el reporte final de la investigación pueden consultarse en este repositorio.
En 2013 finalicé mis estudios de Economía en la Universidad de Cartagena (Colombia) 🥳. El título de mi tesis fue "Determinantes socio-económicos del estado de salud percibido en la región Caribe colombiana".
El código y el documento final se puede consultar en este repositorio.