Category Archives: Uncategorized

Algunos números de pauta oficial en Argentina

Hoy, por Twitter, me enviaron un link a la información sobre “fondos públicos destinados a la difusión de actos de gobierno” que publica la Jefatura de Gabinete. En formato PDF, como no podía ser de otra manera.

Cada vez que aparece un PDF con una tabla adentro pruebo si Tabula (la aplicación que estoy desarrollando desde el año pasado) es capaz de extraerla. Funcionó casi perfectamente y luego de un poco de data cleansingla información estuvo lista para ser analizada.

La Jefatura de Gabinete publica semestralmente un detalle de gasto publicitario: por organismo y rubro, y por proveedor y rubro. El último conjunto de datos disponible corresponde al primer semestre del año 2013.

En sendos Google Spreadsheets, republiqué datos extraídos de los PDFs:

Van algunos gráficos simples generados a partir de los datos por proovedor y rubro:

Resultados del Censo 2010 Argentina a nivel de radio censal

Los censos de población son uno de los conjuntos de datos fundamentales que produce el Estado. En Argentina, el último Censo Nacional de Población, Hogares y Viviendas se realizó el día 27 de octubre de 2010. Más de 3 años después, aparecieron en la web los resultados del cuestionario básico, desagregados a nivel de radio censal (la división espacial más chica en la que se publica el censo) y publicados en forma de una aplicación Windows desarrollada en base al sistema REDATAM

¿Qué es REDATAM?

Como muchos institutos nacionales de estadística, el INDEC usa el programa REDATAM para la confección y publicación de la base de datos de resultados censales. Este sistema es desarrollado por el CELADE, dependiente de la Comisión Económica para América Latina y el Caribe. Considerando su adopción por numerosos organismos gubernamentales y el prestigio de sus responsables, no dudo de la alta calidad del sistema. No obstante, como bien señaló Andrés Vázquez en su blog, REDATAM presenta algunas complicaciones a la hora de reutilizar los datos con las herramientas, prácticas y convenciones a las que nos hemos acostumbrado en los últimos años. Llama la atención, además, que no estén públicamente disponibles ni su código fuente, ni la especificación de los formatos que utiliza para almacenar la información.

REDATAM es una aplicación con interfaz gráfica de usuario, pero también incluye un “procesador estadístico” (R+SP Process) que permite definir y exportar tablas mediante programas escritos en un lenguaje propio del sistema. Dado el diccionario de variables y entidades almacenadas en REDATAM, es posible construir consultas que exporten todas las variables a un archivo para luego convertirlo a un formato abierto que facilite su reutilización.

Liberando la información

Publiqué en GitHub un conjunto de scripts en lenguaje Python, que generan las queries apropiadas para ser ejecutadas por REDATAM y exportar casi todas las variables a DBF. Estos últimos son luego convertidos a archivos CSV (valores separados por comas). También publiqué los resultados de este procesamiento.  Cabe aclarar que estos archivos no son una fuente oficial de información y no asumo ninguna responsabilidad sobre su uso.

Las consultas generadas funcionan únicamente para los datos mencionados antes, pero es posible que esta metodología sea aplicable a otras bases de información publicadas con REDATAM.

¿Dónde están los radios censales?

Los radios censales —contenidos en las fracciones censales— son una división administrativa del espacio. Su tamaño está definido por la cantidad de viviendas que contienen: una fracción censal contiene un promedio de 5000 viviendas y un radio contiene un promedio de 300 (fuente).

Solo la provincia de Buenos Aires y la Ciudad Autónoma de Buenos Aires publican la definición de estas divisiones en formatos geográficos apropiados. El INDEC mantiene un sitio informativo sobre “Unidades Geoestadísticas” para todo el país, pero publica los polígonos de los radios y fracciones censales en forma de archivos SVG desprovistos de información geográfica (imprescindible para georeferenciar los datos)

Un ejemplo

Creo que visualizar información pública en “alta resolución” es valioso. El año pasado, como becario del programa OpenNews en el diario La Nación, participé en el desarrollo de una infografía interactiva sobre los resultados de las elecciones legislativas que introdujo la novedad de mostrar los resultados para cada centro de votación, en lugar de hacerlo a nivel distrital como suele ser el caso. Para mi sorpresa, tuvo muchísima repercusión —asumí que solo iba a interesarle a unos pocos nerds de la política y la información pública.

Combinando un mapa de radios censales de Bahía Blanca y la información extraída de REDATAM, se puede hacer —por ejemplo— un mapa del porcentaje de hogares con algún indicador de necesidades básicas insatisfechas:

