Openrefine

Iniciando con OpenRefine

Publicado por Nicolas Bohorquez en - Actualizado / Categoría : Tools

Serie: openrefine 
Etiquetas: data science openrefine  

En Alephsa manejamos datasets[ref]conjuntos de datos[/ref] muy variados, y las labores de ingenieria de datos además de gustarnos nos permite probar herramientas muy variadas, de hecho es bien conocido que la mayor parte del trabajo en data science actualmente tiene que ver con la ingeniería de datos, es decir a labores de búsqueda, descarga y limpieza de datos.

Openrefine es una herramienta que provee un servidor para realizar este tipo de tareas con un cliente web muy sencillo de manejar, incluye utilidades comunes para el tratamiento de datos, un lenguaje de expresiones propio (GREL) o usar Python (Jython 2.5.1) como lenguaje[ref]Estaria bueno incluir la nueva version 2.7 de Jython para tener mayor compatibilidad[/ref]. En esta serie de post trabajaremos sobre Linux pero las instrucciones son fácilmente adaptables a otros sistemas operativos[ref]Aunque deberia considerar probar Linux, es libre y tiene muchas otras ventajas[/ref].

Primeros pasos

La wiki de OpenRefine tiene instrucciones muy claras sobre la descarga y ejecución en Linux, Win2 y MacOS. Sin embargo me gustaría agregar que es buena idea agregar más memoria a la ejecución del servidor si se quiere trabajar comodamente con datasets de mas de algunas decenas de miles de datos. Para ello la wiki contiene instrucciones claras por plataforma.

Dataset de ejemplo

Existen muchos conjuntos de datos disponibles en la red, para nuestros ejercicios vamos a usar los disponibles en el Catalogo de datos abiertos del estado Colombiano , más específicamente los "Contratos públicos activos publicados en el secop" (461268 registros) y el "Histórico de los contratos públicos publicados en el secop" (166850 registros) que nos deberian permitir trabajar sobre una base de 628118 filas con las siguientes columnas:

  • numerocontrato
  • numeroproceso
  • tipoproceso
  • estadocontrato
  • tipocontrato
  • nombreentidad
  • detalleobjeto
  • razonsocialcontratista
  • deptomunicejecucion
  • valorcontrato
  • fechafirmacontrato
  • fechaliquidacion
  • fechaterminacionanticipada

Sobre los cuales vamos a hacer algunas tareas comunes para poder hacer un analisis preliminar.

Agregando los datos

Cada uno de los dataset consiste en varios archivos separados por comas (CSV) que debemos concatenar antes de cargarlos en OpenRefine. Para ello desde una terminal nos situamos en el directorio donde tenemos los archivos y ejecutamos:

> cd /home/usuario/directorio_donde_estan_los_archivos
> cat Ministerio_de_tecnologias_de_informacion_y_las_comunicaciones.contratoshistoricos* > mtic.contratos.historicos.csv
> cat Ministerio_de_tecnologias_de_informacion_y_las_comunicaciones.contratosactivos*  mtic.contratos.activos.csv
> cat mtic.contratos.* > mtic.contratos.csv

estos comandos agruparan en tres archivos todos los que descargamos previamente:

  • mtic.contratos.activos.csv
  • mtic.contratos.historicos.csv
  • mtic.contratos.csv : Suma de los anteriores

y desde OpenRefine hacemos un nuevo proyecto con el archivo mtic.contratos.csv:

Una vez generado el proyecto lo primero que notamos es que el numero de registros no coincide (628111 vs 628118 esperados), porque? cómo lo arreglamos?, para resolver éstas y otras dudas (además de generar nuevas dudas), por favor, continúe con nuestro siguiente post.

Un saludo.

Este articulo es el número 1 en la serie "openrefine", otros artículos:

  1. Openrefine
  2. Filtros y grupos en Openrefine
  3. Duplicados en Openrefine
  4. Separar datos en Openrefine
Nube de Etiquetas

Me siento con suerte

Suscribase a las actualizaciones