Los dos caras de los datos: la plática y la práctica. Así las vivimos en el Festival Guatemalteco de Gobierno Abierto

Daniel Villatoro - el noviembre 17, 2017 en Expediciones de Datos, Experiencias, Noticias

Durante dos días, autoridades, miembros de organizaciones sociales, periodistas y académicos se reunieron para hablar sobre un tema: cómo Guatemala puede ser un Estado más abierto. El 7 y 8 de noviembre Escuela De Datos se unió a este esfuerzo para llevar esas ideas a la práctica.

En un espacio dinámico para compartir experiencias, ideas e iniciativas realizamos dos expediciones de datos con toques un poco diferentes. La primera estaba enfocada a la visualización. Llevamos al espacio físico ideas abstractas y tablas de datos que suelen estar poco accesibles cuando no son llevadas a lo visual. La segunda estaba enfocada al análisis a través de programación y código.

Ambos grupos trabajaron con datos del programa Monitoreo Ciudadano que Hivos realiza en la prevención y atención de grupos vulnerables a la epidemia del VIH.

 

 

 

 

 

 

 

 

 

 

La plática

Para empezar el Visualizatón, hablamos sobre cómo visualizar información implica apuntar con un dardo a un propósito.  “Visualizamos datos porque esto nos permite explicar mejor, reducir el esfuerzo cognitivo y facilitar la generación de conocimiento” fueron los mensajes claves de una primera charla que yo guié.

Luego, Sergio Araiza (México) nos acompañó para hablar sobre las narrativas y cómo la difusión de datos clave se puede nutrir con el uso de símbolos, contrastes e imágenes que nos hagan “ver la historia que los datos cuentan de una manera tan fácil y directa como una fotografía”.

 

 

 

 

 

 

 

 

 

 

 

La práctica

Luego de dividirse en los dos grupos, llegó la hora de trabajar.

Al primer grupo le esperaba una mesa llena de cartulina, estampas, marcadores y otros materiales que les permitiría llevar a lo físico esas ideas que estuvieron desarrollando a lo individual. Eran aproximadamente 60 personas entre las cuales habían trabajadores municipales invitados al evento por el Instituto Republicano Internacional, estudiantes universitarios y personas poco familiarizadas con el uso de datos.

 

 

 

 

 

 

 

 

 

 

 

 

 

Al segundo grupo lo esperaban mesas y conexiones para que llegaran con sus computadoras a trabajar y seguir la serie de ejercicios y retos que les tenían preparados. Partiendo de la misma información, esta sesión estaba enfocada en analizar estos datos pero utilizando código y fue liderada por Sebastián Oliva, programador y fellow de Escuela, junto al cientista de datos especializado en salud, Kevin Folgar.

Con un grupo de programadores y cientistas sociales que sabían usar código, Sebastian y Kevin repasaron cómo funcionan los tipos de datos y cómo manipularlos a través de Python.

Para ello utilizaron Pandas —la librería que permite operar y analizar tablas numéricas y series de tiempo— y los Notebooks de Jupyter —que permiten escribir, correr, combinar y republicar código—.

Con estas habilidades lograron hacer ejercicios en los que agruparon y filtraron los datos del programa de monitoreo en salud  para también generar cálculos a través de tablas dinámicas.

Los resultados

Lo que queríamos lograr con el Visualizatón era que los usuarios poco acostumbrados a manejar datos perdieran el miedo, analizaran de qué manera enfocar la información y la pudieran plasmar de una manera creativa para luego explicarle al grupo un detalle o una situación particular de este conjunto de datos.

 

 

 

 

 

 

 

 

 

 

 

 

Al segundo grupo lo esperaban mesas y conexiones para que llegaran con sus computadoras a trabajar y seguir la serie de ejercicios y retos que les tenían preparados. Partiendo de la misma información, esta sesión estaba enfocada en analizar estos datos pero utilizando código y fue liderada por Sebastián Oliva, programador y fellow de Escuela, junto al cientista de datos especializado en salud, Kevin Folgar.

Con un grupo de programadores y cientistas sociales que sabían usar código, Sebastian y Kevin repasaron cómo funcionan los tipos de datos y cómo manipularlos a través de Python.

Para ello utilizaron Pandas —la librería que permite operar y analizar tablas numéricas y series de tiempo— y los Notebooks de Jupyter —que permiten escribir, correr, combinar y republicar código—.

Con estas habilidades lograron hacer ejercicios en los que agruparon y filtraron los datos del programa de monitoreo en salud  para también generar cálculos a través de tablas dinámicas.

Los resultados

Lo que queríamos lograr con el Visualizatón era que los usuarios poco acostumbrados a manejar datos perdieran el miedo, analizaran de qué manera enfocar la información y la pudieran plasmar de una manera creativa para luego explicarle al grupo un detalle o una situación particular de este conjunto de datos.

 

 

 

 

 

 

 

 

 

 

 

 

 

Aunque el segundo grupo estaba mucho más familiarizado al análisis de datos, no conocían muchas de las funciones que el lenguaje Python nos permite construir. Entre todos fueron siguiendo los ejercicios, conociendo las librerías y evaluando en qué ocasiones cierto código soluciona los problemas que encontramos en cualquiera de los pasos del Data Pipeline.

Sobre el festival de Gobierno Abierto

Esta fue la primera edición del Festival de Gobierno Abierto en Guatemala. Escuela de Datos se unió a este esfuerzo en otras actividades también y a lo largo del Festival participamos en distintas mesas y charlas.

Sergio Araiza moderó un conversatorio sobre cómo el periodismo se ha vuelto más colaborativo e involucra a otros actores para compartir métodos, datos y verificaciones. A él se le unieron dos de los cuatro proyectos que la fellowship de Escuela de Datos en este año ha asesorado para aplicar el Open Contracting Standard. “La colaboración, los datos abiertos y la tecnología permiten intercambiar conocimiento que mejore los procesos y niveles de investigación desde los medios de comunicación en el mundo digital” fue una de las conclusiones”.

Por la noche, los becados al festival de otros municipios y algunos de El Salvador y Honduras pudieron tener una plática más abierta sobre tecnología cívica y de qué manera su uso puede ayudarles a solventar los problemas que afligen a sus ciudadanos.
Aprovechamos la oportunidad para recordarles a todos que existen los “10 mandamientos del Open Data” y hubo siempre una oportunidad para aprender en medio de las bromas del #OpenDataJesus. Y para cerrar, aprovechamos que en el festival también estaba otro personaje, el #OpenGovJedi para predicar a todas las galaxias que los datos tienen un rol importante para transparentar la gestión pública y fortalecer la participación de los ciudadanos en sus instituciones.

 

 

 

 

 

 

 

 

 

 

 

 

 

Este evento fue organizado por los proyectos Munis Abiertas y Congreso Transparente, con el apoyo de la DW Akademie, quienes nos invitaron e incluyeron en la agenda. Para saber más sobre todas las actividades que esta maratón de Gobierno Abierto incluyó puedes seguir el hashtag #FGA en twitter.

Geodatos con Python

Marcos Ge - el noviembre 2, 2017 en Tutoriales

 Desde Escuela de Datos, Sebastián Oliva, fellow 2017, enseña cómo usar Python para generar mapas a partir de datos georreferenciados.

Pues seguir el webinar del 31 de octubre paso a paso en el video que compartimos contigo y el cuaderno que publicamos abajo. También puedes consultar el cuaderno de trabajo de Sebastián aquí.

Mapas y Python

Es obvia la importancia de los mapas, para la visualizacion de datos. Las coordenadas, latitud y longitud, pueden describir un punto sobre la tierra. Utilizamos estandares como WGS-84 para atar esas coordenadas a un punto real.

Utilizando MatPlotlib, podemos aprovechar Basemap, una libreria que provee funcionalidad básica de mapa, con la cual podemos construir y componer. Agregar poligonos, puntos, areas, barras, colores, etc; se hace mediante estas librerias.

Librerias

La libreria mas utilizada en el ecosistema Jupyter-Matplotlib es Basemap. Tambien existen otras, entre ellas, Plotly, que son muy poderosas y convenientes pero tienen dependencias externas.

Para este webinar, vamos a indagar mas en Basemap, que es el mas accesible.

Basemap

Basemap es una extensión de la funcionalidad disponible

Existen varias formas de instalarlo, así que puede ser un poco confuso. Dependiendo de el método en el cual tengas instalado matplotlib hace variar la forma apropiada de instalarlo.

Ambiente de Trabajo

$ #ESTE_ENV = midevenviroment
$ source ~/miniconda3/envs/$ESTE_ENV/bin/activate

$ conda install jupyter-notebook
$ conda install gdal -c conda-forge
$ conda install basemap -c conda-forge
$ conda install pandas seaborn

## En caso hayan instalado basemap en algun directorio no standard: utiliza un link para la carpeta data.
$ ln -s /home/tian/miniconda3/pkgs/basemap-1.1.0-py36_2/lib/python3.6/site-packages/mpl_toolkits/basemap/data/ /usr/share/basemap

In [16]:

# Importamos lo ya usual.
import matplotlib.pyplot as plt
import matplotlib.cm
import pandas as pd
import numpy as np
import seaborn

# Algunas librerias extra que usaremos
from matplotlib.colors import Normalize
import matplotlib.colors as colors
from numpy import array
from numpy import max

# Aqui cargamos Basemap
from mpl_toolkits.basemap import Basemap
from matplotlib.patches import Polygon
from matplotlib.collections import PatchCollection


sns.set(style="white", color_codes=True)

%matplotlib inline

Mapeando los terremotos globales de la ultima semana

Vamos a usar la feed de datos del US Geological, ellas tienen disponibles datos referenciados de actividad geologica a nivel mundial, regional y de EEUU.

In [17]:

quakes = pd.read_csv("http://earthquake.usgs.gov/earthquakes/feed/v1.0/summary/1.0_week.csv")

# Creamos la lista de latitudes y longitudes.
lats, lons = list(quakes['latitude']), list(quakes['longitude'])

In [60]:

mags = list(quakes['mag'])
quakes.head()

Out[60]:

time latitude longitude depth mag magType nst gap dmin rms updated place type horizontalError depthError magError magNst status locationSource magSource
0 2017-10-31T16:29:08.330Z 36.746834 -121.467163 9.00 2.78 md 56.0 61.0 0.02078 0.15 2017-10-31T16:32:56.802Z 11km SW of Ridgemark, California earthquake 0.24 0.45 0.16 66.0 automatic nc nc
1 2017-10-31T16:23:50.380Z 19.839001 -155.555664 23.85 2.06 md 44.0 110.0 0.08413 0.13 2017-10-31T16:27:14.110Z 23km SSE of Waimea, Hawaii earthquake 0.61 0.81 0.19 8.0 automatic hv hv
2 2017-10-31T16:15:45.210Z 37.603668 -118.955666 1.43 1.08 md 8.0 198.0 0.01381 0.02 2017-10-31T16:25:02.360Z 5km SSE of Mammoth Lakes, California earthquake 1.38 1.29 0.17 6.0 automatic nc nc
3 2017-10-31T16:14:54.100Z 37.598167 -118.954330 1.40 1.43 md 21.0 150.0 0.01940 0.03 2017-10-31T16:23:02.354Z 5km SSE of Mammoth Lakes, California earthquake 0.34 0.70 0.26 19.0 automatic nc nc
4 2017-10-31T15:54:17.460Z 19.265667 -155.392166 3.49 2.34 ml 47.0 106.0 0.02847 0.21 2017-10-31T16:00:00.580Z 11km NE of Pahala, Hawaii earthquake 0.37 1.25 0.32 8.0 automatic hv hv

5 rows × 22 columns

Iniciemos con el mapa

In [25]:

eq_map = Basemap(projection='robin', resolution = 'l', area_thresh = 1000.0,
              lat_0=0, lon_0=-130)
eq_map.drawcoastlines()
eq_map.drawcountries()
eq_map.fillcontinents(color = 'gray')
eq_map.drawmapboundary()
plt.show()
/usr/lib64/python3.6/site-packages/mpl_toolkits/basemap/__init__.py:1631: MatplotlibDeprecationWarning: The get_axis_bgcolor function was deprecated in version 2.0. Use get_facecolor instead.
  fill_color = ax.get_axis_bgcolor()
/usr/lib64/python3.6/site-packages/mpl_toolkits/basemap/__init__.py:1775: MatplotlibDeprecationWarning: The get_axis_bgcolor function was deprecated in version 2.0. Use get_facecolor instead.
  axisbgc = ax.get_axis_bgcolor()
 

In [64]:

figu, ax = plt.subplots(figsize=(20,10))
eq_map = Basemap(projection='robin', resolution = 'l', area_thresh = 1000.0,
              lat_0=0, lon_0=-130)
eq_map.drawcoastlines()
eq_map.drawcountries()
eq_map.fillcontinents(color = 'gray')
eq_map.drawmapboundary()
eq_map.drawmeridians(np.arange(0, 360, 30))
eq_map.drawparallels(np.arange(-90, 90, 30))

## Coordenadas a posiciones
x,y = eq_map(lons, lats)
eq_map.plot(x, y, '^', markersize=6)
 
plt.show()
/usr/lib64/python3.6/site-packages/mpl_toolkits/basemap/__init__.py:1631: MatplotlibDeprecationWarning: The get_axis_bgcolor function was deprecated in version 2.0. Use get_facecolor instead.
  fill_color = ax.get_axis_bgcolor()
/usr/lib64/python3.6/site-packages/mpl_toolkits/basemap/__init__.py:1775: MatplotlibDeprecationWarning: The get_axis_bgcolor function was deprecated in version 2.0. Use get_facecolor instead.
  axisbgc = ax.get_axis_bgcolor()
/usr/lib64/python3.6/site-packages/mpl_toolkits/basemap/__init__.py:3298: MatplotlibDeprecationWarning: The ishold function was deprecated in version 2.0.
  b = ax.ishold()