Este ejemplo es lo mínimo que puede hacerse con esta información. La publicación en un formato más ameno que REDATAM, espero, facilitará su utilización y aumentará la conciencia sobre el valor de la información pública publicada de forma apropiada.

[Muchas gracias a Andy Tow y a Andrés Vázquez por la ayuda y comentarios]

 

Sistemas, democracia y utopías tecnológicas

Unas lúcidas palabras de Adam Curtis:

Technology, and the spread of information it allows, can gather people together in squares in Egypt. What I find somewhat naive is the idea that you find within a lot of this web utopianism. Which is that, somehow, you can get a new democracy like this. Because underlying this, there’s the idea that all what democracy is, is all of us connected as nodal points of a network and —with feedback, a cybernetic idea— we’ll get to a shared harmony and out of that we’ll come to a shared harmony and order.

Last time I looked, that’s not what democracy is, just a lot of individuals. That’s a naive market idea of democracy that we suffer from. Democracy is negotiating between the powerless and large, strong vested interests in society who often use their unequal access to power to their advantage at the expense of the less powerful. Democracy is about electing people who will stand up and represent you —the weak— and negotiate against the powerful.

I’m very sympathetic to those movements, but self organizing systems are just that. They’re a retreat to managerialism, they’re a retreat to bureaucracy, they’re only a system. And that’s the ideology of our time: we’re all systems. What I argue, is that all those revolutions —if you look at them now— they all have gone backwards. They were incredibly noble, brave, hundreds of thousands people challenged those in power and got rid of them. What next?

The idea that we’re all systems, and that system stabilizes itself is just that. We stabilize ourselves and that’s it. Is limiting or useless.

(Cita tomada de una entrevista en el programa radial Little Atoms)

Presupuestos Públicos: del PDF a la visualización

Los fines y comienzos de año traen muchas noticias sobre los presupuestos públicos. Los medios comienzan informando sobre los proyectos de presupuesto enviados a las legislaturas por los ejecutivos, luego reportan sobre el debate, y finalmente sobre las inevitables disconformidades de la oposición, sindicatos y privados. Esas coberturas suelen centrarse en las variaciones interanuales de las partidas; tal ministerio subió en un 10% su presupuesto de gastos, y así. Es una gran oportunidad, en general no aprovechada por los medios digitales argentinos, para usar herramientas de visualización de datos que permitan una mejor comprensión de esos cambios presupuestarios. Por el contrario, eligen escribir cosas como “el Ministerio X tendrá asignados 54.234 millones de pesos, lo que representa un incremento del 12.98% con respecto al año pasado“. Es decir, consideran a la web como una hoja de papel y se limitan a traducir a lenguaje escrito lo que podría ser mejor expresado gráfica e interactivamente.

Quizás la razón sea que muchos gobiernos, salvo honrosas excepciones, insisten en disponibilizar información pública en formatos muy difíciles de procesar y poco apropiados para el intercambio de información. En este post vamos a tomar como ejemplo los presupuestos de gastos publicados por el gobierno de la provincia de Buenos Aires en formato PDF, el favorito de los funcionarios públicos.

Primera página del presupuesto de gastos por jurisdicción y objeto (pcia BS.AS, 2013)

Primera página del presupuesto de gastos por jurisdicción y objeto (pcia BS.AS, 2013)

La imagen anterior es una captura de una página del presupuesto de gastos 2013 de la provincia de Buenos Aires. Queremos visualizar esa información. Si hubiera estado publicada en el formato apropiado, como CSV o inclusive Excel, podríamos habernos puesto manos a la obra. Pero está en PDF, así que vamos a tener que extraer los datos que contiene. Para eso vamos a usar Tabula, una herramienta opensource para liberar tablas atrapadas en PDF que comencé a desarrollar el año pasado.

Este video muestra cómo extraer una tabla como la del presupuesto con Tabula:

 

Vamos a obtener un archivo CSV, que tiene la siguiente estructura:

1.1.1.02.01.000 - PODER JUDICIAL - ADMINISTRACION DE JUSTICIA -,5623235000,5060399000,38500000,229600000,260736000,34000000, 0, 0, 0
ACE-0001 - SUPREMA CORTE DE JUSTICIA,1212978700,1132555800,12520300,56192800,11709800, 0, 0, 0 , 0
ACE-0002 - TASA RETRIBUTIVA DE SERVICIOS JUDICIALES (Ley 11.594),270000000,235300000, 0, 700000, 0,34000000, 0, 0 , 0
ACE-0003 - INFRAESTRUCTURA DE LA JUSTICIA DE PAZ LETRADA - LEY 10,4000000, 0, 100000,3400000, 500000, 0, 0, 0 , 0

La primer línea representa el primer nivel de desagregación del presupuesto, seguido por el segundo nivel. Cada una de las filas contiene, además, las diferentes componentes del gasto (total, gastos en personal, etc). Para esta visualización, vamos a usar el total de cada partida.

Para facilitar el procesamiento vamos a aplanar esta estructura mediante este script en lenguaje Python (pero podríamos haber usado Excel, OpenOffice Calc u OpenRefine):

import re,sys, csv

r = csv.reader(open(sys.argv[1]))
csv_out = csv.writer(sys.stdout)
juris = code_juris = None

for l in r:
    if re.match(r'\d\.', l[0]):
        s = l[0].split(' - ', 1)
        juris = s[1]
        code_juris = s[0]
        continue
    if juris is not None and re.match(r'[A-Z][A-Z][A-Z]-\d+', l[0]):
        s = l[0].split(' - ', 1)
        csv_out.writerow([code_juris, juris, code_juris + s[0], s[1]] + [n.replace('.', '') for n in l[1:]])

Luego de procesar los datos originales con este programa, obtenemos otro CSV:

1.1.1.02.01.000,PODER JUDICIAL - ADMINISTRACION DE JUSTICIA -,1.1.1.02.01.000ACE-0001,SUPREMA CORTE DE JUSTICIA, 920826957, 767799850, 7711477, 135545330, 9770300, 0, 0, 0 , 0
1.1.1.02.01.000,PODER JUDICIAL - ADMINISTRACION DE JUSTICIA -,1.1.1.02.01.000ACE-0002,TASA RETRIBUTIVA DE SERVICIOS JUDICIALES (Ley 11.594), 146500000, 126750000, 0, 700000, 0, 19050000, 0, 0 , 0
1.1.1.02.01.000,PODER JUDICIAL - ADMINISTRACION DE JUSTICIA -,1.1.1.02.01.000ACE-0003,INFRAESTRUCTURA DE LA JUSTICIA DE PAZ LETRADA - LEY 10, 2500000, 0, 28000, 1972000, 500000, 0, 0, 0 , 0
1.1.1.02.01.000,PODER JUDICIAL - ADMINISTRACION DE JUSTICIA -,1.1.1.02.01.000ACE-0004,MATERIAL BIBLIOGRÁFICO E INFORMÁTICO PARA LAS BIBLIO, 4000000, 0, 1600000, 200000, 2200000, 0, 0, 0 , 0

Vemos que el script aplanó la estructura, incluyendo el primer nivel de desagregación en todas las filas del conjunto de datos resultante. Además, remueve los puntos separadores de miles y genera un identificador único para las partidas de segundo nivel.

Con esto, ya estamos listos para subirlo a OpenSpending, el sistema de visualización de datos financieros gubernamentales construído por la Open Knowledge Foundation. No voy a explicar cómo usar OpenSpending; es bastante fácil una vez que se entiende el uso de su data modeler. Lo importante es que, con relativamente poco esfuerzo, podemos ir del PDF a una visualización:

(Visualización Treemap para los datos de composición del Gasto por Nivel Institucional, Programa y Objeto del Gasto — Provincia de Buenos Aires, 2014)

El treemap, una buena manera de representar distribución de magnitudes en datos que tienen jerarquía, es solo una forma posible de representar la información. Según la necesidad, podíamos concentrarnos en la composición del gasto para algunas jurisdicciones, o mostrar variaciones interanuales.

Enero 18: Hackatón de Liberación de PDFs en GarageLab

Hay una enorme cantidad de información atrapada en archivos PDF. Hay dos razones para eso, como dije en la charla que dí en la MediaParty 2013 de Hacks/Hackers Buenos Aires. La primera es ignorancia; muchos no saben que el PDF un pésimo formato para compartir información. La segunda es pura maldad: extraer datos de archivos de PDF es por lo menos molesto y muchos se aprovechan de eso.

Como becario 2013 del programa Knight-Mozilla OpenNews, trabajé bastante con conjuntos de datos en formato PDF. El resultado de ese interés fue Tabula, una herramienta libre para extraer tablas de archivos PDF que generó bastante entusiasmo en la comunidad de periodismo de datos y de datos abiertos.

Sunlight Foundation organiza un hackatón de liberación de PDFs los días 17, 18 y 19 de Enero. Desde GarageLab vamos a sumarnos a esa iniciativa y convocamos a programadores, activistas e interesados en la liberación de datos para el día sábado 18 enero a partir de las 11:00 hs a reunirnos en nuestro espacio para trabajar en herramientas, técnicas y problemas de extracción de información desde archivos PDF.