/usr/lib64/python3.6/site-packages/mpl_toolkits/basemap/__init__.py:3307: MatplotlibDeprecationWarning: axes.hold is deprecated.
    See the API Changes document (http://matplotlib.org/api/api_changes.html)
    for more details.
  ax.hold(b)

In [33]:

x[0]

Out[33]:

17740352.000926033

Veamos esto mas a detalle.

In [28]:

df = pd.read_csv('hiv_cr_data.csv')
df.columns
df.shape # (71, 8)
df.describe()
df.columns
df.loc[df.coordenadas == df.coordenadas]
subset = df.loc[df.coordenadas == df.coordenadas] 
coordenadas = subset[['sitio','latitud', 'longitud', 'coordenadas']]
coordenadas.head()

Out[28]:

sitio latitud longitud coordenadas
0 Esquina Sureste de la Iglesia del Corazón de J… 10.018010 -84.216480 (10.01801 , -84.21648)
1 Parque Central de Alajuela 10.016787 -84.213914 (10.016787 , -84.213914)
2 Parque de las Palmas, costado sur del hospital… 10.020168 -84.214064 (10.020168 , -84.214064)
3 Mall Internacional 10.006020 -84.212740 (10.00602 , -84.21274)
4 Ojo de Agua 9.985120 -84.195540 (9.98512 , -84.19554)

In [66]:

coordenadas.count()

Out[66]:

sitio          67
latitud        67
longitud       67
coordenadas    67
dtype: int64

In [67]:

coordenadas.coordenadas.head()

Out[67]:

0      (10.01801 , -84.21648)
1    (10.016787 , -84.213914)
2    (10.020168 , -84.214064)
3      (10.00602 , -84.21274)
4       (9.98512 , -84.19554)
Name: coordenadas, dtype: object

In [35]:

 (10.01801 , -84.21648)

Out[35]:

(10.01801, -84.21648)

In [30]:

fig, ax = plt.subplots(figsize=(10,20))

mapa = Basemap(projection='merc', 
    lat_0 = 9.74, lon_0 = -83.5,
    resolution = 'i',
    llcrnrlon=-88.1, llcrnrlat=5.5,
    urcrnrlon=-80.1, urcrnrlat=11.8)

mapa.drawmapboundary(fill_color='#479EE0')
mapa.drawcoastlines()


from ast import literal_eval as make_tuple
def unpac(t):
    # haciendo trampa en la vida
    return pd.Series(make_tuple(t))

def plot_area(pos):
    ps = unpac(pos)
    x, y = mapa(ps[1], ps[0])
    mapa.plot(x, y, 'o', markersize=7, color='#444444', alpha=0.8)
    
    
coordenadas.coordenadas.apply(plot_area)


plt.show()
/usr/lib64/python3.6/site-packages/mpl_toolkits/basemap/__init__.py:3298: MatplotlibDeprecationWarning: The ishold function was deprecated in version 2.0.
  b = ax.ishold()
/usr/lib64/python3.6/site-packages/mpl_toolkits/basemap/__init__.py:3307: MatplotlibDeprecationWarning: axes.hold is deprecated.
    See the API Changes document (http://matplotlib.org/api/api_changes.html)
    for more details.
  ax.hold(b)

In [12]:

clox = array(coordenadas['longitud'])
clay = array(coordenadas['latitud'])
clo = list(clox)
cla = list(clay)

In [51]:

clay.mean()
clay

Out[51]:

array([ 10.01801 ,  10.016787,  10.020168,  10.00602 ,   9.98512 ,
        10.001528,   9.998438,   9.99943 ,   9.998952,   9.996179,
         9.98495 ,   9.99961 ,   9.935734,   9.93335 ,   9.93284 ,
         9.93355 ,   9.9356  ,   9.9359  ,   9.93454 ,   9.927243,
         9.93387 ,   9.93191 ,   9.93378 ,   9.937275,   9.937206,
         9.93281 ,   9.868255,   9.864336,   9.864255,   9.86715 ,
         9.97685 ,   9.99725 ,   9.974695,   9.61626 ,   9.39646 ,
         9.42387 ,   9.43062 ,   9.930423,   9.930036,   9.934636,
         9.929361,   9.937733,   9.930169,   9.927714,   9.934579,
         9.927496,   9.93141 ,   9.938098,   9.927755,   9.933922,
         9.936659,   9.932065,   9.927739,   9.930635,   9.932147,
         9.93535 ,   9.93286 ,   9.927324,  10.018506,  10.018993,
        10.002973,   9.408455,   9.39838 ,   9.403425,   9.40677 ,
         9.866258,   9.865848])

In [58]:

plt.figure(2)
#fig.add_subplot(223)
fig2, ax2 = plt.subplots(figsize=(20,10))

mapa2 = Basemap(projection='merc', 
    lat_0 = 9.74, lon_0 = -83.5,
    resolution = 'i',
    llcrnrlon=-88.1, llcrnrlat=7.5,
    urcrnrlon=-80.1, urcrnrlat=11.8)
pos_x, pos_y = mapa2(clox, clay)
mapa2.drawmapboundary(fill_color='#A6CAE0', linewidth=0)
mapa2.fillcontinents(color='darkgrey', alpha=0.3)
mapa2.drawcoastlines(linewidth=0.1, color="white")

paleta = seaborn.diverging_palette(10, 220, sep=80, as_cmap=True)

#sns.cubehelix_palette(8, start=2, rot=0, dark=0, light=.95, reverse=True)

hb = plt.hexbin(pos_x, pos_y, gridsize=4, mincnt=1,
    edgecolor='none', cmap = paleta)

cb = fig2.colorbar(hb, ax=ax2)


plt.show()
/usr/lib64/python3.6/site-packages/mpl_toolkits/basemap/__init__.py:1775: MatplotlibDeprecationWarning: The get_axis_bgcolor function was deprecated in version 2.0. Use get_facecolor instead.
  axisbgc = ax.get_axis_bgcolor()
<matplotlib.figure.Figure at 0x7f8646f5d7f0>

Cool links

 

Haciendo mapas con ArcGIS en línea

invitado - el octubre 12, 2017 en Guest posts, Tutoriales

Desde Bogotá D.C., Andrés Forero  , especialista en GIS y datos geográficos, nos envía este post como parte de una serie tutorial sobre datos geográficos y cómo podemos aprovecharlos desde distintos softwares para su edición y publicación.

En estos últimos años he tenido la oportunidad de ejercer diferentes roles como consultor y asesor para el desarrollo territorial en Colombia, un rol que, dadas las deficiencias tecnológicas y gubernamentales existentes, ha sido un enorme reto profesional.

En Colombia existen 1.123 municipios, 900 de ellos requieren la actualización de su Plan de Ordenamiento Territorial, el cual es el reglamento oficial que regula y genera normas para el desarrollo adecuado del territorio y la utilización del suelo. Solo 100 de ellos, de acuerdo con el Departamento Nacional de Planeación – DNP, han apostado por modernizarse, concentrados en resolver grandes desafíos asociados a sistemas viales, transporte multimodal, gestión del riesgo de desastres, cambio climático y protección de recursos naturales, entre otros aspectos necesarios para el logro de una mejor calidad de vida y de ciudades sostenibles al servicio de sus habitantes.

Empoderar al ciudadano, al especialista y al tomador de decisiones implica encontrar herramientas que integren soluciones para dichos desafíos donde se garantice la participación conjunta. Partiendo de esta premisa, la construcción que hemos empezado a generar nace desde la cartografía social donde reunidos con líderes comunitarios y habitantes de un territorio se han empezado a identificar todos aquellos actores involucrados, desde la espacialización de los puntos de interés hasta la identificación de estrategias llevadas a cabo para mitigar riesgos.

Estas iniciativas han trascendido de lo análogo a lo digital, y es apenas lógico, es un salto necesario y obligatorio el cual facilita una toma de decisiones ideal. En Colombia, por ejemplo, la Organización Internacional para las Migraciones – OIM  ha realizado diferentes proyectos desde la cartografía social, a lo largo del territorio nacional enfocados en comunidades afectadas por el conflicto armado y la formulación de estrategias aplicadas al posconflicto. Desde septiembre del 2018, se ven reflejados en una biblioteca virtual georeferenciada conocida como BiblioDat, la biblioteca sobre construcción de paz y el conflicto en Colombia. México es otro gran ejemplo del empoderamiento de la tecnología y generación de información comunitaria en tiempo real a través de mapas colaborativos para la identificación con precisión de infraestructura, centros de acopio y capas de información posdesastre.

Imagen 1. Mapas táctiles para personas con discapacidad visual.
Fuente. Captura Propia.

¡Empecemos!

Creando mapas utilizando ArcGIS Online

 ArcGIS Online es un sistema SIG en la web de colaboración online que permite usar, crear y compartir mapas, escenas, aplicaciones y datos listo para usar. Para poder acceder a sus funcionalidades es necesario entrar allí creando una cuenta, de tal manera, que puedas tener un portal SIG propio. Sí, para nadie es un secreto que Esri fabrica software licenciado y eso no lo pondremos en discusión, pero déjenme decirles que como desarrolladores podemos acceder a sus funcionalidades para poderlas utilizar con estos fines… ¡No tiene costo!

Imagen 2. Registro gratuito en ArcGIS for Developers

 

 

 

 

 

 

 

 

 

 

 

Al momento de seguir los pasos que te solicitan allí, como el llenado de datos como nombre, apellido, correo, etc., te pedirá que le asignes un nombre al portal SIG que acabas de crear, el cual tendrá como dominio el siguiente:

 

http://tuportal.maps.arcgis.com

 

Listo, tienes tu portal geográfico desde el cual accederás con un usuario y contraseña donde podrás crear los mapas, publicar información y disponer la información que elijas hacia la comunidad.

Primero, ¿qué queremos mostrar en el mapa?

ArcGIS for Developers brinda la facilidad de agregar contenido proveniente de diferentes fuentes de información, o crearla desde allí, lo cual puede ser mucho mejor. Aquí empieza el trabajo de ustedes, dateros, la información espacial también mantiene unas buenas prácticas…. ¡y vaya si son extensas! dan para todo un estudio universitario de pregrado y hasta posgrado, de esto depende poder tener una representación geográfica adecuada. Comencemos creando una capa geográfica definiendo algunos parámetros utilizando la opción “Create an Empty Layer”.

La primera capa geográfica que crearemos corresponde a la identificación de (algunos) puntos de interés al interior de una zona de estudio. Villa de Leyva es un municipio colombiano ubicado en la provincia de Ricaurte del departamento de Boyacá, está ubicado a 40 km al occidente de Tunja, capital del departamento. Sobre este municipio agregaremos inicialmente tres puntos: la Plaza Mayor, el Museo Paleontológico y Pozos Azules. Para poder hacerlo, esta capa la denominaremos “puntos_de_interes” el cual será su título y nombre del servicio disponible para ser utilizado por otros desarrolladores. Agregamos algunas etiquetas para identificar con facilidad esta capa, en este caso: puntos de interés, Villa de Leyva, Escuela de Datos.

Imagen 4. Detalles de la capa geográfica

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Al hacer click sobre “Geometry” definimos cómo queremos representar la información, sea como punto, línea o polígono y bajo qué sistema de referencia estará dicha información. Aquí definimos “punto” y el valor por defecto “4326” el cual corresponde al sistema de referencia WGS 84.

Imagen 5. Geometría de la capa geográfica

 

Luego definimos los campos que deseamos incluir sobre la capa; se incluirán el nombre del campo, el alias y el tipo de dato (string, integer, double, date). Agregaremos cuatro de ellos los cuales se nombrarán así:

 

Nombre del campo Alias del campo Tipo de campo Requerido
Nombre Nombre String
Fecha_de_visita Fecha de visita Date
Visitantes_por_dia Visitantes por día Double
Imagen Imagen String

 

Imagen 6. Campos de la capa geográfica

 

 

 

 

 

 

 

 

 

 

 

Por último, se realizan las configuraciones necesarias para hacer de la capa un elemento editable, compartido y actualizado (offline y online) las cual se desplegarán por defecto. Para este caso, la capa será compartida para el público. Haz click en “Create layer” y ¡voilá!, se ha creado una capa geográfica.

La ventana que aparecerá por defecto corresponde a los metadatos de la capa geográfica la cual está sujeta a modificaciones como:

  • Imagen miniatura
  • Resumen
  • Descripción
  • Fecha de creación
  • Fecha de modificación
  • Etiquetas
  • Capas incluidas
  • Previsualización
  • Créditos
  • Detalles
  • Acceso y restricciones de uso
  • URL del servicio

 

Si te das cuenta, desde este momento ArcGIS establece como prioridad describir la capa que se está creando y es una buena práctica que nosotros debemos empezar a implementar en nuestro flujo de trabajo. Aclaro que es opcional, ya que este proceso puedes hacerlo luego de agregar los datos.

Imagen 7. Descripción de la capa geográfica

 

Representando datos sobre un mapa
Ya van 1110 palabras y agradezco que hayas llegado hasta esta sección. Aquí empezarás a agregar información en ArcGIS Online con la capa creada online, también puedes agregarla desde distintas fuentes de información.

Imagen 8. Descripción de la capa geográfica

Al hacer click sobre “Open in Map Viewer” verás el que será tu espacio de trabajo desde ahora, aquí desplegarás, procesarás y publicarás la información. Como ves, el espacio por defecto es realmente simple y facilita realizar algunas configuraciones.

  1. Primero cambia el mapa base. Selecciona la pestaña “Basemap” y elige “Open StreetMap”
  2. En la barra de búsqueda escribe “Plaza Mayor, Villa de Leyva”
  3. Ahora haz click sobre la pestaña “Edit” y “New Feature” y agregarás la información pedida en los campos creados anteriormente

Imagen 9. Agregando información al mapa

 

Los datos que se agregarán son los siguientes:

 

Búsqueda Nombre Fecha de visita Visitantes por día Imagen
Plaza Mayor, Villa de Leyva Plaza Mayor 8/1/2017  4:00:00 PM 185 https://goo.gl/NHTZ1M
Museo Paleontológico, Villa de Leyva Museo Paleontológico 8/2/2017  2:00:00 PM 50 https://goo.gl/nCJ4pd
Los Pozos, Villa de Leyva Pozos Azules 8/3/2017  1:00:00 PM 89 https://goo.gl/ToRSK3

Imagen 10. Visualización sobre el mapa

 

Puedes agregar los puntos que necesites de acuerdo a tus requerimientos, esta es la forma en que visualizar la información a través de ventanas emergentes. En este enlace encontrarás más información sobre cómo configurar el pop-up. Luego de editarla se desplegará así:

Imagen 11. Ventana emergente sobre el mapa

Agregando información desde un archivo separado por comas (.csv)

 Como todos en todos los archivos, aquí se debe tener un trabajo de carpintería por debajo para desplegar correctamente la información; es esencial que contenga entre sus campos, datos geográficos los cuales estén relacionados con coordenadas (X, Y) o una dirección que pueda geocodificar. Para desplegarla únicamente tengo que arrastrar el archivo .CSV el cual contiene más puntos de interés hacia el mapa. Puedes descargarla haciendo click aquí.

Imagen 12. Cargue de información desde un .CSV

 

 

 

 

 

 

 

 

 

 

 

 

Agregando información desde un shapefile (.shp)

 

El shapefile es el formato de datos vectorial más popular y extendido en el trabajo con un SIG, se trata de un formato vectorial que guarda la localización de elementos geográficos y atributos a ellos asociados, pero no es capaz de almacenar relaciones topológicas. Estos elementos geográficos se pueden representar a partir de una capa de tipo punto, línea o polígono (áreas).

 

Un shapefile se compone de varios archivos informáticos, sin los cuales no podríamos visualizarlo en un software SIG, siendo tres el número imprescindible:

 

  • .shp – almacena las entidades geométricas de los objetos.
  • .shx – almacena el índice de los elementos geométricos.
  • .dbf – tabla dBASE donde se almacenan los atributos de los elementos geométricos.

 

Por otro lado y, opcionalmente, un shapefile puede estar compuesto por otros archivos que lo hacen más completo para la explotación de la información, fundamentalmente son:

 

  • .prj – almacena la información relativa al Sistema de Coordenadas.
  • .sbn y .sbx – almacena el índice espacial de las entidades.
  • .shp.xml – almacena los metadatos de la capa.

 

Teniendo claro el concepto, lo que haremos ahora es agregar algunas vías que se encuentran allí, esto debe estar en un archivo comprimido .ZIP el cual será cargado en ArcGIS Online así:

  1. Ve a la pestaña “Add” y selecciona “Add Layer from File”
  2. Selecciona el archivo “vias.zip” el cual podrás descargar desde aquí

Imagen 13. Carga de información como un archivo

 

 

 

 

 

 

 

 

Agregando información desde ArcGIS Online como un servicio

 

Miles de usuarios a diario publican información como un servicio, de tal manera que pueda ser consumido por otras personas. Esto facilita que no haya redundancia de información, que se pueda procesar datos actualizados y que pueda llegarse a utilizar información oficial.

 

Para este ejercicio llamaremos la división administrativa del municipio de Villa de Leyva únicamente buscando la capa que ya está creada.

 

  1. Ve a la pestaña “Add” y selecciona “Search for Layers”
  2. Busca “Veredas Villa de Leyva” en “ArcGIS Online” y verifica que la casilla “Within map area” esté deshabilitada

Carga la capa que aparece allí

Imagen 14. Carga de información

 

 

 

 

 

 

 

 

Cambia el nombre de las capas

 

Viste algunas de las formas en que se agrega y se edita información a un conjunto de capas, ahora es necesario personalizar la visualización de tal manera que configurando una simbología adecuada llegue a ser mucho más amigable para el usuario final. Para ello es necesario modificar primero el nombre de las capas.

 

  1. Dirígete a la pestaña “Details” y selecciona la capa “veredas villa de Leyva”.
  2. En “More options” selecciona “Rename” y nómbralo ahora como “Veredas”.

Imagen 15. Renombrando capas

Imagen 16. Cambio de simbología sobre la capa “Vereda”

Imagen 17. Personalizando simbología sobre la capa “Vereda”

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

De aquí para adelante eres tú quien decide cómo mostrarás estas capas, ¿cómo representarías adecuadamente los drenajes y los puntos de interés?

Guarda y comparte el mapa…

 

  1. En la pestaña “Save” podrás asignarle un título, un resumen, etiquetas y guardar el mapa que has creado.
  2. Una vez guardado, ve a la pestaña “Share” y elige la audiencia a quien mostrarás el mapa.

Imagen 18. Edición final simbología

 

 

 

Hay más…

Puedes representar esta información de una manera mucho más amigable y te invito a que revises todos los storymaps que Esri ofrece donde existen diferentes plantillas de aplicaciones web responsive que pueden servirte para contrar más historias. Revisa https://storymaps.arcgis.com/en/ y escoge cómo quieres representar lo que quieres contar.

 

 

 

 

 

Cómo crear un mapa 3D de Buenos Aires, Argentina

invitado - el octubre 4, 2017 en Uncategorized

Por Nicolas Grossman y Bruno Salerno

Los mapas son excelentes herramientas para visualizar datos de una ciudad y compararlos entre zonas de la misma. Pero si además podemos graficar los edificios en tres dimensiones, la visualización resulta más impactante aún. En este tutorial contaremos cómo realizamos el mapa que muestra los precios promedio del metro cuadrado en cada parcela de la ciudad de Buenos Aires (Argentina) y San Pablo (Brasil), con sus respectivos edificios en 3D.

  1. Obtener los shapefiles con las geometrías de las parcelas/edificios de la ciudad y su respectiva altura y un dataset con las propiedades en venta y su precio.

En el caso de Buenos Aires, la información  está en archivos distintos.

2. Calcular el precio por metro cuadrado y la altura para cada parcela

A partir del dataset de propiedades y el de parcelas, utilizando un spatial join de Qgis, se calcula el precio promedio del metro cuadrado que le corresponde a cada parcela. Este tutorial explica simplemente cómo hacerlo.

Luego unimos los datos de las parcelas con la altura de cada edificio.

Se hace una union de estos datasets por el campo que identifica a cada parcela, que incluye la “sección”, la “manzana” y la “parcela”, para así poder asociar cada parcela a su altura correspondiente.

3. Transformar el shapefile en un tileset vectorial

En este punto transformamos el shapefile en un tileset vectorial que es un tipo información georeferenciada que usan múltiples tecnologías de mapas digitales para mostrar los datos.

Se denominan “tilesets” porque se trata de un malla de mosaicos que cubre la superficie deseada: cada mosaico tiene cierta información que va siendo dibujada a medida que navegamos por esa zona del mapa. Si no fuera por estos mosaicos sería muy lento mostrar toda la información que muestra el mapa.

Primero hay que convertir el shapefile producido en el primer punto en un GEOJSON (QGis=> guardar como => GeoJSON).

Usaremos el formato de tiles vectorial de Mapbox, mbtiles, ya que es ahí donde nosotros vamos a subir nuestro tileset. Para realizar la conversión de geojson a mbtiles usaremos el programa tippecanoe (https://github.com/mapbox/tippecanoe):

tippecanoe -o 3d_map_tileset.mbtiles -z 17 -Z 12 3d_map_tileset.geojson

Los parámetros z y Z son importantes, porque los tilesets se construyen por nivel de zoom. Cuanto más grande es el rango de zooms para el que se construye el tileset, más pesado es.

4. Subir el tileset a Mapbox Studio

Una vez generado el archivo, hay que subirlo a Mapbox Studio, en la sección datasets.

5. Programar Javascript

Vamos a necesitar programar un poco de javascript para poder mostrar la capa. De hecho, hay que hacer una aplicación en javascript que nos permita cargar un baselayer y el tileset en cuestión. Para eso vamos a usar Mapbox GL JS (https://github.com/mapbox/mapbox-gl-js).  La documentación sobre la API se encuentra en https://www.mapbox.com/mapbox-gl-js/api/.

Supongamos que vamos a hacer todo en un archivo llamado “our_map.html”. Los pasos a seguir serían:

  1. Crear el esqueleto de html:

<html>

<body

  <!– mapbox gl js –>

  <script src=’https://api.tiles.mapbox.com/mapbox-gl-js/v0.38.0/mapbox-gl.js’></script>

  <link href=’https://api.tiles.mapbox.com/mapbox-gl-js/v0.38.0/mapbox-gl.css’ rel=’stylesheet’ />

<script>

  // Here we are going to put our map code

</script>

</body>

</html>

Tenemos que realizar las siguientes tareas dentro del bloque <script>

        2. Cargar mapbox

  var center = [-58.388875,-34.612427];

 

      mapboxgl.accessToken = ‘YOUR ACCESS TOKEN’;

      var map = new mapboxgl.Map({

        container: ‘map’,

        style: ‘mapbox://styles/YOUTUSER/YOUR_BASE_STYLE’,

        center: center,

        zoom: 13.5,

        pitch: 59.5,

        bearing: 0

      });

     3. Cargar el tileset:

 map.on(‘style.load’, function () {

          map.addSource(‘buildings’,

              {“type”: “vector”,

                “url”: “THE TILESET URL”

              });

          map.addLayer({

            ‘id’: ‘buildings’,

            ‘interactive’: true,

            ‘type’: ‘fill-extrusion’,

            ‘source’: ‘buildings’,

            ‘source-layer’: ‘super_new_join_finalgeojson’,

            ‘paint’: {

              ‘fill-extrusion-height’: {

                ‘property’: ‘altura’,

                ‘stops’: [

                  [{zoom: 13, value: 0},   0],

                  [{zoom: 13.5, value: 1000}, 0],

                  [{zoom: 17.5, value: 0}, 0],

                  [{zoom: 17.5, value: 1000}, 1000]

                ]

              },

              ‘fill-extrusion-color’: {

                ‘property’: ‘precio’,

                ‘stops’: [

                  [0, ‘#e6e6e6’],

                  [700, ‘#ffffb2’],

                  [1754, ‘#fecc5c’],

                  [2233, ‘#fd8d3c’],

                  [2751, ‘#f03b20’],

                  [3683, ‘#bd0026’]

                ]

              },

              ‘fill-extrusion-opacity’: 0.9

            }

          }, ‘road_major_label’);

        });

Tomar nota de las partes más importantes:

 ‘fill-extrusion-height’: {

            ‘property’: ‘altura’,

}

Aquí estamos diciendo “tomar las alturas de los edificios del campo ‘altura’”.

Y

fill-extrusion-color: style: {

          ‘property’: ‘precio’,

          ‘stops’: [

            [0, ‘#e6e6e6’],

            [700, ‘#ffffb2’],

            [1754, ‘#fecc5c’],

            [2233, ‘#fd8d3c’],

            [2751, ‘#f03b20’],

            [3683, ‘#bd0026’]

          ]

        }

Aquí estamos diciendo “pintar usando los valores del campo ‘precio’ y usar los rangos para diferenciar los colores”, si no hay valor, usar ‘#e6e6e6’, si el valor está entre 0 y 700, usar ‘#ffffb2’, si el valor está entre 700 y 1754 usar  ‘#fecc5c’, y así sucesivamente.

El código completo sería:

<html>

  <body

    <!– mapbox gl js –>

    <script src=’https://api.tiles.mapbox.com/mapbox-gl-js/v0.38.0/mapbox-gl.js’></script>

    <link href=’https://api.tiles.mapbox.com/mapbox-gl-js/v0.38.0/mapbox-gl.css’ rel=’stylesheet’ />

    <div style=”padding:0; margin:0; width:100%; height:100%” id=”map”></div>

    <script>

      window.onload = function(){

        var center = [-58.388875,-34.612427];

        mapboxgl.accessToken = ‘YOUR ACCESS TOKEN’;

        var map = new mapboxgl.Map({

          container: ‘map’,

          style: ‘mapbox://styles/YOUTUSER/YOUR_BASE_STYLE’,

          center: center,

          zoom: 13.5,

          pitch: 59.5,

          bearing: 0

        });

        map.on(‘style.load’, function () {

          map.addSource(‘buildings’,

              {“type”: “vector”,

                “url”: “THE TILESET URL”

              });

          map.addLayer({

            ‘id’: ‘buildings’,

            ‘interactive’: true,

            ‘type’: ‘fill-extrusion’,

            ‘source’: ‘buildings’,

            ‘source-layer’: ‘super_new_join_finalgeojson’,

            ‘paint’: {

              ‘fill-extrusion-height’: {

                ‘property’: ‘altura’,

                ‘stops’: [

                  [{zoom: 13, value: 0},   0],

                  [{zoom: 13.5, value: 1000}, 0],

                  [{zoom: 17.5, value: 0}, 0],

                  [{zoom: 17.5, value: 1000}, 1000]

                ]

              },

              ‘fill-extrusion-color’: {

                ‘property’: ‘precio’,

                ‘stops’: [

                  [0, ‘#e6e6e6’],

                  [700, ‘#ffffb2’],

                  [1754, ‘#fecc5c’],

                  [2233, ‘#fd8d3c’],

                  [2751, ‘#f03b20’],

                  [3683, ‘#bd0026’]

                ]

              },

              ‘fill-extrusion-opacity’: 0.9

            }

          }, ‘road_major_label’);

        });

      }

    </script>

  </body>

</html>

Servir el HTML desde un server

Ahora hay que servir el html desde un server. En nuestra máquina local podemos usar http-server . Una vez instalado, (se puede instalar con npm: npm install http-server), hay que correrlo en la misma carpeta donde tenemos nuestro html. Y después, en el browser, navegar a localhost:8080/our_map.html.

Continúa el mapeo de vías y necesidades en México

Marcos Ge - el septiembre 27, 2017 en Experiencias, Fuentes de datos, Noticias, Uncategorized

CC atribución, compartir igual. By Patricia Curiel

 

 

 

 

 

 

 

El flujo de ayuda proveniente de la desbordante salida de la población a las calles de la Ciudad de México tras el terremoto del 19 de septiembre, población que dejó centros de trabajo y hogares propios para auxiliar a otros, se convierte también en un flujo de información que es necesario organizar para garantizar que la ayude llegue donde se requiere.

Miles de voluntarixs, con pico, pala y casco, pero también con alimentos, vendas, jeringas y otros materiales médicos llegaron a hacer fila para remover escombros o aliviar necesidades básicas de la población a cada uno de los más de 40 derrumbes en la ciudad.  Siguen llegando, aunque ahora con menos frecuencia, olas voluntarias que en en un principio hacían fila para llevar alimentos a centros de acopio rebasados, o que ya no podían almacenar el suficiente tiempo alimentos percederos. Esta fuerza política enfocada en la ayuda al otro irá languideciendo conforme pasen los días, a menos que hagamos un esfuerzo por lo contrario.

Aquí encuentras las fuentes y salidas de datos para el alivio de los terremotos del 7 y 19 de septiembre en México, y que afectaron principalmente a los estados de Chiapas, Oaxaca, Puebla, Morelos, Estado de México y Ciudad de México.

OSM México

         Desde el 9 de septiembre, un equipo liderado por Miriam González, Celine Jacquin, Edgar Lemus y al que se sumaron pronto Sandra Hernández y Vianney Pars, así como activistas ligadas a Openstreetmap México, iniciaron el trabajo de digitalizar la primera capa de información crucial para facilitar llegada de alivio humanitario a zonas de desastre: las vías de comunicación y edificios derrumbados.

Pero del más reciente terremoto sólo hay cuatro tareas completas de cartografía al 100%: la de Axochiapan, Morelos, y Atlixco, Atzitzihuacán y Atzala, en el estado de Puebla; mientras que faltan otras ocho tareas de mapeo relacionadas con el más reciente terremoto y otras tantas tareas de validación de esos mismos mapeos.

Existen dos formas de cartografía básicos, en sitio y remoto. Para sumarte al mapeo y validación, puedes ver esta capacitación que grabó Miriam en los días posteriores al sismo del 19 de septiembre.

En cuanto a la visualización de los datos que mapea OSM y su equipo de decenas de voluntarixs, el esfuerzo más comprensivo de agregación de datos lo llevó a cabo Leonel Castañeda , quien publica http://mapa.sismomexico.org/  gracias al trabajo de “deploy” que facilitó Codeando México, plataforma que agrega y visualiza datos no sólo de OSM, sino de las siguientes plataformas.

  • Manos a la obra, la plataforma más actualizada de ofertas y publicación de necesidades de ayuda, y que por defecto ofrece de una manera clara la descarga de su base de datos. Ojo: esta fuente de datos se actualiza en el sitio de manos a la obra, pero las capas que aparecen en mapasismomexico, por alguna razón no están actualizadas.
  • Mapillary, que es una herramienta muy usada en la cartografía para openstreetmap, pues permite subir a los servidores de esta organización fotografías y reportes de manera intuitiva
  • Verificado19s, un grupo de voluntarias y voluntarios que verifica las necesidades publicadas en redes sociales a partir de llamadas telefónicas y publica anuncios verificados.

En el grupo de trabajo se creó un subgrupo de depuración de datos, cuyo papel fue homologar en una base destino las bases heterogéneas que existen, con un proceso de limpieza de datos geográficos en el proceso.

Los grupos de pobladores autónomos y activistas críticos de los efectos del dominio del Estado mexicano y sus instituciones, así como de empresas y asociaciones alineadas con este,  pueden usar también plataformas creadas y gestionadas con software libre para reunir datos de centros de acopio y daños en inmueble. Un ejemplo de esta opción es solidaridat.mx.

Es necesario indicar que esta última realiza una labor exclusivamente de registro, no de vinculación inmediata con especialistas estructuralistas, como sí hace salvatucasa.mx, quienes acercan los reportes a estos expertos para la revisión de los inmuebles.

Únete al mapeo y validación de datos por terremoto en México

Marcos Ge - el septiembre 14, 2017 en Uncategorized

CopyfarleftP2P Subversiones.org

El desastre en México no ha concluido. Los terremotos del 8 y 19 de septiembre dejaron centenares de muertos y millones de damnificados, muchos de los cuales lo perdieron todo.

La comunidad del equipo humanitario de OpenStreetMap (HOT), por sus siglas en inglés, se volcó inmediatamente a la tarea de mapear los daños en caminos y edificaciones, labor que es fundamental para evaluar el daño y continuar haciendo llegar ayuda humanitaria, particularmente a los estados de Chiapas y Oaxaca en ese país.

Aquí puedes consultar la tarea del último terremoto en México, y las tareas de validación y mapeo pendientes. A la cabeza de este esfuerzo está Miriam González, parte de OpenStreetMap México.

Aunque las tareas han avanzado, aún faltan algunos mapeos para personas que quieran iniciar en OpenStreetMap, pero, también se requiere de validación

Si no sabes cómo hacerlo, aprende a mapear caminos y edificios en unos minutos con este video de José Luis Domingo en español. No es necesario que estés en México para colaborar.

En este apartado, la comunidad de OpenStreetMap pone a disposición de la comunidad interesada en ayudar, otros recursos para el aprendizaje y uso de mapas.

Para personas que no estén familiarizadas con el funcionamiento de OSM, pueden encontrar sencillas instrucciones por escrito aquí.

Si eres una usuaria más familiarizada con la plataforma, puedes encontrar información para validación de mapas aquí.

Datos abiertos para el alivio del desastre

Si eres una persona cercana a las localidades afectadas que buscar usar datos para aliviar el desastre o colaborar para hacer llegar víveres a las personas que los requieren, para las tareas que ya se completaron es posible descargar los datos abiertos del terremoto, en Juchitán de Zaragoza y San Dionisio del Mar, dos de los municipios más devastados por el terremoto.

 

 

 

Limpieza y visualizaciones, Python III

sebastianoliva - el agosto 31, 2017 en Tutoriales

Desde Escuela de Datos, Sebastián Oliva, fellow 2017, enseña cómo usar la librería de Pandas para Python para importar distintas bases de datos. En este ejercicio vimos exactamente qué es una base de datos relacional, de qué trata el lenguaje SQL, y en el terreno práctico, cómo hacer algunas visualizaciones en Python para hallar patrones interesantes.
Pues seguir el webinar del 31 de agosto paso a paso en el video que compartimos contigo y el cuaderno que publicamos abajo. También puedes consultar el cuaderno de trabajo de Sebastián aquí.

Leer y escribir archivos, bases de datos y más

Al realizar una exploración de datos, estos pueden provenir de muchas fuentes, en algunos casos recursos en linea, bases de datos SQL o de otros tipos; en otros puede ser necesario exportar a algun formato para seguir el análisis en otra herramienta. Con las herramientas que ya conocemos (Python, Pandas, etc), es muy conveniente el poder utilizarlas para exportar e importar datos. Vamos a trabajar un poco con unas bases de datos sencillas que nos permitirán ejemplificar la facilidad y algunos posibles asuntos a la hora de manipular datos en distintas fuentas. Una de estas es una base de datos de estudios ambientales desde los inicios de los 90’s hasta el 2014, mientras otra son los centros educativos en Guatemala hasta el 2013

Bases de datos: un Crash Course

Como hemos visto ya en estos tutoriales, Pandas es una libreria muy poderosa para manipular datos; sin embargo tiene también competencia obvia en sistemas de bases de datos, que dependiendo de su oferta ofrecen alguna de la funcionalidad de Pandas, junto con otra que es incomparable. Entre los conceptos fundamentales de bases de datos es reconocer la diferencia entre un DBMS (Database Management System) y una DB en sí. El DBMS es el software que permite acceder y controlar la base de datos; mientras que la DB son nuestros datos. Es comparable a la relación entre un reproductor multimedios y la música en sí, la diferencia mas notable es que practicamente no existe un estandar de bases de datos, mas allá de lo que provee SQL en si. Existe una variedad de modelos de bases de datos, para esta ocasión nos enfocaremos en el más común: SQL y bases de Datos Relacionales

RDBMS (Relational Database Management Systems)

SQL es un lenguaje que permite interactuar con bases de datos relacionales. El “Standard Query Language” es en la realidad, no tan estandar, sin embargo, hay un subconjunto que es compatible conocido como ANSI SQL y sus posteriores revisiones. Los ejemplos de este tutorial estarán en SQLite, una base de datos libre que ofrece alto rendimiento y poco uso de recursos, a contraparte de sus limitaciones como concurrencia limitada y el estar basada en archivos. La estaremos usando por su simplicidad, pero téoricamente podriamos usar casi cualquier otro DBMS. Algo muy notable y de tener en cuenta es que las Bases de datos Relacionales, como su nombre lo dice, están basadas en relaciones. Mucha gente confunde este concepto con el de llaves y uniones entre ellas, sin embargo es mucho mas profundo. En las bases de datos relacionales (y lo siento por si puede parecer un poco confuso): Las relaciones son agrupaciones de datos en las cuales se preserva su identidad, es decir representan algo, del cual queramos llevar registro; De estas agrupaciones, cada entidad o sea filas ó tuplas (que lleva su propia carga matemática), del mismo tipo se materializan en tablas, es decir las relaciones de bases de datos relacionales no se refieren a las relaciones que se pueden crear entre los datos, sinó a la estructura tabular en sí. Podemos tomar una pausa aquí y comenzar con el código. Es conveniente porque podremos ver varias de estas analogías en vivo.
import pandas as pd
import numpy as np
import seaborn
import joypy

import matplotlib
matplotlib.rc("savefig", dpi=300)
%matplotlib notebook
import sqlite3
conexion_estudios_ambientales = sqlite3.connect("estudios_amb.sqlite3")
estudios = pd.read_sql("SELECT * FROM estudios_ambientales", 
                       conexion_estudios_ambientales, 
                       parse_dates=["Fecha_Captura","Fecha_Resolucion","Fecha_Notificacion","Fecha_Dictamen"])
estudios.head()
Periodo Numero_Estudio Nombre_Proyecto Representante_Legal Direccion_Proyecto Fecha_Captura Fecha_Resolucion Fecha_Notificacion Fecha_Dictamen
0 2014 DABI-0682 PATSY ZONA 1 HENRY ALONSO MENESES MORAN 6TA. CALLE 5-13 ZONA 1, GUATEMALA, GUATEMALA 2017-07-18 NaT NaT NaT
1 2014 EAI-5140 VIVIENDA UNIFAMILIAR EL ENCINAL, MUNICIPIO DE … CRISTIAN RICARDO BONILLA ALVARADO FINCA URBANA UBICADA EN LOTE NO. 10 SECTRO E L… 2014-10-30 NaT NaT NaT
2 2014 EAI-5079 “AMPLIACIÓN SISTEMA DE AGUAS PLUVIALES CANTÓN … MANUEL AGUSTO NAVAS Y NAVAS CANTON AMERICA ZONA 3, SANTIAGO SACATEPEQUEZ, … 2014-10-29 NaT NaT NaT
3 2014 EAI-5080 “AMPLIACION SISTEMA DE ALCANTARILLADO SANITARI… MANUEL AGUSTO NAVAS Y NAVAS SECTOR CHICRUZ ZONA 3 ALDEA SANTA MARIA CAUQUE… 2014-10-29 NaT NaT NaT
4 2014 EAI-5081 “MEJORAMIENTO INSTALACIONES DEPORTIVAS Y RECRE… MANUEL AGUSTO NAVAS Y NAVAS SECTOR LA CIENAGA KILOMETRO 32 CARRETERA A SAN… 2014-10-29 NaT NaT NaT
 
tiempos_espera=pd.concat(
    {
        "Periodo": estudios["Periodo"].map(int).astype(int),
        "TiempoEspera": (estudios["Fecha_Captura"]-estudios["Fecha_Resolucion"]).map(lambda x: x.days)
    },
    axis=1
).dropna()

tiempos_espera
Periodo TiempoEspera
312 2014 -153.0
313 2014 -153.0
369 2014 -181.0
371 2014 -181.0
372 2014 -181.0
373 2014 -172.0
375 2014 -181.0
378 2014 -181.0
379 2014 -181.0
496 2014 231.0
503 2014 203.0
556 2014 228.0
559 2014 228.0
652 2014 257.0
750 2014 -7.0
774 2014 -4.0
825 2014 -3.0
876 2014 -5.0
903 2014 -8.0
917 2014 -6.0
935 2014 -1.0
940 2014 -6.0
941 2014 -6.0
942 2014 -6.0
943 2014 -6.0
944 2014 -6.0
946 2014 -7.0
948 2014 -7.0
950 2014 -6.0
953 2014 -6.0
44420 2000 -236.0
44421 2000 -201.0
44422 2000 -142.0
44424 2000 -344.0
44425 2000 -142.0
44426 2000 -142.0
44427 2000 -35.0
44428 2000 -143.0
44429 2000 -177.0
44430 2000 -173.0
44432 2000 -173.0
44434 2000 -1010.0
44435 2000 -2671.0
44438 2000 -341.0
44440 2000 -1048.0
44442 2000 -173.0
44443 2000 -233.0
44448 2000 -235.0
44451 2000 -2847.0
44456 2000 -327.0
44619 1999 -4442.0
44641 1999 -47.0
44649 1999 207.0
44916 1998 -5189.0
45133 1998 -95.0
45252 1997 -4259.0
45533 1996 -6765.0
45820 1994 -4839.0
45973 1994 -4290.0
45976 1995 -5807.0
34035 rows × 2 columns
tiempos_espera.describe()
Periodo TiempoEspera
count 34035.000000 34035.000000
mean 2009.556750 -96.639929
std 11.527618 391.044888
min 0.000000 -32871.000000
25% 2007.000000 -158.000000
50% 2010.000000 -47.000000
75% 2013.000000 0.000000
max 2206.000000 6926.000000
Ahora ya tenemos los elementos, cada uno de los registros y las fechas en las cuales fueron procesados. Podemos ver que el 50% esperó hasta 47 dias y el promedio es esperar 96 dias.
tiempos_espera.plot()
<matplotlib.axes._subplots.AxesSubplot at 0x7f09f76c7470>
tiempos_espera[tiempos_espera["TiempoEspera"] > 0]
Periodo TiempoEspera
496 2014 231.0
503 2014 203.0
556 2014 228.0
559 2014 228.0
652 2014 257.0
1000 2014 302.0
1012 2014 75.0
1013 2014 75.0
1040 2014 54.0
1041 2014 54.0
1057 2014 48.0
1058 2014 48.0
1107 2014 23.0
1481 2014 232.0
1482 2014 232.0
1483 2014 232.0
1527 2014 232.0
1528 2014 73.0
1575 2014 200.0
1585 2014 141.0
1619 2014 18.0
1621 2014 18.0
1622 2014 140.0
1626 2014 1.0
1733 2014 166.0
1734 2014 135.0
1735 2014 135.0
1737 2014 194.0
1756 2014 135.0
1796 2014 12.0
41194 2004 143.0
41195 2004 214.0
41196 2004 42.0
41233 2004 75.0
41268 2004 157.0
41270 2004 120.0
41273 2004 73.0
41276 2004 179.0
41277 2004 20.0
41279 2004 14.0
41314 2004 47.0
41318 2004 43.0
41319 2004 284.0
41327 2004 42.0
41331 2004 192.0
41332 2004 172.0
41333 2004 66.0
41334 2004 95.0
41335 2004 201.0
41338 2004 115.0
41339 2004 98.0
41340 2004 28.0
41342 2004 49.0
41381 2004 231.0
41387 2004 47.0
41388 2004 47.0
41389 2004 48.0
41390 2003 74.0
43978 1999 337.0
44649 1999 207.0
6849 rows × 2 columns

¿Con que esperaste cuánto?

+6926.000000 !!! Esto es un poco ridiculo. Pero este error está atado a la calidad del dato. Lo que podemos hacer es limpiarlo.
tiempos_espera = tiempos_espera[tiempos_espera["Periodo"] < 2015] 
tiempos_espera = tiempos_espera[tiempos_espera["TiempoEspera"] < 0] # Errores, probablemente año 1900? (IDK)
tiempos_espera = tiempos_espera[tiempos_espera["TiempoEspera"] > -10000] # Errores, probablemente año 1900? (IDK)
# print(tiempos_espera.Periodo.unique()) # Ver que años
tiempos_espera = tiempos_espera.set_index("Periodo")
tiempos_espera.describe()
# tiempos_espera.plot()
---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
<ipython-input-20-06b73fa6e678> in <module>()
      1 tiempos_espera.describe()
----> 2 tiempos_espera.plot(type="bar")

~/utz/notebooks_dateros/venv/lib/python3.6/site-packages/pandas/plotting/_core.py in __call__(self, x, y, kind, ax, subplots, sharex, sharey, layout, figsize, use_index, title, grid, legend, style, logx, logy, loglog, xticks, yticks, xlim, ylim, rot, fontsize, colormap, table, yerr, xerr, secondary_y, sort_columns, **kwds)
   2615                           fontsize=fontsize, colormap=colormap, table=table,
   2616                           yerr=yerr, xerr=xerr, secondary_y=secondary_y,
-> 2617                           sort_columns=sort_columns, **kwds)
   2618     __call__.__doc__ = plot_frame.__doc__
   2619 

~/utz/notebooks_dateros/venv/lib/python3.6/site-packages/pandas/plotting/_core.py in plot_frame(data, x, y, kind, ax, subplots, sharex, sharey, layout, figsize, use_index, title, grid, legend, style, logx, logy, loglog, xticks, yticks, xlim, ylim, rot, fontsize, colormap, table, yerr, xerr, secondary_y, sort_columns, **kwds)
   1857                  yerr=yerr, xerr=xerr,
   1858                  secondary_y=secondary_y, sort_columns=sort_columns,
-> 1859                  **kwds)
   1860 
   1861 

~/utz/notebooks_dateros/venv/lib/python3.6/site-packages/pandas/plotting/_core.py in _plot(data, x, y, subplots, ax, kind, **kwds)
   1682         plot_obj = klass(data, subplots=subplots, ax=ax, kind=kind, **kwds)
   1683 
-> 1684     plot_obj.generate()
   1685     plot_obj.draw()
   1686     return plot_obj.result

~/utz/notebooks_dateros/venv/lib/python3.6/site-packages/pandas/plotting/_core.py in generate(self)
    238         self._compute_plot_data()
    239         self._setup_subplots()
--> 240         self._make_plot()
    241         self._add_table()
    242         self._make_legend()

~/utz/notebooks_dateros/venv/lib/python3.6/site-packages/pandas/plotting/_core.py in _make_plot(self)
    938                              stacking_id=stacking_id,
    939                              is_errorbar=is_errorbar,
--> 940                              **kwds)
    941             self._add_legend_handle(newlines[0], label, index=i)
    942 

~/utz/notebooks_dateros/venv/lib/python3.6/site-packages/pandas/plotting/_core.py in _plot(cls, ax, x, y, style, column_num, stacking_id, **kwds)
    953             cls._initialize_stacker(ax, stacking_id, len(y))
    954         y_values = cls._get_stacked_values(ax, stacking_id, y, kwds['label'])
--> 955         lines = MPLPlot._plot(ax, x, y_values, style=style, **kwds)
    956         cls._update_stacker(ax, stacking_id, y)
    957         return lines

~/utz/notebooks_dateros/venv/lib/python3.6/site-packages/pandas/plotting/_core.py in _plot(cls, ax, x, y, style, is_errorbar, **kwds)
    573             else:
    574                 args = (x, y)
--> 575             return ax.plot(*args, **kwds)
    576 
    577     def _get_index_name(self):

~/utz/notebooks_dateros/venv/lib/python3.6/site-packages/matplotlib/__init__.py in inner(ax, *args, **kwargs)
   1896                     warnings.warn(msg % (label_namer, func.__name__),
   1897                                   RuntimeWarning, stacklevel=2)
-> 1898             return func(ax, *args, **kwargs)
   1899         pre_doc = inner.__doc__
   1900         if pre_doc is None:

~/utz/notebooks_dateros/venv/lib/python3.6/site-packages/matplotlib/axes/_axes.py in plot(self, *args, **kwargs)
   1404         kwargs = cbook.normalize_kwargs(kwargs, _alias_map)
   1405 
-> 1406         for line in self._get_lines(*args, **kwargs):
   1407             self.add_line(line)
   1408             lines.append(line)

~/utz/notebooks_dateros/venv/lib/python3.6/site-packages/matplotlib/axes/_base.py in _grab_next_args(self, *args, **kwargs)
    405                 return
    406             if len(remaining) <= 3:
--> 407                 for seg in self._plot_args(remaining, kwargs):
    408                     yield seg
    409                 return

~/utz/notebooks_dateros/venv/lib/python3.6/site-packages/matplotlib/axes/_base.py in _plot_args(self, tup, kwargs)
    393         ncx, ncy = x.shape[1], y.shape[1]
    394         for j in xrange(max(ncx, ncy)):
--> 395             seg = func(x[:, j % ncx], y[:, j % ncy], kw, kwargs)
    396             ret.append(seg)
    397         return ret

~/utz/notebooks_dateros/venv/lib/python3.6/site-packages/matplotlib/axes/_base.py in _makeline(self, x, y, kw, kwargs)
    300         default_dict = self._getdefaults(None, kw)
    301         self._setdefaults(default_dict, kw)
--> 302         seg = mlines.Line2D(x, y, **kw)
    303         return seg
    304 

~/utz/notebooks_dateros/venv/lib/python3.6/site-packages/matplotlib/lines.py in __init__(self, xdata, ydata, linewidth, linestyle, color, marker, markersize, markeredgewidth, markeredgecolor, markerfacecolor, markerfacecoloralt, fillstyle, antialiased, dash_capstyle, solid_capstyle, dash_joinstyle, solid_joinstyle, pickradius, drawstyle, markevery, **kwargs)
    429         # update kwargs before updating data to give the caller a
    430         # chance to init axes (and hence unit support)
--> 431         self.update(kwargs)
    432         self.pickradius = pickradius
    433         self.ind_offset = 0

~/utz/notebooks_dateros/venv/lib/python3.6/site-packages/matplotlib/artist.py in update(self, props)
    883         try:
    884             ret = [_update_property(self, k, v)
--> 885                    for k, v in props.items()]
    886         finally:
    887             self.eventson = store

~/utz/notebooks_dateros/venv/lib/python3.6/site-packages/matplotlib/artist.py in <listcomp>(.0)
    883         try:
    884             ret = [_update_property(self, k, v)
--> 885                    for k, v in props.items()]
    886         finally:
    887             self.eventson = store

~/utz/notebooks_dateros/venv/lib/python3.6/site-packages/matplotlib/artist.py in _update_property(self, k, v)
    876                 func = getattr(self, 'set_' + k, None)
    877                 if func is None or not six.callable(func):
--> 878                     raise AttributeError('Unknown property %s' % k)
    879                 return func(v)
    880 

AttributeError: Unknown property type
# verde_obscuro = seaborn.palplot(seaborn.cubehelix_palette(8, start=2, rot=0, dark=0, light=.95, reverse=True))
# %matplotlib inline
fig, axes = joypy.joyplot(tiempos_espera, 
                          by="Periodo", 
                          column="TiempoEspera", 
                          fade=True,
                          #kind="normalized_counts",
                          hist=True, 
                          bins=250,
                          grid=True,
                          range_style="own", 
                          x_range=[-1255,100], 
                          figsize=(4,8),
                          colormap=seaborn.cubehelix_palette(8, start=2, rot=0, dark=0, light=.95, reverse=True, as_cmap=True))
Algunos de los usos mas avanzados de esto te permiten hacer análisis de datos estructurados, como justamente un sistema informatico ya existente usualmente se compone de muchas tablas y relaciones, además de vinculos y estructuras entre ellas. Veamos un ejemplo con otra base de datos. Usaremos una llamada Chinook, una base de datos de ejemplo que contiene datos de una tienda de discos, es un ejemplo un poco “empresarial” pero puede servirnos. Podemos ver el esquema de la base de datos aqui: db chinook
chinook_connection = sqlite3.connect("Chinook_Sqlite.sqlite")
chinook_dataframe = pd.read_sql("""Select *
FROM Track
LEFT OUTER JOIN MediaType ON MediaType.MediaTypeId = Track.MediaTypeId
LEFT OUTER JOIN Genre ON Genre.GenreId =Track.GenreId
LEFT OUTER JOIN Album ON Album.AlbumId = Track.AlbumId
LEFT OUTER JOIN Artist ON Artist.ArtistId = Album.ArtistId""", chinook_connection)
chinook_dataframe
TrackId Name AlbumId MediaTypeId GenreId Composer Milliseconds Bytes UnitPrice MediaTypeId Name GenreId Name AlbumId Title ArtistId ArtistId Name
0 1 For Those About To Rock (We Salute You) 1 1 1 Angus Young, Malcolm Young, Brian Johnson 343719 11170334 0.99 1 MPEG audio file 1 Rock 1 For Those About To Rock We Salute You 1 1 AC/DC
1 2 Balls to the Wall 2 2 1 None 342562 5510424 0.99 2 Protected AAC audio file 1 Rock 2 Balls to the Wall 2 2 Accept
2 3 Fast As a Shark 3 2 1 F. Baltes, S. Kaufman, U. Dirkscneider & W. Ho… 230619 3990994 0.99 2 Protected AAC audio file 1 Rock 3 Restless and Wild 2 2 Accept
3 4 Restless and Wild 3 2 1 F. Baltes, R.A. Smith-Diesel, S. Kaufman, U. D… 252051 4331779 0.99 2 Protected AAC audio file 1 Rock 3 Restless and Wild 2 2 Accept
4 5 Princess of the Dawn 3 2 1 Deaffy & R.A. Smith-Diesel 375418 6290521 0.99 2 Protected AAC audio file 1 Rock 3 Restless and Wild 2 2 Accept
5 6 Put The Finger On You 1 1 1 Angus Young, Malcolm Young, Brian Johnson 205662 6713451 0.99 1 MPEG audio file 1 Rock 1 For Those About To Rock We Salute You 1 1 AC/DC
6 7 Let’s Get It Up 1 1 1 Angus Young, Malcolm Young, Brian Johnson 233926 7636561 0.99 1 MPEG audio file 1 Rock 1 For Those About To Rock We Salute You 1 1 AC/DC
7 8 Inject The Venom 1 1 1 Angus Young, Malcolm Young, Brian Johnson 210834 6852860 0.99 1 MPEG audio file 1 Rock 1 For Those About To Rock We Salute You 1 1 AC/DC
8 9 Snowballed 1 1 1 Angus Young, Malcolm Young, Brian Johnson 203102 6599424 0.99 1 MPEG audio file 1 Rock 1 For Those About To Rock We Salute You 1 1 AC/DC
9 10 Evil Walks 1 1 1 Angus Young, Malcolm Young, Brian Johnson 263497 8611245 0.99 1 MPEG audio file 1 Rock 1 For Those About To Rock We Salute You 1 1 AC/DC
10 11 C.O.D. 1 1 1 Angus Young, Malcolm Young, Brian Johnson 199836 6566314 0.99 1 MPEG audio file 1 Rock 1 For Those About To Rock We Salute You 1 1 AC/DC
11 12 Breaking The Rules 1 1 1 Angus Young, Malcolm Young, Brian Johnson 263288 8596840 0.99 1 MPEG audio file 1 Rock 1 For Those About To Rock We Salute You 1 1 AC/DC
12 13 Night Of The Long Knives 1 1 1 Angus Young, Malcolm Young, Brian Johnson 205688 6706347 0.99 1 MPEG audio file 1 Rock 1 For Those About To Rock We Salute You 1 1 AC/DC
13 14 Spellbound 1 1 1 Angus Young, Malcolm Young, Brian Johnson 270863 8817038 0.99 1 MPEG audio file 1 Rock 1 For Those About To Rock We Salute You 1 1 AC/DC
14 15 Go Down 4 1 1 AC/DC 331180 10847611 0.99 1 MPEG audio file 1 Rock 4 Let There Be Rock 1 1 AC/DC
15 16 Dog Eat Dog 4 1 1 AC/DC 215196 7032162 0.99 1 MPEG audio file 1 Rock 4 Let There Be Rock 1 1 AC/DC
16 17 Let There Be Rock 4 1 1 AC/DC 366654 12021261 0.99 1 MPEG audio file 1 Rock 4 Let There Be Rock 1 1 AC/DC
17 18 Bad Boy Boogie 4 1 1 AC/DC 267728 8776140 0.99 1 MPEG audio file 1 Rock 4 Let There Be Rock 1 1 AC/DC
18 19 Problem Child 4 1 1 AC/DC 325041 10617116 0.99 1 MPEG audio file 1 Rock 4 Let There Be Rock 1 1 AC/DC
19 20 Overdose 4 1 1 AC/DC 369319 12066294 0.99 1 MPEG audio file 1 Rock 4 Let There Be Rock 1 1 AC/DC
20 21 Hell Ain’t A Bad Place To Be 4 1 1 AC/DC 254380 8331286 0.99 1 MPEG audio file 1 Rock 4 Let There Be Rock 1 1 AC/DC
21 22 Whole Lotta Rosie 4 1 1 AC/DC 323761 10547154 0.99 1 MPEG audio file 1 Rock 4 Let There Be Rock 1 1 AC/DC
22 23 Walk On Water 5 1 1 Steven Tyler, Joe Perry, Jack Blades, Tommy Shaw 295680 9719579 0.99 1 MPEG audio file 1 Rock 5 Big Ones 3 3 Aerosmith
23 24 Love In An Elevator 5 1 1 Steven Tyler, Joe Perry 321828 10552051 0.99 1 MPEG audio file 1 Rock 5 Big Ones 3 3 Aerosmith
24 25 Rag Doll 5 1 1 Steven Tyler, Joe Perry, Jim Vallance, Holly K… 264698 8675345 0.99 1 MPEG audio file 1 Rock 5 Big Ones 3 3 Aerosmith
25 26 What It Takes 5 1 1 Steven Tyler, Joe Perry, Desmond Child 310622 10144730 0.99 1 MPEG audio file 1 Rock 5 Big Ones 3 3 Aerosmith
26 27 Dude (Looks Like A Lady) 5 1 1 Steven Tyler, Joe Perry, Desmond Child 264855 8679940 0.99 1 MPEG audio file 1 Rock 5 Big Ones 3 3 Aerosmith
27 28 Janie’s Got A Gun 5 1 1 Steven Tyler, Tom Hamilton 330736 10869391 0.99 1 MPEG audio file 1 Rock 5 Big Ones 3 3 Aerosmith
28 29 Cryin’ 5 1 1 Steven Tyler, Joe Perry, Taylor Rhodes 309263 10056995 0.99 1 MPEG audio file 1 Rock 5 Big Ones 3 3 Aerosmith
29 30 Amazing 5 1 1 Steven Tyler, Richie Supa 356519 11616195 0.99 1 MPEG audio file 1 Rock 5 Big Ones 3 3 Aerosmith
3473 3474 October Song 322 2 9 Matt Rowe & Stefan Skarbek 204846 3358125 0.99 2 Protected AAC audio file 9 Pop 322 Frank 252 252 Amy Winehouse
3474 3475 What Is It About Men 322 2 9 Delroy “Chris” Cooper, Donovan Jackson, Earl C… 209573 3426106 0.99 2 Protected AAC audio file 9 Pop 322 Frank 252 252 Amy Winehouse
3475 3476 Help Yourself 322 2 9 Freddy James, Jimmy hogarth & Larry Stock 300884 5029266 0.99 2 Protected AAC audio file 9 Pop 322 Frank 252 252 Amy Winehouse
3476 3477 Amy Amy Amy (Outro) 322 2 9 Astor Campbell, Delroy “Chris” Cooper, Donovan… 663426 10564704 0.99 2 Protected AAC audio file 9 Pop 322 Frank 252 252 Amy Winehouse
3477 3478 Slowness 323 2 23 None 215386 3644793 0.99 2 Protected AAC audio file 23 Alternative 323 Carried to Dust (Bonus Track Version) 253 253 Calexico
3478 3479 Prometheus Overture, Op. 43 324 4 24 Ludwig van Beethoven 339567 10887931 0.99 4 Purchased AAC audio file 24 Classical 324 Beethoven: Symphony No. 6 ‘Pastoral’ Etc. 254 254 Otto Klemperer & Philharmonia Orchestra
3479 3480 Sonata for Solo Violin: IV: Presto 325 4 24 Béla Bartók 299350 9785346 0.99 4 Purchased AAC audio file 24 Classical 325 Bartok: Violin & Viola Concertos 255 255 Yehudi Menuhin
3480 3481 A Midsummer Night’s Dream, Op.61 Incidental Mu… 326 2 24 None 387826 6497867 0.99 2 Protected AAC audio file 24 Classical 326 Mendelssohn: A Midsummer Night’s Dream 256 256 Philharmonia Orchestra & Sir Neville Marriner
3481 3482 Suite No. 3 in D, BWV 1068: III. Gavotte I & II 327 2 24 Johann Sebastian Bach 225933 3847164 0.99 2 Protected AAC audio file 24 Classical 327 Bach: Orchestral Suites Nos. 1 – 4 257 257 Academy of St. Martin in the Fields, Sir Nevil…
3482 3483 Concert pour 4 Parties de V**les, H. 545: I. P… 328 2 24 Marc-Antoine Charpentier 110266 1973559 0.99 2 Protected AAC audio file 24 Classical 328 Charpentier: Divertissements, Airs & Concerts 258 258 Les Arts Florissants & William Christie
3483 3484 Adios nonino 329 2 24 Astor Piazzolla 289388 4781384 0.99 2 Protected AAC audio file 24 Classical 329 South American Getaway 259 259 The 12 Cellists of The Berlin Philharmonic
3484 3485 Symphony No. 3 Op. 36 for Orchestra and Sopran… 330 2 24 Henryk Górecki 567494 9273123 0.99 2 Protected AAC audio file 24 Classical 330 Górecki: Symphony No. 3 260 260 Adrian Leaper & Doreen de Feis
3485 3486 Act IV, Symphony 331 2 24 Henry Purcell 364296 5987695 0.99 2 Protected AAC audio file 24 Classical 331 Purcell: The Fairy Queen 261 261 Roger Norrington, London Classical Players
3486 3487 3 Gymnopédies: No.1 – Lent Et Grave, No.3 – Le… 332 2 24 Erik Satie 385506 6458501 0.99 2 Protected AAC audio file 24 Classical 332 The Ultimate Relexation Album 262 262 Charles Dutoit & L’Orchestre Symphonique de Mo…
3487 3488 Music for the Funeral of Queen Mary: VI. “Thou… 333 2 24 Henry Purcell 142081 2365930 0.99 2 Protected AAC audio file 24 Classical 333 Purcell: Music for the Queen Mary 263 263 Equale Brass Ensemble, John Eliot Gardiner & M…
3488 3489 Symphony No. 2: III. Allegro vivace 334 2 24 Kurt Weill 376510 6129146 0.99 2 Protected AAC audio file 24 Classical 334 Weill: The Seven Deadly Sins 264 264 Kent Nagano and Orchestre de l’Opéra de Lyon
3489 3490 Partita in E Major, BWV 1006A: I. Prelude 335 2 24 Johann Sebastian Bach 285673 4744929 0.99 2 Protected AAC audio file 24 Classical 335 J.S. Bach: Chaconne, Suite in E Minor, Partita… 265 265 Julian Bream
3490 3491 Le Sacre Du Printemps: I.iv. Spring Rounds 336 2 24 Igor Stravinsky 234746 4072205 0.99 2 Protected AAC audio file 24 Classical 336 Prokofiev: Symphony No.5 & Stravinksy: Le Sacr… 248 248 Berliner Philharmoniker & Herbert Von Karajan
3491 3492 Sing Joyfully 314 2 24 William Byrd 133768 2256484 0.99 2 Protected AAC audio file 24 Classical 314 English Renaissance 247 247 The King’s Singers
3492 3493 Metopes, Op. 29: Calypso 337 2 24 Karol Szymanowski 333669 5548755 0.99 2 Protected AAC audio file 24 Classical 337 Szymanowski: Piano Works, Vol. 1 266 266 Martin Roscoe
3493 3494 Symphony No. 2, Op. 16 – “The Four Temperamen… 338 2 24 Carl Nielsen 286998 4834785 0.99 2 Protected AAC audio file 24 Classical 338 Nielsen: The Six Symphonies 267 267 Göteborgs Symfoniker & Neeme Järvi
3494 3495 24 Caprices, Op. 1, No. 24, for Solo Violin, i… 339 2 24 Niccolò Paganini 265541 4371533 0.99 2 Protected AAC audio file 24 Classical 339 Great Recordings of the Century: Paganini’s 24… 268 268 Itzhak Perlman
3495 3496 Étude 1, In C Major – Preludio (Presto) – Liszt 340 4 24 None 51780 2229617 0.99 4 Purchased AAC audio file 24 Classical 340 Liszt – 12 Études D’Execution Transcendante 269 269 Michele Campanella
3496 3497 Erlkonig, D.328 341 2 24 None 261849 4307907 0.99 2 Protected AAC audio file 24 Classical 341 Great Recordings of the Century – Shubert: Sch… 270 270 Gerald Moore
3497 3498 Concerto for Violin, Strings and Continuo in G… 342 4 24 Pietro Antonio Locatelli 493573 16454937 0.99 4 Purchased AAC audio file 24 Classical 342 Locatelli: Concertos for Violin, Strings and C… 271 271 Mela Tenenbaum, Pro Musica Prague & Richard Kapp
3498 3499 Pini Di Roma (Pinien Von Rom) \ I Pini Della V… 343 2 24 None 286741 4718950 0.99 2 Protected AAC audio file 24 Classical 343 Respighi:Pines of Rome 226 226 Eugene Ormandy
3499 3500 String Quartet No. 12 in C Minor, D. 703 “Quar… 344 2 24 Franz Schubert 139200 2283131 0.99 2 Protected AAC audio file 24 Classical 344 Schubert: The Late String Quartets & String Qu… 272 272 Emerson String Quartet
3500 3501 L’orfeo, Act 3, Sinfonia (Orchestra) 345 2 24 Claudio Monteverdi 66639 1189062 0.99 2 Protected AAC audio file 24 Classical 345 Monteverdi: L’Orfeo 273 273 C. Monteverdi, Nigel Rogers – Chiaroscuro; Lon…
3501 3502 Quintet for Horn, Violin, 2 Violas, and Cello … 346 2 24 Wolfgang Amadeus Mozart 221331 3665114 0.99 2 Protected AAC audio file 24 Classical 346 Mozart: Chamber Music 274 274 Nash Ensemble
3502 3503 Koyaanisqatsi 347 2 10 Philip Glass 206005 3305164 0.99 2 Protected AAC audio file 10 Soundtrack 347 Koyaanisqatsi (Soundtrack from the Motion Pict… 275 275 Philip Glass Ensemble
3503 rows × 18 columns
chinook_connection = sqlite3.connect("Chinook_Sqlite.sqlite")
#artista_genero = pd.read_sql("""Select Genre.Name, Artist.Name
#FROM Track
#LEFT OUTER JOIN Genre ON Genre.GenreId = Track.GenreId
#LEFT OUTER JOIN Track ON Track.AlbumId = Album.AlbumId
#LEFT OUTER JOIN Artist ON Artist.ArtistId = Album.ArtistId """, chinook_connection)
#artista_genero
chinook_dataframe.to_csv()
Fwomp! necesitamos guardar esto en un archivo.
tiempos_espera.to_excel("miarchivo.xls")
Podemos ver mas de la interoperabilidad de estas plataformas en la documentación de Pandas y SQL y en general aprender más de SQL en una variedad de recursos en linea.
Ahora probemos a extraer información.
%time centros_educativos = pd.read_excel("14102014 - MINEDUC - CENTROS EDUCATIVOS REPUBLICA DE GUATEMALA.xlsx")
CPU times: user 12.3 s, sys: 25.3 ms, total: 12.3 s
Wall time: 12.4 s
centros_educativos
CODIGO DISTRITO DEPARTAMENTO MUNICIPIO ESTABLECIMIENTO DIRECCION TELEFONO SUPERVISOR DIRECTOR NIVEL SECTOR AREA STATUS MODALIDAD JORNADA PLAN
0 16-14-1255-41 16-001 ALTA VERAPAZ CHAHAL COPB ANEXA A EORM CASERIO EL DESCONSUELO NaN WALTER GEOVANY MACZ CESAREO XOL ICAL PREPRIMARIA BILINGUE OFICIAL RURAL ABIERTA BILINGUE MATUTINA DIARIO(REGULAR)
1 16-14-1386-45 16-004 ALTA VERAPAZ CHAHAL NUCLEO FAMILIAR EDUCATIVO PARA EL DESARROLLO N… CASERIO SETAL NaN JUAN ANTONIO FIGUEROA CAAL SANTIAGO CHOC CHO BASICO OFICIAL RURAL ABIERTA MONOLINGUE DOBLE DIARIO(REGULAR)
2 16-14-2143-43 16-014 ALTA VERAPAZ CHAHAL EORM CASERIO XALAJA NaN GERMAN PABLO XONA NaN PRIMARIA OFICIAL RURAL CERRADA TEMPORALMENTE BILINGUE MATUTINA DIARIO(REGULAR)
3 16-14-9028-43 16-023 ALTA VERAPAZ CHAHAL EORM ALDEA SEMOX SEMAU NaN ROLANDO OLIVERIO PINTO CABRERA NaN PRIMARIA OFICIAL RURAL CERRADA TEMPORALMENTE MONOLINGUE MATUTINA DIARIO(REGULAR)
4 16-14-9030-43 16-023 ALTA VERAPAZ CHAHAL EORM CASERIO EL ESFUERZO NaN ROLANDO OLIVERIO PINTO CABRERA NaN PRIMARIA OFICIAL RURAL CERRADA TEMPORALMENTE MONOLINGUE MATUTINA DIARIO(REGULAR)
5 16-14-0053-45 16-026 ALTA VERAPAZ CHAHAL INEB DE TELESECUNDARIA ALDEA LAS CONCHAS NaN ROBERTO CHUN TIUL ABELARDO CHOC COC BASICO OFICIAL RURAL ABIERTA MONOLINGUE VESPERTINA DIARIO(REGULAR)
6 16-14-0001-45 16-027 ALTA VERAPAZ CHAHAL INSTITUTO NACIONAL DE EDUCACION BASICA DE TELE… CASERIO SAN JOSE 40483348 EDGAR MANFREDO SANDOVAL ALBERTO YAT MEZ BASICO OFICIAL RURAL ABIERTA MONOLINGUE VESPERTINA DIARIO(REGULAR)
7 16-14-0002-42 16-027 ALTA VERAPAZ CHAHAL EODP COMUNIDAD SEPAC COMUNIDAD SEPAC NaN EDGAR MANFREDO SANDOVAL GUILLERMO CAC AYÚ PARVULOS OFICIAL RURAL ABIERTA MONOLINGUE MATUTINA DIARIO(REGULAR)
8 16-14-0003-42 16-027 ALTA VERAPAZ CHAHAL EODP CASERIO SETUTZ CASERIO SETUTZ NaN EDGAR MANFREDO SANDOVAL ENRIQUE ROLANDO COC POP PARVULOS OFICIAL RURAL ABIERTA MONOLINGUE MATUTINA DIARIO(REGULAR)
9 16-14-0004-43 16-027 ALTA VERAPAZ CHAHAL EORM COMUNIDAD SANTO DOMINGO COMUNIDAD SANTO DOMINGO NaN EDGAR MANFREDO SANDOVAL MANUÉL ENRIQUE CANTI CHOC PRIMARIA OFICIAL RURAL ABIERTA BILINGUE MATUTINA DIARIO(REGULAR)
10 16-14-0005-43 16-027 ALTA VERAPAZ CHAHAL EORM COMUNIDAD SEPUR SEBAC COMUNIDAD SEPUR SEBAC NaN EDGAR MANFREDO SANDOVAL ELENA ISABEL BO TEC PRIMARIA OFICIAL RURAL ABIERTA BILINGUE MATUTINA DIARIO(REGULAR)
11 16-14-0006-43 16-027 ALTA VERAPAZ CHAHAL EORM CASERÍO EL GUAYABO CASERIO EL GUAYABO NaN EDGAR MANFREDO SANDOVAL MEDARDO CHÉ CHOCOJ PRIMARIA OFICIAL RURAL ABIERTA BILINGUE MATUTINA DIARIO(REGULAR)
12 16-14-0007-43 16-027 ALTA VERAPAZ CHAHAL EORM COMUNIDAD SAN MARCOS RUBEL INUP CASERIO SAN MARCOS RUBEL-INUP NaN EDGAR MANFREDO SANDOVAL AVELINO ASIG TZALAM PRIMARIA OFICIAL RURAL ABIERTA BILINGUE MATUTINA DIARIO(REGULAR)
13 16-14-0008-43 16-027 ALTA VERAPAZ CHAHAL EORM CASERÍO SEJALAUTE CASERIO SEJALAUTE NaN EDGAR MANFREDO SANDOVAL AVELARDO MIZ CHOC PRIMARIA OFICIAL RURAL ABIERTA BILINGUE MATUTINA DIARIO(REGULAR)
14 16-14-0009-43 16-027 ALTA VERAPAZ CHAHAL EORM COMUNIDAD DE VALLE VERDE COMUNIDAD DE VALLE VERDE NaN EDGAR MANFREDO SANDOVAL JENRRI GREGORIO MOLINA LÓPEZ PRIMARIA OFICIAL RURAL ABIERTA BILINGUE MATUTINA DIARIO(REGULAR)
15 16-14-0011-43 16-027 ALTA VERAPAZ CHAHAL EORM COMUNIDAD SAN JACINTO CHINAYÚ CASERIO SAN JACINTO CHINAYU NaN EDGAR MANFREDO SANDOVAL MARIO ANTONIO CHOCOJ CACAO PRIMARIA OFICIAL RURAL ABIERTA BILINGUE MATUTINA DIARIO(REGULAR)
16 16-14-0012-43 16-027 ALTA VERAPAZ CHAHAL EORM COMUNIDAD SANTA MARÍA CHICOC COMUNIDAD SANTA MARIA CHICOC NaN EDGAR MANFREDO SANDOVAL NORMA LETICIA MOLINA PRADO PRIMARIA OFICIAL RURAL ABIERTA BILINGUE MATUTINA DIARIO(REGULAR)
17 16-14-0013-43 16-027 ALTA VERAPAZ CHAHAL EORM COMUNIDAD GUADALUPE RUBEL INUP COMUNIDAD GUADALUPE RUBEL INUP NaN EDGAR MANFREDO SANDOVAL BAUDILIO RANDOLFO ASH POP PRIMARIA OFICIAL RURAL ABIERTA BILINGUE MATUTINA DIARIO(REGULAR)
18 16-14-0014-43 16-027 ALTA VERAPAZ CHAHAL EORM COMUNIDAD SEPAC COMUNIDAD SEPAC NaN EDGAR MANFREDO SANDOVAL GUILLERMO CAC AYÚ PRIMARIA OFICIAL RURAL ABIERTA BILINGUE MATUTINA DIARIO(REGULAR)
19 16-14-0015-43 16-027 ALTA VERAPAZ CHAHAL EORM COMUNIDAD SAN LUCAS SECANTÉ COMUNIDAD SAN LUCAS SECANTE NaN EDGAR MANFREDO SANDOVAL ALIDA IRENE CANTORAL PRADO PRIMARIA OFICIAL RURAL ABIERTA BILINGUE MATUTINA DIARIO(REGULAR)
20 16-14-0016-43 16-027 ALTA VERAPAZ CHAHAL EORM COMUNIDAD SANTA MARÍA SELAMUNX COMUNIDAD SANTA MARIA SELAMUNX NaN EDGAR MANFREDO SANDOVAL JULIO CANTI CAC PRIMARIA OFICIAL RURAL ABIERTA BILINGUE MATUTINA DIARIO(REGULAR)
21 16-14-0017-43 16-027 ALTA VERAPAZ CHAHAL EORM COMUNIDAD SANTIAGO SOSELHA COMUNIDAD SANTIAGO SOSELHA NaN EDGAR MANFREDO SANDOVAL EDUARDO IXIM CHOC PRIMARIA OFICIAL RURAL ABIERTA BILINGUE MATUTINA DIARIO(REGULAR)
22 16-14-0018-43 16-027 ALTA VERAPAZ CHAHAL EORM COMUNIDAD SAN MARCOS CHINAYÚ COMUNIDAD SAN MARCOS CHINAYU NaN EDGAR MANFREDO SANDOVAL JOSE SANTOS COY TZALAM PRIMARIA OFICIAL RURAL ABIERTA BILINGUE MATUTINA DIARIO(REGULAR)
23 16-14-0019-43 16-027 ALTA VERAPAZ CHAHAL EORM COMUNIDAD SAILA COMUNIDAD SAILA NaN EDGAR MANFREDO SANDOVAL MANUEL CHÉN BOL PRIMARIA OFICIAL RURAL ABIERTA BILINGUE MATUTINA DIARIO(REGULAR)
24 16-14-0020-43 16-027 ALTA VERAPAZ CHAHAL EORM CASERIO SETAL CASERIO SETAL NaN EDGAR MANFREDO SANDOVAL JUAN MACZ COY PRIMARIA OFICIAL RURAL ABIERTA BILINGUE MATUTINA DIARIO(REGULAR)
25 16-14-0021-43 16-027 ALTA VERAPAZ CHAHAL EORM COMUNIDAD SAN JUAN EL PARAISO COMUNIDAD SAN JUAN EL PARAISO NaN EDGAR MANFREDO SANDOVAL SEBASTIAN POP BOTZOC PRIMARIA OFICIAL RURAL ABIERTA BILINGUE MATUTINA DIARIO(REGULAR)
26 16-14-0022-43 16-027 ALTA VERAPAZ CHAHAL EORM COMUNIDAD CANTUTU COMUNIDAD CANTUTU NaN EDGAR MANFREDO SANDOVAL RUBÉN ADAN LÓPEZ IXIM PRIMARIA OFICIAL RURAL ABIERTA BILINGUE MATUTINA DIARIO(REGULAR)
27 16-14-0023-43 16-027 ALTA VERAPAZ CHAHAL EORM CASERÍO GASPAR CHINAYÚ CASERIO GASPAR CHINAYU NaN EDGAR MANFREDO SANDOVAL EDUARDO BUTZ CATÚN PRIMARIA OFICIAL RURAL ABIERTA BILINGUE MATUTINA DIARIO(REGULAR)
28 16-14-0024-43 16-027 ALTA VERAPAZ CHAHAL EORM CASERIO SETUTZ CASERIO SETUTZ NaN EDGAR MANFREDO SANDOVAL ENRIQUE ROLANDO COC POP PRIMARIA OFICIAL RURAL ABIERTA BILINGUE MATUTINA DIARIO(REGULAR)
29 16-14-0025-43 16-027 ALTA VERAPAZ CHAHAL EORM COMUNIDAD SAGRADO CHABILCHOCH I COMUNIDAD SAGRADO CAHABILCHOC I NaN EDGAR MANFREDO SANDOVAL SANTIAGO PAQUIUL CHOC PRIMARIA OFICIAL RURAL ABIERTA BILINGUE MATUTINA DIARIO(REGULAR)
54350 19-01-1206-45 19-019 ZACAPA ZACAPA INSTITUTO DE TURISMO Y AVIACION DE ORIENTE 8A. CALLE 9-06 ZONA 2 BARRIO LA REFORMA NaN HUGO WILFREDO VARGAS CHACON NaN BASICO PRIVADO URBANA CERRADA TEMPORALMENTE MONOLINGUE DOBLE FIN DE SEMANA
54351 19-01-1207-46 19-019 ZACAPA ZACAPA INSTITUTO DE TURISMO Y AVIACION DE ORIENTE 8A. CALLE 9-06 ZONA 2 BARRIO LA REFORMA NaN HUGO WILFREDO VARGAS CHACON NaN DIVERSIFICADO PRIVADO URBANA CERRADA TEMPORALMENTE MONOLINGUE DOBLE FIN DE SEMANA
54352 19-01-1208-46 19-019 ZACAPA ZACAPA INSTITUTO DE TURISMO Y AVIACION DE ORIENTE 8A. CALLE 9-06 ZONA 2 BARRIO LA REFORMA NaN HUGO WILFREDO VARGAS CHACON NaN DIVERSIFICADO PRIVADO URBANA CERRADA TEMPORALMENTE MONOLINGUE VESPERTINA DIARIO(REGULAR)
54353 19-01-0418-44 25-000 ZACAPA ZACAPA INSTITUTO GUATEMALTECO DE EDUCACION RADIOFONIC… CASA PARROQUIAL NaN SONIA HAYDEE REYES MONTERROSO NaN PRIMARIA DE ADULTOS PRIVADO URBANA ABIERTA MONOLINGUE MATUTINA A DISTANCIA
54354 19-01-0894-46 25-000 ZACAPA ZACAPA INSTITUTO GUATEMALTECO DE EDUCACION RADIOFONIC… NaN NaN SONIA HAYDEE REYES MONTERROSO NaN DIVERSIFICADO PRIVADO URBANA ABIERTA MONOLINGUE MATUTINA A DISTANCIA
54355 19-01-1107-42 25-001 ZACAPA ZACAPA CENTRO DE ATENCION INFANTIL COLONIA EL MITCH ALDEA LA FRAGUA NaN BRENDA DEL ROSARIO PERMILLA LOPEZ NaN PARVULOS OFICIAL URBANA CERRADA TEMPORALMENTE MONOLINGUE DOBLE DIARIO(REGULAR)
54356 19-01-0094-42 26-018 ZACAPA ZACAPA EODP ALDEA PLAN DEL MORRO ALDEA PLAN DEL MORRO NaN ADICOGUA VIVIANA MARISELA ALFARO ROSSELL DE CABRERA PARVULOS OFICIAL RURAL ABIERTA MONOLINGUE MATUTINA DIARIO(REGULAR)
54357 19-01-0095-42 26-018 ZACAPA ZACAPA EODP ALDEA BARRIO NUEVO ALDEA BARRIO NUEVO NaN ADICOGUA NaN PARVULOS OFICIAL RURAL ABIERTA MONOLINGUE MATUTINA DIARIO(REGULAR)
54358 19-01-0097-42 26-018 ZACAPA ZACAPA EODP ALDEA SINANECA ALDEA SINANECA NaN ADICOGUA MARINA ELIZABETH VENTURA CHACÓN PARVULOS OFICIAL RURAL ABIERTA MONOLINGUE MATUTINA DIARIO(REGULAR)
54359 19-01-0098-42 26-018 ZACAPA ZACAPA EODP CASERÍO EL CANAL CASERIO EL CANAL NaN ADICOGUA ASTRID MAYBELI TOBAR RUÍZ PARVULOS OFICIAL RURAL ABIERTA MONOLINGUE MATUTINA DIARIO(REGULAR)
54360 19-01-0099-42 26-018 ZACAPA ZACAPA EODP CASERÍO LA CHISPÍA CASERIO LA CHISPIA NaN ADICOGUA NURY AMADILIA FRANCO GÓMEZ PARVULOS OFICIAL RURAL ABIERTA MONOLINGUE MATUTINA DIARIO(REGULAR)
54361 19-01-0100-42 26-018 ZACAPA ZACAPA EODP CASERÍO CERRO MIRAMUNDO CASERIO CERRO MIRAMUNDO NaN ADICOGUA VERONICA ISABEL TEJEDA CHACÓN PARVULOS OFICIAL RURAL ABIERTA MONOLINGUE MATUTINA DIARIO(REGULAR)
54362 19-01-0101-42 26-018 ZACAPA ZACAPA EODP CASERIO LA PLANCHA, ALDEA LA FRAGUA NaN ADICOGUA BERLY TRINIDAD GUEVARA RUÍZ PARVULOS OFICIAL RURAL ABIERTA MONOLINGUE MATUTINA DIARIO(REGULAR)
54363 19-01-0102-42 26-018 ZACAPA ZACAPA EODP ALDEA LOS JOCOTES ALDEA LOS JOCOTES NaN ADICOGUA LOURDES GABRIELA MEJÍA GÓMEZ PARVULOS OFICIAL RURAL ABIERTA MONOLINGUE MATUTINA DIARIO(REGULAR)
54364 19-01-0104-43 26-018 ZACAPA ZACAPA EORM ALDEA PLAN DEL MORRO ALDEA PLAN DEL MORRO NaN ADICOGUA HENRY MISAEL PÉREZ GARCÍA PRIMARIA OFICIAL RURAL ABIERTA MONOLINGUE MATUTINA DIARIO(REGULAR)
54365 19-01-0105-43 26-018 ZACAPA ZACAPA EORM ALDEA CIMARRÓN ALDEA CIMARRON NaN ADICOGUA MANUEL DE JESÚS GONZÁLEZ Y GONZÁLEZ PRIMARIA OFICIAL RURAL ABIERTA MONOLINGUE MATUTINA DIARIO(REGULAR)
54366 19-01-0107-43 26-018 ZACAPA ZACAPA EORM ALDEA SINANECA ALDEA SINANECA NaN ADICOGUA JACKELINE JULISSA RAMIREZ MEJÍA PRIMARIA OFICIAL RURAL ABIERTA MONOLINGUE MATUTINA DIARIO(REGULAR)
54367 19-01-0108-43 26-018 ZACAPA ZACAPA EORM CASERÍO LA CHISPÍA CASERIO LA CHISPIA NaN ADICOGUA INGRID MAYLÍ RUÍZ PEÑA PRIMARIA OFICIAL RURAL ABIERTA MONOLINGUE MATUTINA DIARIO(REGULAR)
54368 19-01-0109-43 26-018 ZACAPA ZACAPA EORM CASERÍO EL CANAL CASERIO EL CANAL NaN ADICOGUA DELMY MAYBELI VILLELA OSORIO PRIMARIA OFICIAL RURAL ABIERTA MONOLINGUE MATUTINA DIARIO(REGULAR)
54369 19-01-0111-43 26-018 ZACAPA ZACAPA EORM ALDEA LOS JOCOTES ALDEA LOS JOCOTES NaN ADICOGUA EVA EVANGELINA LÓPEZ VÁSQUEZ PRIMARIA OFICIAL RURAL ABIERTA MONOLINGUE MATUTINA DIARIO(REGULAR)
54370 19-01-0112-43 26-018 ZACAPA ZACAPA EORM CASERÍO CERRO MIRAMUNDO CASERIO CERRO MIRAMUNDO NaN ADICOGUA AURA EDIDBETH ZECEÑA URRUTIA PRIMARIA OFICIAL RURAL ABIERTA MONOLINGUE MATUTINA DIARIO(REGULAR)
54371 19-01-1017-42 27-017 ZACAPA ZACAPA EODP COLONIA JUAN PABLO II 941-5519 719-0762 ELDA LUCRECIA LANDAVERDE LEON EVELYN RAQUEL PAIZ PARVULOS OFICIAL URBANA ABIERTA MONOLINGUE DOBLE DIARIO(REGULAR)
54372 19-01-0082-46 99-001 ZACAPA ZACAPA INSTITUTO PRIVADO MIXTO DE EDUCACION DIVERSIFI… BARRIO LAS FLORES NaN SILVIA EUGENIA VALDEZ MONTERROSO DE CARBALLO NaN DIVERSIFICADO PRIVADO URBANA TEMPORAL TITULOS MONOLINGUE NOCTURNA DIARIO(REGULAR)
54373 19-01-0036-43 NaN ZACAPA ZACAPA EORM ALDEA SINANECA NaN NaN NaN PRIMARIA OFICIAL RURAL CERRADA TEMPORALMENTE MONOLINGUE MATUTINA DIARIO(REGULAR)
54374 19-01-0083-46 NaN ZACAPA ZACAPA INSTITUTO PRIVADO MIXTO DE EDUCACION DIVERSIFI… BARRIO LAS FLORES NaN NaN NaN DIVERSIFICADO PRIVADO URBANA CERRADA TEMPORALMENTE MONOLINGUE VESPERTINA DIARIO(REGULAR)
54375 19-01-0632-42 NaN ZACAPA ZACAPA COLEGIO CRISTIANO MIXTO ‘BETHEL’ 8A. CALLE 02-02 ZONA 2, BARRIO LA ESTACION NaN NaN NaN PARVULOS PRIVADO URBANA CERRADA TEMPORALMENTE MONOLINGUE MATUTINA DIARIO(REGULAR)
54376 19-01-0633-43 NaN ZACAPA ZACAPA COLEGIO CRISTIANO MIXTO ‘BETHEL’ 8A. CALLE 02-02 ZONA 2, BARRIO LA ESTACION 79412091 NaN NaN PRIMARIA PRIVADO URBANA CERRADA TEMPORALMENTE MONOLINGUE MATUTINA DIARIO(REGULAR)
54377 19-01-0700-45 NaN ZACAPA ZACAPA LICEO ZACAPA 4A. CALLE 16-30 ZONA 1 79410233 NaN NaN BASICO PRIVADO URBANA CERRADA TEMPORALMENTE MONOLINGUE MATUTINA DIARIO(REGULAR)
54378 19-01-0814-45 NaN ZACAPA ZACAPA INEB DE TELESECUNDARIA ALDEA MANZANOTES NaN NaN NaN BASICO OFICIAL RURAL CERRADA TEMPORALMENTE MONOLINGUE VESPERTINA DIARIO(REGULAR)
54379 19-01-0815-45 NaN ZACAPA ZACAPA INEB DE TELESECUNDARIA ALDEA LA MAJADA NaN NaN NaN BASICO OFICIAL RURAL CERRADA TEMPORALMENTE MONOLINGUE VESPERTINA SABATINO
54380 rows × 16 columns
# print(centros_educativos["AREA"].value_counts())
centros_educativos = centros_educativos[centros_educativos.AREA != "SIN ESPECIFICAR"]
print(centros_educativos["AREA"].value_counts())
RURAL     36747
URBANA    17632
Name: AREA, dtype: int64
for col in ["DISTRITO", "DEPARTAMENTO", "MUNICIPIO", "NIVEL","SECTOR","AREA","STATUS","MODALIDAD","JORNADA","PLAN"]:
            centros_educativos[col] = centros_educativos[col].astype('category')
#centros_educativos.groupby(["JORNADA","PLAN","AREA"],).count()
centros_educativos.groupby(["JORNADA","PLAN","AREA"]).count()["CODIGO"]
JORNADA     PLAN             AREA  
DOBLE       A DISTANCIA      RURAL        1.0
                             URBANA      45.0
            DIARIO(REGULAR)  RURAL      703.0
                             URBANA     563.0
            DOMINICAL        RURAL       23.0
                             URBANA      31.0
            FIN DE SEMANA    RURAL      325.0
                             URBANA    2242.0
            IRREGULAR        RURAL        1.0
                             URBANA       6.0
            MIXTO            RURAL        NaN
                             URBANA       NaN
            SABATINO         RURAL        6.0
                             URBANA      85.0
INTERMEDIA  A DISTANCIA      RURAL        NaN
                             URBANA       3.0
            DIARIO(REGULAR)  RURAL       21.0
                             URBANA     108.0
            DOMINICAL        RURAL        1.0
                             URBANA       NaN
            FIN DE SEMANA    RURAL        1.0
                             URBANA      13.0
            IRREGULAR        RURAL        NaN
                             URBANA       NaN
            MIXTO            RURAL        NaN
                             URBANA       NaN
            SABATINO         RURAL        NaN
                             URBANA       1.0
MATUTINA    A DISTANCIA      RURAL        1.0
                             URBANA     263.0
                                        ...  
            SABATINO         RURAL        1.0
                             URBANA      51.0
NOCTURNA    A DISTANCIA      RURAL        NaN
                             URBANA       8.0
            DIARIO(REGULAR)  RURAL       88.0
                             URBANA     709.0
            DOMINICAL        RURAL        NaN
                             URBANA       1.0
            FIN DE SEMANA    RURAL        NaN
                             URBANA       3.0
            IRREGULAR        RURAL        NaN
                             URBANA       NaN
            MIXTO            RURAL        NaN
                             URBANA       NaN
            SABATINO         RURAL        NaN
                             URBANA       NaN
VESPERTINA  A DISTANCIA      RURAL        1.0
                             URBANA      26.0
            DIARIO(REGULAR)  RURAL     4884.0
                             URBANA    3887.0
            DOMINICAL        RURAL        NaN
                             URBANA       5.0
            FIN DE SEMANA    RURAL       17.0
                             URBANA      74.0
            IRREGULAR        RURAL        NaN
                             URBANA       NaN
            MIXTO            RURAL        NaN
                             URBANA       1.0
            SABATINO         RURAL        4.0
                             URBANA      34.0
Name: CODIGO, Length: 70, dtype: float64
seaborn.factorplot(
    y="PLAN", 
    col="AREA", 
    hue="JORNADA", 
    row="NIVEL", 
    data=centros_educativos, 
    kind="count", size=4);

#seaborn.tsplot(centros_educativos.groupby(["JORNADA","PLAN","AREA"]).count()["CODIGO"])
# escuelas_heatmap_pivot = centros_educativos.pivot("PLAN", "AREA", "JORNADA")
escuelas_heatmap = centros_educativos.pivot("PLAN", "AREA", "JORNADA")

# Draw a heatmap with the numeric values in each cell
f, ax = plt.subplots(figsize=(9, 6))
sns.heatmap(escuelas_heatmap, annot=True, fmt="d", linewidths=.5, ax=ax,
y="PLAN", col="AREA", hue="JORNADA", row="NIVEL", data=centros_educativos)

¿De qué fueron los Datos y Chiliguaros en #Abrelatam-Condatos17?

Daniel Villatoro - el agosto 30, 2017 en Experiencias, Noticias

En el contexto de Abrelatam-Condatos17, los eventos de formación de comunidad son extremadamente relevante. El más exitoso de ellos en la región, Datos y Tragos, se realizó una vez más en la capital de Costa Rica el jueves 24 de agosto, organizado por Socialtic y en colaboración con Impact Hb Sna José, Manatí, Open Knowledge y, claro, Escuela de Datos.

Conoce aquí algunos de los proyectos que se presentaron.

⏺Ojo Público – Comic “La guerra por el agua” (Perú)

Este cómic interactivo cuenta la historia del conflicto por el acceso al agua y la proyección del ambiente cuando llegan proyectos mineros de grande escala a pueblos de Perú.
Se nutre de una  base de datos sobre privilegios fiscales en ese país, en diferentes industrias por 10 años.
El cómic guia al lector a traves de historias graficas en donde ve, oye y lee sobre los problemas

⏺Transparencia Presupuestaria – Observatorio del Gasto ( México)

<iframe width=”560″ height=”315″ src=”https://www.youtube.com/embed/xW-OvRSYESo” frameborder=”0″ allowfullscreen></iframe>

Esta plataforma te muestra más de 600 programas de gobierno, los proyectos que se estan ejecutando en físico y en pagos.
A través de mapas muestran todos los proyectos en desarrollo en México

Hicieron un Rally de Datos en la calle en el que las personas podian usar el mapa para seguir los diferentes proyectos en su localidad. Durante el OpenDataDay las personas visualizaron, visitaron y conocieron los proyectos en su comunidad.

Además hicieron un curso online masivo sobre ¿Cómo entender el presupuesto?

⏺DataUY – Dónde reciclo (Uruguay)
Es un mapa que muestra donde estan todos los puntos de reciclaje en Montevideo con información sobre los programas y

Lo revolucionario fue que este proyecto voluntario género interés de la cámara de la industria trabaja con reciclaje patrocinó este proyecto y se interesó en invertir en él.

⏺40 Municipios bajo la lupa – Ojo Con Mi Pisto (Guatemala

Una colección de fichas sobre los datos sobre los integrantes de 40 concejos municipales

Incluye un buscador de denuncias y fichas con el historial de los 500+ funcionarios

Entre los hallazgos de las investigaciones, 8 de cada 10 alcaldes tienen algun tipo de antecedente en la contraloria, servicios de contratacion, sanciones, denuncias y otros problemas en la administración pública.

⏺Indice de Progreso Social — Estudio Manatí (Costa Rica)

El diseño de experiencia de usuario de este estudio costarricense permitio mostrar de una manera practica indicadores sobre como un país suple las necesidades de sus ciudadanos

Entrevistaron a usuarios potenciales de estos indices para construir una plataforma que genera visualizaciones como: Mapas cloropetos, una tabla de puntaje de cada país clasificada por color y poder comparar los datos entre paises.

Socialprogressindex.com

⏺ Japiqay.pe — Asociación civil Japiqay (Perú)
El proyecto se resume en recuperar la memoria sobre las investigaciones de corrupción en los ultimos 40 años.
Desde 1980 (la etapa democrática) esta organización ha recuperado documentos oficiales, certificaciones y otros registros sobre malas prácticas.
Recupera los trabajos de investigación en el Congreso, la Contraloria y el Poder Judicial ademas de nombrar que de los miles de investigados muy pocos han sido procesados o sentenciados y se reciclan facilmente en el sistema de administración pública.
Funciona como un repositorio de pruebas e historial de delitos.

⏺El desafío de data, fiscalidad y desigualdad — Oxfam (Latinoamérica)

Ante el problema de la creciente brecha social, Oxfam ha recopilado más de 60 indicadores en 22 paises de Latinoamerica y el Caribe. Por eso abrieron una convocatoria para explicar y conectar a públicos no especializados con las injusticias fiscales

Hasta el 22 de septiembre aceptan las inscripciones para proyectos comunicacionales que cuenten historias con los datos, comparen un tema o pais y usen la creatividad para abordar estos temas

⏺Dashboard de herramientas – DataSketch (Colombia)

Varias opciones para crear visualizaciones y genera r graficos descargables y embedeables.

Sus herramientas abarcan desde la visualización, el análisis y la limpieza de datos. Además, tiene la posibilidad de mejorar el código, a través de contribuciones

⏺ Indice de municipios —Fundación Conocimiento Abiero (Argentina)

Adaptando el indice global de datos abiertos, en este indice evaluaron varias ciudades que cuentan con portales de datos abiertos.

El ranking aborda temas como trabsporte, compras y contrataciones,

⏺ La tierra esclava – Eldiario.es y Elfaro.net (España y El Salvador)

Este proyecto de investigación revisó los monocultivos en paises como Guatemala, Colombia y Brasil, y su consumo en el mercado mundial.

Muestra visualizaciones sobre el flujo de la comercialización de estas plantaciones y cómo se conectan

Además, produjeron reportajes de investigacion en multimedia que cuentan como la industria de azúcar en Guatemala opera como cartel, como en Honduras la palma africana arrasa con los bosques y otras historias.

⏺ Radiografia Politica — Fundacion Ciudadanía y Desarrollo (Ecuador)

Una plataforma para generar perfiles sobre funcionarios públicos. La información se nutre de los sitios oficiales de gobierno que suele estar dispersa en más de 20 sitios diferentes.

La plataforma permite descargar hojas de calculo con datos sobre su función pública, su trayectoria en el sector privado y la actividad política. Revisa antecedentes judiciales, penales, formación académica y procesos de investigación y contraloría

La plataforma está disponible en código abierto y está disponible para que otros la implementen y mejoren el código.

⏺ La Data (México)

La Data es un medio digital nuevo, especializado en periodismo de datos.

Fue fundado por Morlan, una consultora de visualización y análisis de datos. Su primera historia analiza diversos datos sobre la violencia contra las mujeres en la Universidad Autonoma de México, que incluye desde acoso verbal hasta violaciones a estudiantes, investigadoras y profesoras.

El lanzamiento de este proyecto es el lunes 28 de agosto.

Escuela de Datos: 5 “abrelatames” juntos.

Marcos Ge - el agosto 19, 2017 en Experiencias, Noticias

Junio de 2013, Uruguay, Montevideo: frente a una naciente comunidad de personas interesadas en el uso de la tecnología para el impacto social, se presentó Escuela de Datos en el primer ABRELATAM de la historia.

Este 2017, del 23 al 25 de agosto se lleva a cabo la quinta edición de esta desconferencia, que busca atar los esfuerzos de las comunidades y desatar los nudos que puedan encontrarse en el camino hacia un uso libre de los datos para el impacto social. En estos años, Escuela de Datos ha generado decenas de encuentros para crear comunidad, talleres, publicado cientos de contenidos y cursos gratuitos.

Muchas de estas acciones han sido ejecutadas por una comunidad en cuyo corazón están las y los fellows, aquí recapitulamos algunos de sus logros, cuya amplificación se debe, en gran medida, a cada ABRELATAM. ¡Conócelxs!

Antonio Cucho

Antonio Cucho Gamboa, fellow por Perú A finales de 2013 y  principios de 2014, fundó la organización Open Data Perú y se postuló en 2014 para el fellowship. Al tener capacidades técnicas como programador y unirse a periodistas co fundó la publicación online de periodismo de investigación Ojo Público.

Su experiencia organizando comunidades de datos abiertos comenzó en el encuentro regional más relevante para los datos abiertos en Latinoamérica: Abrelatam (2014).

Tras terminar su fellowship, Antonio se mudó para integrarse al equipo de periodismo de datos de Univision Noticias, medio estadounidense dirigido a la población hispana en Estados Unidos. Con Univision Data ha desarrollado diferentes trabajos relacionados con la defensa de los derechos de la población de contexto hispanoparlante, como un mapa interactivo para mostrar la población hispana que aún no domina el idioma inglés, describir los resultados de medio siglo de guerra en Colombia. Además, promovió la primera plataforma de factchecking en español (dentro del territorio estadunidense): “El Detector de Mentiras”.

A pesar de radicar fuera de Perú, su trabajo con ese país no ha concluido, lidera el desarrollo y coordina la investigación de la primera plataforma de contrataciones abiertas en  su país de origen. Este es un esfuerzo en conjunto de la comunidad Open Data Perú y la OSC Proética para promover la transparencia en las contrataciones estales, identificando diferentes patrones que permitirán a especialistas realizar una exploración más sencilla dentro de miles de contrataciones que contienen irregularidades en el proceso.

Si quieres saber más de lo que hizo Antonio durante su fellowship, da clic aquí.

Julio López

Durante su Fellowship, en 2015, Julio se concentró en datos de la industria de extracción, a través de su trabajo con Natural Resource Governance Institute.

Julio se encuentra trabajando como consultor de la División de Energía del Banco Interamericano de Desarrollo (BID), donde apoya la implementación de la Iniciativa Energía Sostenible para Todos (SEforAll) en América Latina y el Caribe. Antes de incorporarse al BID, trabajó en la Organización Latinoamericana de Energía (OLADE) como especialista de información energética y previamente coordinó proyectos de investigación en políticas públicas para think tanks y OSCs en América Latina.

En 2015 desarrolló su Fellowship en Escuela de Datos, donde trabajo en fortalecer la comunidad local de datos abiertos en Ecuador y colaboró con un proyecto global sobre datos de proyectos de industrias extractivas. Recientemente es co-fundador de @Datalat, una iniciativa civil sobre el uso de datos y tecnología en Ecuador.

Omar Luna

Tras su fellowship en 2015, Omar Luna dedicó sus esfuerzos en El Salvador a la colaboración con el medio independiente El Faro,  con quienes capacita a estudiantes de periodismo en diversos rubros políticos y de datos con el objetivo de la construcción de dos grandes productos: una base de datos que le sirva a El Faro para crear una visualización de datos de cara a las elecciones de diputados 2018-2021, así como la consolidación del Observatorio de Comunicación Política de la Universidad Centroamericana (UCA).

También colabora con Proyecto Cero, donde Omar lideró la construcción de una base de datos que visibiliza la toma de decisiones clave en la Asamblea Legislativa.. Omar conoció a la coordinadora, Claudia Ortiz,  el año pasado durante el desarrollo del fellow.

Una de las colaboraciones más cercanas y estrechas que tuvo durante y después de mi fellowship ha sido con el equipo de la unidad de datos de El Diario de Hoy (EDH). Su editora periodística, Lilian Martínez, y su editora de visualización, Norma Ramírez, contactaron a Omar para que desarrollara capacitaciones constantes en uso de hojas de cálculo y software de visualización. Con EDH también ha creado visualizaciones sobre temas como embarazo adolescente y personas desaparecidas.

Phi Requiem

En 2014, Phi Requiem dedicó su fellowship a la formación de capacidades entre periodistas y activistas centroamericanos. Hoy su vocación de capacitación continúa. Con la iniciativa Hagamos Data (#HagamosData), se encuentra entrenando un más amplio grupo de personas para el uso de datos: por una parte entrena entrenadores, y por otra entrena a público no especializado. Se encuentra en un proceso de acompañamiento con la organización con el National Democratic Institute (NDI) para el uso de datos.

Phi también colaboró con el equipo que desarrolló Ruido CDMX, la plataforma construida con hardware libre y código abierto para la recolección y visualización de ruido en la Ciudad de México. Actualmente se encuentra desarrollando una segunda fase de este proceso, Ruido en las Ciudades, con software y hardware libres de generaciones más eficientes y accesibles que las de la anterior. El objetivo es acercar la creación de estos recolectores de datos a un grupo muy diverso de la población para generar datos abiertos sobre este fenómeno, de amplio impacto ambiental y de salud.

Si quieres saber más del trabajo de Phi Requiem durante su fellowship, da clic aquí

Camila Salazar

Camila desarrolló su fellowship en 2015.  Ella tiene un grado universitario en periodismo y obtuvo un segundo grado en Economía.

Tras el fellowship, Camila se ha desenvuelto como periodista de datos en la Unidad de Datos del Diario La Nación.  Estos son los proyectos en los que participó en el último año:

  • Aplicación para calcular el salario en el sector público, para la que ejecutó una investigación sobre el sistema de remuneraciones en el sector público.
  • Factchecking en vivo del discurso presidencial.
  • También desarrolla multitud de investigaciones, como esta sobre el sector cooperativo en Costa Rica.
Además de ser periodista en campo, Camila comparte su conocimiento a través de la docencia universitaria, talleres y actividades sobre periodismo de datos. El semestre anterior impartió el curso de Periodismo de Datos en la Universidad de Costa Rica.  Es un curso que forma parte del plan de estudios del Bachillerato en Periodismo.

Si quieres saber más sobre la labor de Camila durante su fellowship, da clic aquí.

Raisa Valda

Dedicó su fellowship a generar comunidades de datos abiertos en toda Bolivia, así como a conectar con organizaciones aliadas para su proyecto de datos contra violencia de género Cuántas Más.

  • Fue seleccionada para ser parte de la Escuela de Incidencia de Ciudadano Inteligente (Chile) para trabajar sobre género y tecnologías.
  • También la invitaron, desde la Embajada de Suecia en Bolivia, a participar en Stockholm Internet Forum 2017(SIF17) on Internet Freedom for Global Development en mayo de este año.
  • Fue invitada a dictar un módulo de docencia junto a la Fundación para el Periodismo de La Paz en su Diplomado en periodismo digital, sobre redes sociales y otras tecnologías en el periodismo, en julio de 2017.
  • Participará en el IX Congreso de la AEB – Estudios de Internet y sociedad en Bolivia, con una ponencia sobre datos abiertos y ciudadanía, en julio de este año.

Raisa está dedicada íntegramente a Cuántas Más. A partir de los datos que obtuvieron en 2016 sobre los casos de feminicidio, hallaron dos que llamaron su atención:

1. en el 78% de los casos se trataban de feminicidios íntimos (esposos,concubinos, novios, ex novios, ex esposos, ex concubinos),
2. en el 34% de los casos, las víctimas tenían menos de 20 años de edad.
Por ello, en el primer trimestre de este año, centraron su trabajo de prevención en el abordaje de violencias dentro las relaciones de noviazgo en la adolescencia con una ruta de talleres (“No es que me pidas así”) piloto por 6 ciudades de Bolivia.
Se trata de talleres piloto para los que Raisa desarrolló una metodología que permite a los adolescentes, entre 15 y 17 años, hablar sobre sus percepciones de violencia y cómo la entiende; y a partir de ello generar mensajes en audiovisual en sus propios códigos lingüísticos (nada solemne, nada políticamente correcto). Este material no se difundirá como una campaña masiva, no es el propósito; sino a través de sus propias redes de manera natural.
Cuántas Más tiene el propósito de centrar su trabajo, para esta gestión, en temas violencia que involucra a jóvenes, sea en las relaciones de noviazgo (basadas en encuestas y estudios realizados por la Coordinadora de la Mujeres) o en su desenvolvimiento en la universidad (basado en un estudio realizado por UNFPA sobre la UMSA).

Ximena Villagrán

Durante y tras su fellowship, Ximena ha sido catedrática titular de Periodismo de Datos en la Universidad del Istmo. Es también consultora para proyectos periodísticos y talleres de periodismo de datos en Honduras, El Salvador y Guatemala para la agencia internacional Internews, con quienes comenzó su colaboración, al igual que Omar, durante el fellowship.

Hoy Ximena está fundando su propia iniciativa de periodismo de datos, El Intercambio, que propone un vínculo íntimo entre crónica y periodismo de datos y busca dotar a los periodistas de un rol más activo en la búsqueda de fondos para el periodismo independiente.

Junto con Omar Luna, desarrolló una extensa currrícula para periodistas de datos en toda Centroamérica. Hoy también es consultora para la nueva unidad de datos del medio guatemalteco Prensa Libre y trabaja en un proyecto de explicación, a través de los datos, con la publicación también guatemalteca Nómada.

Daniel Villatoro

Daniel Villatoro se desempeña hoy como reportero senior en el medio guatemalteco Plaza Pública. Además de escribir crónica y desarrollar investigaciones de datos, tras la fellowship, Daniel incursionó en prácticas artísticas a través de los datos.

Daniel desarrolló una investigación sobre ingresos económicos por hora trabajada y de acuerdo con etnia y género, para concluir rasgos visibles de explotación en las poblaciones femeninas de Guatemala.

Con esta investigación generó mapas y visualizaciones que dieron soporte a una propuesta en acrílico y billetes, para visualizar con elementos cotidianos las opresiones también cotidianas. Su solución formal se expuso durante Nuevas Proporciones.

 “Las gráficas son representaciones, recursos que se manifiestan visualmente para mostra relaciones […] Huyendo de la representación, busco trabajar las gráficas con los objetos mismos en vez de representarlos: algo tan obvio como personificar al dinero con un billete o al tiempo con un reloj”, puede leerse en la justificación de su proyecto.

Daniel Villatoro se ocupa, también desde el periodismo, constantemente con temas de opresión de clase y de etnia, sobre el ingreso de grandes capas de la población. Así ha desarrollado investigaciones con mapas y visualizaciones de datos  como esta, que aborda la insuficiencia del salario mínimo, como en muchos otros, en su país.

Sebastián Oliva

Sebastián se interesó por la computación desde una temprana edad. Cursó estudios universitarios en Ingeniería y Física. Sin embargo, mantuvo siempre un profundo interés por las ciencias sociales y la interacción y aplicaciones interdisciplinarias de las ciencias exactas. Sebastián ha trabajado tanto para empresas de tecnología, como para varios proyectos relacionados con tecnología y sociedad, como la creación de software y hardware libre en su natal Guatemala.

Hizo una pasantía en Google, en la división de nube, trabajando con almacenamiento no relacional y adquiriendo conocimientos en Python. Fue parte de los equipos ganadores de DAL 2014 y finalista del Space Apps Challenge 2014. Su interés por Escuela de Datos se dá naturalmente al alinear el impacto social con capacidades técnicas de análisis, extracción, procesamiento y presentación de datos. Entre sus otros intereses se encuentra la fotografía, principalmente​ documental, y los juegos de estrategia y rol.

Datos abiertos sobre proyectos mineros y petroleros en ConDatos

Julio López - el agosto 18, 2017 en Expediciones de Datos, Fuentes de datos

Estudios de caso de América Latina

En los últimos años, una cantidad creciente de información sobre los sectores mineros y petroleros se ha estado poniendo a disposición del público. Sin embargo, esta información puede ser difícil de encontrar, sistematizar e interpretar; ya sea para usarla en análisis, investigación, activismo o incluso implementar proyectos con datos.

En este taller en el marco de Condatos en Costa Rica, colaboramos con el Instituto para la Gobernanza de los Recursos Naturales (NRGI) y nos enfocaremos en un tipo concreto de información disponible de distintas fuentes: los pagos de las empresas mineras y petroleras a los gobiernos de los países productores de estos recursos naturales. Estos están desagregados por empresa, por país, por proyecto y por tipo de pago (regalías, impuestos, etc.)

¿Dónde encontramos esta información? ¿Qué significa? ¿Para qué la podemos usar?

Si te interesa saber la respuesta a estas preguntas, analizando casos concretos de proyectos mineros y petroleros en el Perú y en Colombia, ¡participa en el taller!

  • Fecha: Viernes, 25 de agosto, 2017
  • Lugar: Centro Nacional de la Cultura (CENAC), San José, Costa Rica.
  • Horario: 9am – 11am

Sobre los facilitadores:

Claudia Viale

Licenciada en Economía por la Pontificia Universidad Católica del Perú, con una maestría en Gestión de Recursos Naturales y Medio Ambiente de la Universidad Libre de Amsterdam. Es Oficial de Programa del Instituto para la Gobernanza de los Recursos Naturales (NRGI), encargada de coordinar los proyectos de investigación relacionados a las industrias extractivas para la región América Latina. Ha trabajado temas como la distribución de los ingresos fiscales de la minería y los hidrocarburos a gobiernos subnacionales, su gasto e impacto en las economías locales.

Julio López Peña (@jalp_ec)

Economista ecuatoriano, investigador-consultor en el sector de energía, datos abiertos, y recursos naturales. Ha participado en varios proyectos en América Latina con el Banco Interamericano de Desarrollo (BID), la Organización Latinoamericana de Energía (OLADE) y varias ONGs y think tanks. Es fellow de la generación 2015 de Escuela de Datos y co-fundador de Datalat, desde donde ha trabajado con ciudadanos, organizaciones civiles y periodistas en el uso de datos abiertos en Ecuador y la región. Julio estudió una maestría en gestión de energía y recursos de la Universidad Colegio de Lóndres (UCL).