Si sos programador y tenés ganas de pasarte la tarde scrapeando PDFs, o si tenés algún conjunto de datos en PDF que quieras liberar, llená el formulario de inscripción (cupo limitado!) y acercate.

 

Base de datos de Municipios de Argentina

La Secretaría de Asuntos Municipales del Ministerio del Interior (Argentina) confecciona una base de datos bastante interesante: el listado de todos los municipios del país. Como mucha de la información generada por los estados —municipios, provincias o la nación—, no está publicada de manera tal que podamos usarla fácilmente. Esto está empezando a cambiar; algunos gobiernos están creando portales de información pública (datospublicos.gob.ardata.buenosaires.gob.argabierto.bahiablanca.gob.ar, entre otros) donde se ponen a disposición algunas de las bases de datos que genera el Estado (vemos que la información publicada en estos portales es bastante inocua —salvo honrosas excepciones—, pero también entendemos que esto recién comienza).

Como proyecto de domingo, escribí un scraper para extraer el listado de municipios del sitio web en el que está publicado. El código está disponible bajo licencia MIT y los datos los subí a un Fusion Table.

Hay información interesante en esta base de datos: nombre del jefe de gobierno de cada municipio, ubicación geográfica, fecha de fundación, página web, información de contacto.

Notablemente, sólo para el 30% de los más de 2200 municipios que figuran en esta base de datos hay un sitio web.

Resultados PASO 2013 en Bahía Blanca

Como parte de mi trabajo como becario Knight -Mozilla OpenNews en el diario La Nación, desarrollé visualizaciones de la distribución espacial del voto en la ciudad de Buenos Aires y los partidos de Lomas de Zamora y Tigre. Esos mapas se publicaron en dos notas: “Cómo salió la elección en la escuela donde votaste” y “Los resultados de todas las escuelas en los distritos de Massa e Insaurralde“.

Aprovechando ese trabajo, elaboré esa misma visualización para el partido de Bahía Blanca (resultados de la elección para candidatos a diputado nacional). La territorialidad del voto es bastante evidente:

Para reutilizar este mapa en otros sitios web, usar el siguiente código HTML: <iframe style=”width: 100%; height: 400px;” src=”http://dump.jazzido.com/bahia-paso2013/index_bahia.html”></iframe> — Se solicita citar la fuente.

 

 

Being a Knight-Mozilla Fellow is the best thing that can happen to you

[Versión en español: "Ser becario Knight-Mozilla OpenNews es lo mejor que te puede pasar"]

It’s been five months since I became one of the eight fellows in the OpenNews program organized by the Knight Foundation and the Mozilla Foundation.

I still have five months left, but I can say it has been the best year of my professional life.

And I want to convince all of you to apply to become a fellow next year.

 

How did I get here?

In 2012, I lived in the beautiful city of Bariloche, in southern Argentina, where I worked as part of the team that designed, built, and successfully launched CUBEBUG-1 “Captain Beto”, the first Argentine cubesat.

Besides space, I’ve been always interested in public information, open data, information visualization, the web and journalism. A tweet by @LNData convinced me to fill out the form. And after two agonizing months of interviews with the OpenNews team, I was selected as one of eight fellows for the 2013 OpenNews program.

Almost without realizing it, I went from a clean room to a newsroom.

 

The Knight-Mozilla OpenNews fellowship is the best thing that can happen to you.

Being a programmer is a privilege. Our profession is one of the most sought after and nothing indicates that this will change in the near future. In particular, journalism needs us. Among other things, it needs us to:

If that isn’t enough, as an OpenNews fellow, the result of your work will be free and open to the contributions of a great community.

In my five months as an OpenNews fellow, I worked with journalists, data analysts, and designers of Argentina’s daily La Nación and the wonderful team of La Nación DATA on many projects that had great impact. Among them:

  • Proyecto Censo (Census Project), a site to display the Argentine census data for 2001 and 2010.
  • An investigative work into the tragic flooding of La Plata city.
  • Training on D3.js and information extraction for journalists, programmers, and designers from the daily.

 

Being part of a community

As an OpenNews fellow, you’ll be part of a large network of journalists and programmers interested in the media and eager to share experiences and collaborate on a diverse array of projects.

That was the case of Tabula, an open source tool that was created out of the combination of a personal project and previous work by ProPublica one of the OpenNews media partners this and next year.

Tabula is a tool that tries to solve one of the pervasive problems in data journalism: the extraction of information trapped in PDF files. Either by ignorance or a desire to block access to information, some agencies publish their information on this format that is incompatible for the exchange of structured data.

I started the project earlier this year and soon after decided to join forces with ProPublica, who was working on a similar tool. After announcing it on Source (the official web site for the OpenNews program), Tabula was adopted by editors and activists around the world that need to use the data sets trapped within PDF files. Some instances:

  • SchoolCuts.org – A tool for information on education budget cuts in Chicago
  • A news story published in La Nación on the decline of tourism in Argentina, taking data from the Survey of Hotel Occupancy published as a PDF by Argentina’s National Institute of Statistics and Census (INDEC).

 

Still not convinced?

Apart from working with journalists and building open source tools, OpenNews fellows travel everywhere. During the first five months of my fellowship I was lucky to go to:

 

It is time to apply

This year, the media outlets participating in the program are The New York Times, La Nación, TheTexas Tribune, ProPublica and Ushahidi + Internews Kenya. Next year’s five fellows will spend 10 months working in these newsrooms.

If you like journalism, data, information visualization, open source software, and want to spend 10 months working on all that, as you travel all over the place and connect with a generous community, do not hesitate. Take a deep breath and fill out the application.

It’s the best that can happen to you.

 

Ser becario Knight-Mozilla OpenNews es lo mejor que te puede pasar

[English version: "Being a Knight-Mozilla Fellow is the best thing that can happen to you"

Hace 5 meses que soy uno de los ocho becarios para el 2013 del programa OpenNews que organizan Knight Foundation y Mozilla Foundation.

Todavía tengo 5 meses por delante, pero ya puedo decir que ha sido el mejor año de mi vida profesional.

Y quiero convencerlos de postularse para ser ser becarios el año que viene.

 

Cómo llegué a esto

En 2012 vivía en la hermosa ciudad de Bariloche, en el sur de Argentina, donde trabajaba en el equipo que diseñó, construyó y lanzó exitosamente a CUBEBUG-1 “Capitán Beto”, el primer cubesat argentino.

Pero, además del espacio, siempre me interesaron los datos públicos, la visualización de información, la web y el periodismo. Un tweet de @LNData me convenció de llenar el formulario de admisión a la beca OpenNews y luego de 2 angustiosos meses de entrevistas fui seleccionado como uno de los 8 becarios 2013 del programa OpenNews.

Casi sin darme cuenta, pasé de un satélite a una redacción de noticias.

 

Programar en la redacción

Ser programador es un privilegio: nuestra profesión es una de las más requeridas y nada indica que esto vaya a cambiar en el futuro cercano. En particular, el periodismo nos necesita. Entre otras cosas, nos necesita para:

Como si fuera poco, como becario OpenNews, el resultado de tu trabajo será libre y abierto a los aportes de una gran comunidad.

En los 5 meses que llevo como becario OpenNews, trabajé junto a los periodistas, analistas de datos y diseñadores de La Nación y el fantástico equipo de La Nación DATA en muchos proyectos con gran impacto. Entre otros:

 

Ser parte de una comunidad

Como becario OpenNews, vas a ser parte de una gran red de periodistas y programadores interesados en los medios, con ganas de compartir experiencias y colaborar en proyectos muy diversos.

Ese fue el caso de Tabula, surgido de la combinación de un proyecto personal y el trabajo previo de la agencia ProPublica (uno de los media partners de OpenNews para este año y el próximo).

Tabula es una herramienta que intenta resolver uno de los problemas omnipresentes en el periodismo de datos: la extracción de información atrapada en archivos PDF. Por desconocimiento o intención de obturar el acceso, algunos organismos publican su información en este formato muy poco apropiado para el intercambio de datos estructurados.

Comencé con el proyecto a principios de este año y poco tiempo después decidimos aunar esfuerzos con ProPublica, que estaba trabajando en una herramienta similar. Luego de anunciarlo en Source (el sitio oficial del programa OpenNews), Tabula fue adoptado por redacciones y activistas de todo el mundo que necesitan disponer de datos atrapados en tablas dentro de archivos PDF. Algunos casos:

 

¿Todavía no te convencí?

Además de trabajar junto a periodistas y constriuir herramientas open source, los becarios OpenNews viajamos por todos lados. Durante los primeros 5 meses de mi beca tuve la suerte de visitar

 

Ya es momento de aplicar

Este año, los medios participantes del programa son New York Times, La Nación, The Texas Tribune, ProPublica y Ushahidi+InterNews Kenya. Los 5 becarios del año próximo van a pasar 10 meses trabajando en esas redacciones.

Si te gusta el periodismo, los datos, la visualización de información, el software open source y querés pasar 10 meses trabajando en todo eso, mientras viajas por todos lados y conectás con una comunidad generosa; no dudes: respirá hondo y completá el formulario de admisión.