Datos gov

Este módulo permite conectar y evaluar desde el código los metadatos del Portal de Datos Abiertos y descargar las bases de datos a dataframes.

class datos_gov.DatosGov

Bases: object

Clase para cargar conjuntos de datos del portal de datos.gov.co y descargar los metadatos de dichos conjuntos.

cargar_base(api_id, limite_filas=1000000000)

Permite descargar un conjunto de datos del portal de datos.gov.co dado su identificador api_id en el portal. Ver ejemplo.

Advertencia

Al descargar una base de datos utilizando el API de Socrata, esta omitirá cualquier columna que no contenga registros, lo cual puede generar inconsistencias con la información descrita en el portal de datos abiertos.

Parámetros:
  • api_id (str) – Identificador único del conjunto de datos registrado en el API de Socrata.
  • limite_filas (int, opcional) – Número máximo de registros a descargar del conjunto de datos. Valor por defecto: 1000000000.
Devuelve:

(DatosGov) Objeto del tipo DatosGov, que contiene la información del conjunto de datos. Para obtener el DataFrame revise la función to_dataframe().

metadatos()

Retorna los metadatos del conjunto de datos descargado del portal de datos abiertos (datos.gov.co) en un diccionario de Python.

Devuelve:(dict) Diccionario con los metadados del conjunto de datos.
tabla_inventario(filtro=None, limite_filas=10000000000)

Función que se conecta con el API de Socrata para el portal de datos.gov.co y retorna el inventario de datos disponible. Ver ejemplo

Parámetros:
  • filtro (dict, opcional.) – Permite filtar la tabla de inventario de datos tomando como referencia las columnas presentes en la tabla, mediante un diccionario de datos del tipo {“nombre_columna”: [“valor buscado1”, “valor buscado 2”]}. Para mayor información consulte: (REVISAR)
  • limite_filas (int, opcional.) – Limite de registros a descargar del inventario de datos. Por defecto: 10000000000.
Devuelve:

(pandas.DataFrame) Dataframe con la información de los datos disponibles en el portal datos.gov.co.

to_dataframe()

Retorna el conjunto de datos descargado del portal de datos abiertos (datos.gov.co) en formato pandas.DataFrame.

Devuelve:(pandas.DataFrame) conjunto de datos en DataFrame.

Ejemplos


Ejemplo tabla_inventario

>>> # Se importar la clase DatosGov del módulo datos_gov
>>> from leila.datos_gov import DatosGov

Se importa la tabla de inventario de datos.gov.co. Esta tabla contiene todas las publicaciones del Portal (conjuntos de datos, enlaces externos, mapas, gráficos, etc.). Ver documentación DatosGov.tabla_inventario()

>>> inventario = DatosGov().tabla_inventario()

Las columnas de la tabla de inventario son las siguientes:

Columna Descripción
numero_api número API del conjunto de datos. Este es un carácter único de cada conjunto de datos del Portal que se usa como insumo para abrirlo desde código.
nombre nombre de la publicación
descripcion descripción de la publicación
dueno dueño de la publicación.
base_publica indica con un “si” si la información del conjunto de datos es público y con un “no” de lo contrario
tipo indica el tipo de la publicación, que puede ser uno de los siguientes: “conjunto de datos”, “enlace externo”, “mapa”, “grafico”, “vista filtrada”, “archivo o documento”, “historia”, “visualizacion”, “lente de datos”, “formulario”, “calendario”.
categoria tema general del que trata la información publicada
terminos_clave términos clave relacionados con la publicación
url enlace web de la publicación en el Portal de Datos Abiertos
fecha_creacion fecha de creación de la publicación
fecha_actualizacion última fecha de actualización de la publicación
filas número de filas del conjunto de datos, si aplica
columnas número de columnas del conjunto de datos, si aplica
correo_contacto correo de contacto de la entidad dueña de los datos
licencia nombre de la licencia los datos
entidad nombre de la entidad dueña de los datos
entidad_url enlace web de la entidad dueña de los datos
entidad_sector sector de la entidad
entidad_departamento departamento de la entidad
entidad_orden especifica si publicación es de orden territorial, nacional, departamental o internacional
entidad_dependencia dependencia de la entidad dueña de los datos
entidad_municipio municipio donde opera la entidad
actualizacion_frecuencia frecuencia de actualización de los datos. Puede ser anual, semestral, mensual, trimestral, trianual, diaria, quinquenal, semanal, entre otros. También puede no aplicar
idioma idioma en el que se encuentra la información
cobertura alcance de la información. Puede ser nacional, departamental, municipal, centro poblado o internacional

Filtrar tabla inventario

Búsqueda por términos clave

Para hacer la búsqueda por términos clave, se construye un diccionario de Python que contenga como llaves los nombres de las columnas de texto de la tabla de inventario sobre las cuales se desea hacer el filtro. Los valores de cada llave es una lista que contiene uno o más términos clave. Este diccionario se ingresa al método DatosGov.tabla_inventario() dentro del parámetro “filtro”.

Los términos que se ingresan al diccionario no tienen que tener tildes o mayúsculas que se encuentran en la columna original de la tabla de inventario. Por ejemplo, los resultados serán los mismos si se buscan las palabras “Economía”, “economía”, “economia” o “ECONOMÍA”.

Abajo se encuentra un ejemplo donde se filtra la tabla de inventario por las columnas “nombre” y “tipo”. Dentro de la columna “nombre” se busca si contiene los términos “economia” o “ambiente” y si la columna “tipo” contiene el término “conjunto de datos”. Es decir, se están buscando conjuntos de datos de temas de economía o ambiente.

>>> # Se crea el diccionario con el filtro deseado
>>> filtro = {
>>>     'nombre': ['economia', 'ambiente'],
>>>     'tipo': ['conjunto de datos']
>>> }

>>> # Se abre la tabla de inventario con el filtro deseado
>>> inventario = DatosGov().tabla_inventario(filtro=filtro)
>>> # Se imprime la tabla de inventario con el filtro aplicado en la celda anterior
>>> inventario
index numero_api nombre descripcion dueno base_publica tipo categoria terminos_clave url fecha_creacion entidad entidad_url entidad_sector entidad_departamento entidad_orden entidad_dependencia entidad_municipio actualizacion_frecuencia idioma cobertura
4331 8w5c-54ny Economía del municipio La principal base de la economía del Municipio… Alcaldía Guatavita Si conjunto de datos Economía y Finanzas NaN https://www.datos.gov.co/d/8w5c-54ny 2018-09-28 20:35:26 NaN NaN Agricultura y Desarrollo Rural Cundinamarca Territorial Desarrollo económico Guatavita No aplica Español Municipal
5839 j7br-6yvm Contactos Sec. Ambiente Contactos en el departamento del Tolima para e… Carlos Alberto Sanchez Alfonso Si conjunto de datos Ambiente y Desarrollo Sostenible gobernacion,tolima,ambiente,contacto https://www.datos.gov.co/d/j7br-6yvm 2016-12-12 16:42:03 Gobernacion del Tolima NaN Ambiente y Desarrollo Sostenible Tolima Territorial Secretaría del Ambiente y Gestión Riesgo del T… Ibagué Anual Español Departamental
9952 bgmv-gnda AMBIENTE FÍSICO ANIMALES Caracterización de viviendas estrategia APS (a… Alcaldia de Pereira Secretaria TIC Si conjunto de datos Salud y Protección Social NaN https://www.datos.gov.co/d/bgmv-gnda 2019-12-03 13:28:54 Alcaldia de Pereira NaN Salud y Protección Social Risaralda Territorial Secretaria de Salud Pereira Anual Español Municipal
9982 8ffd-q6x9 AMBIENTE La consolidación de temas ambientales en el mu… ALCALDIADEPALESTINA Si conjunto de datos Ambiente y Desarrollo Sostenible ambiente https://www.datos.gov.co/d/8ffd-q6x9 2018-07-12 16:56:38 NaN NaN Ambiente y Desarrollo Sostenible Caldas Territorial PLANEACION Palestina Anual Español Municipal
17209 rm5b-5f33 AMBIENTE FISICO Caracterización de viviendas estrategia APS (a… Alcaldia de Pereira Secretaria TIC Si conjunto de datos Salud y Protección Social NaN https://www.datos.gov.co/d/rm5b-5f33 2019-12-03 13:37:29 Alcaldia de Pereira NaN Salud y Protección Social Risaralda Territorial Secretaria de Salud Pereira Anual Español Municipal
22681 8ffd-q6x9:0 AMBIENTE La consolidación de temas ambientales en el mu… ALCALDIADEPALESTINA No conjunto de datos Ambiente y Desarrollo Sostenible ambiente https://www.datos.gov.co/d/8ffd-q6x9/revisions/0 2021-03-04 14:43:12 NaN NaN Ambiente y Desarrollo Sostenible Caldas Territorial PLANEACION Palestina Anual Español Municipal
33255 q282-rcj5 Sector Economía Solidaria Registros de entidades pertenecientes al secto… Cámara de Comercio de Valledupar para el Valle… Si conjunto de datos NaN economía solidaria https://www.datos.gov.co/d/q282-rcj5 2020-11-04 16:01:05 Cámara de Comercio de Valledupar para el Valle… https://ccvalledupar.org.co/ No Aplica Cesar Territorial Registros Públicos Valledupar No aplica Español Departamental
34615 fwsu-jxw6 RELACION PROTOCOLOS DE BIOSEGURIDAD SECTORES D… RELACION PROTOCOLOS DE BIOSEGURIDAD SECTORES D… alcaldiarovira Si conjunto de datos Salud y Protección Social bioseguridad,rovira,protocolos https://www.datos.gov.co/d/fwsu-jxw6 2020-10-21 21:39:17 ALCALDIA DE ROVIRA NaN No Aplica Tolima Territorial SECRETARIA DE SALUD Rovira Anual Español Municipal
34628 3bvi-vpkx Indicadores de Economía y Productividad de Sab… Conozca indicadores de economía y productivida… Alcaldía de Sabaneta Si conjunto de datos Economía y Finanzas mercado laboral,comercio,economia,industria,in… https://www.datos.gov.co/d/3bvi-vpkx 2018-10-02 14:50:36 Alcaldía de Sabaneta http://www.otsabaneta.org/economia-y-productiv No Aplica Antioquia Territorial Secretaría de Planeación y Desarrollo Territor… Sabaneta Anual Español Municipal

Búsqueda por rango de filas y columnas

Para hacer el filtro de la tabla de inventario por el tamaño de un conjunto de datos, se tiene que incluir el nombre de las columnas “filas” y “columnas” en el diccionario. Los valores de estas llaves son listas con dos elementos cada una: el primer elemento es el valor mínimo de filas o columnas y el segundo el valor máximo.

A continuación se muestra un ejemplo de filtro, donde se seleccionan los conjuntos de datos con mínimo 50 filas y máximo 60 y con mínimo 8 columnas y máximo 10

>>> # Se crea el diccionario con el filtro deseado
>>> filtro = {
>>>     'filas': [50, 60],
>>>     'columnas': [8, 10]
>>> }

>>> # Se abre la tabla de inventario con el filtro deseado
>>> inventario = DatosGov().tabla_inventario(filtro=filtro)
>>> # Imprimir las columnas del código API, nombre, descripción, filas y columnas de la tabla de inventario filtrada
>>> inventario[['numero_api', 'nombre', 'descripcion', 'filas', 'columnas']]
index numero_api nombre descripcion filas columnas
55 igcu-56c4 CONTRATOS PRESTACION DE SERVICIOS 2018 MUNIC… Lista contratos de prestación de servicio al… 57.0 10.0
326 e9d5-9xvt Instituciones Educativas Extintas del Municipi… Información de las Instituciones Educativas qu… 58.0 10.0
367 vxhy-86k4 Ejecución Presupuestal a Junio de 2017 Acumulado de la ejecución presupuestal de la U… 56.0 9.0
421 hysn-yquu Publicidad registro de vallas Municipio de Pa… Registro de vallas publicitarias del Municipio… 53.0 8.0
519 8qip-sek5 Corregidores y Auxiliares Corregidores del Mun… Corregidores y Auxiliares o Ayudantes de Corre… 54.0 9.0
34281 svz2-ug32 Contratistas Alcaldía Mistrató 2021 Contiene datos del contratista como nombres y … 50.0 9.0
34628 3bvi-vpkx Indicadores de Economía y Productividad de Sab… Conozca indicadores de economía y productivida… 57.0 10.0
34739 symc-8gre DOCENTES POR GENERO 2019-2 Docentes de planta, contrato y catedráticos cl… 59.0 8.0
34759 rubk-nymq Correos Institucionales Alcaldía de Copacabana Correos institucionales del municipio de Copac… 54.0 8.0
34808 9m2f-pdxx Licencias de Cannabis otorgadas por el Ministe… Licencias de uso de semillas para siembra, de … 56.0 10.0

Búsqueda por fecha

La tabla de inventario también puede filtrase por fecha. Para hacerlo, se ingresa el diccionario de filtro con una de las columnas de fecha y se especifican las fechas de inicio y de fin deseadas. El siguiente ejemplo muestra cómo obtener la tabla de inventario para publicaciones creadas entre el 1 de enero de 2020 y el 1 de febrero de 2020.

>>> # Se crea el diccionario con el filtro deseado
>>> filtro = {
>>>     'fecha_creacion': ['2020-01-01', '2020-02-01'],
>>> }

>>> # Se abre la tabla de inventario con el filtro deseado
>>> inventario = DatosGov().tabla_inventario(filtro=filtro)
>>> # Se muestra la tabla filtrada por fecha
>>> inventario
index numero_api nombre descripcion dueno base_publica tipo categoria terminos_clave url fecha_creacion entidad entidad_url entidad_sector entidad_departamento entidad_orden entidad_dependencia entidad_municipio actualizacion_frecuencia idioma cobertura
104 k2sw-5j93:2 Atención al usuario año 2020 Instituto Municip… El ejercicio de caracterización de los usuario… IMETY No conjunto de datos Educación NaN https://www.datos.gov.co/d/k2sw-5j93/revisions/2 2020-01-23 19:49:39 Instituto Municipal de Educación para el Traba… NaN Educación Valle del Cauca Territorial Matricula Academica Yumbo Anual Español Departamental
106 5ex4-dqe9 Población estudiantil posgrado por semestre y/… Población estudiantil posgrado por semestre y/… Universidad Colegio Mayor de Cundinamarca Si conjunto de datos Educación programas académicos,posgrado,unicolmayor,univ… https://www.datos.gov.co/d/5ex4-dqe9 2020-01-21 17:05:26 Universidad Colegio Mayor de Cundinamarca http://www.unicolmayor.edu.co/portal/index.php Educación Bogotá D.C. Nacional Oficina de Planeación, sistemas y desarrollo Bogotá D.C. Anual Español Nacional
331 wu3s-8hsw Población estudiantil pregrado por programa y … Población estudiantil por programa y semestre … Universidad Colegio Mayor de Cundinamarca Si conjunto de datos Educación estudiantes matriculados,programas académicos,… https://www.datos.gov.co/d/wu3s-8hsw 2020-01-21 15:35:30 Universidad Colegio Mayor de Cundinamarca http://www.unicolmayor.edu.co/portal/index.php Educación Bogotá D.C. Nacional Oficina de Planeación, sistemas y desarrollo Bogotá D.C. Anual Español Nacional
498 6b2t-68uu:0 Entidades Públicas Municipio de El Hobo NaN Alcaldía de Hobo No conjunto de datos NaN NaN https://www.datos.gov.co/d/6b2t-68uu/revisions/0 2020-01-03 15:55:41 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
549 88ru-5pzs:0 MORBILIDAD 2019 NaN Capacitacion Mintic No conjunto de datos NaN NaN https://www.datos.gov.co/d/88ru-5pzs/revisions/0 2020-01-02 16:12:57 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
33666 ir4d-mzgr Publicaciones_E_Interacciones_Campaña_#Evoluci… La campaña #EvoluciónTransparente buscó conoce… urnadecristal Si conjunto de datos Participación ciudadana NaN https://www.datos.gov.co/d/ir4d-mzgr 2020-01-17 15:35:23 Urna de Cristal NaN No Aplica Bogotá D.C. Nacional Urna de Cristal Bogotá D.C. No aplica Español Nacional
34634 9et2-bf5i Entrega y Retoma Entrega y Retoma Ministerio TIC Oficina TI Gestión de Informacion Si conjunto de datos Ciencia, Tecnología e Innovación NaN https://www.datos.gov.co/d/9et2-bf5i 2020-01-27 21:17:01 Ministerio de Tecnologías de la Información y … https://colombiatic.mintic.gov.co Ciencia, Tecnología e innovación Bogotá D.C. Nacional Dirección Computadores para Educar Bogotá D.C. Mensual Español Nacional
34660 fnir-e2zx DISCONTINUIDAD DISCONTINUIDAD SEPTIEMBRE 2020 EMPRESA IBAGUEREÑA DE ACUEDUCTO Y ALCANTARILLA… Si conjunto de datos Vivienda, Ciudad y Territorio NaN https://www.datos.gov.co/d/fnir-e2zx 2020-01-29 20:39:14 NaN NaN Vivienda Ciudad y Territorio Tolima Territorial GRUPO CALIDAD DE AGUA Ibagué Mensual Español Municipal
34690 syiu-8mvf PARQUE AUTOMOTOR DEL MUNICIPIO DE BARBOSA ANT… Contiene el inventario de vehículos registrad… Alcaldía de Barbosa - Antioquia Si conjunto de datos Transporte vehiculos,parque automotor https://www.datos.gov.co/d/syiu-8mvf 2020-01-16 19:19:56 NaN NaN Transporte Antioquia Territorial Secretaría de Movilidad Barbosa Anual Español Municipal
34780 etwv-wj8f Pueblos indígenas a nivel Nacional 2020 Información de la ubicación de los pueblos ind… Ministerio del Interior Si conjunto de datos NaN indígenas,dairm,etnias,pueblos https://www.datos.gov.co/d/etwv-wj8f 2020-01-27 14:47:31 Ministerio del Interior NaN Interior Bogotá D.C. Nacional Dirección de Asuntos Indígenas ROM y Minorías Bogotá D.C. Anual Español Nacional

Abrir un conjunto de datos del Portal de Datos Abiertos

Para abrir un conjunto de datos.gov.co es necesario tener el código API de ese conjunto e ingresarlo al método DatosGov.cargar_base(). Con esta función se crea un objeto que contiene el dataframe y el diccionario de metadatos del conjunto, los cuales se pueden obtener con los métodos “to_dataframe” y “metadatos”

A continuación está el código para cargar el conjunto de datos de “Pueblos indígenas a nivel Nacional 2020”, el cual se encuentra en el último filtro de la tabla de inventario.

Cargar conjunto de datos con número API

>>> # Se define la variable 'numero_api', que contiene el número API del conjunto 'Pueblos indígenas a nivel Nacional 2020'
>>> numero_api = 'etwv-wj8f'

>>> # Se descarga la información del conjunto de datos en la variable 'data' con el método 'cargar_base'.
>>> # Al parámetro 'api_id' se asigna el número API y 'limite_filas' especifica que únicamente se descargan 200 filas del conjunto
>>> data = DatosGov().cargar_base(api_id = numero_api, limite_filas=200)

Obtener dataframe del conjunto de datos

>>> # Se obtiene el dataframe del conjunto de datos con el método 'to_dataframe'
>>> datos = data.to_dataframe()

>>> # Se visualiza una versión reducida del dataframe
>>> datos
index unnamed_column departamento pueblos_indigenas
0 NaN AMAZONAS KAWIYARI
1 NaN AMAZONAS SIONA
2 NaN AMAZONAS YAGUA
3 NaN AMAZONAS BARASANO
4 NaN AMAZONAS LETUAMA
195 NaN VALLE DEL CAUCA EMBERA CHAMI
196 NaN VALLE DEL CAUCA EPERARA SIAPIDARA
197 NaN VALLE DEL CAUCA NASA
198 NaN VALLE DEL CAUCA PASTO
199 NaN VALLE DEL CAUCA WAUNANN

Obtener diccionario de metadatos del conjunto de datos

>>> # Los metadatos se obtienen con el método 'metadatos' y se asignan a la variable 'meta'
>>> meta = data.metadatos()

>>> # Se visualiza el diccionario de metadatos
>>> meta

{'numero_api': 'etwv-wj8f',
 'nombre': 'Pueblos indígenas a nivel Nacional 2020',
 'descripcion': 'Información de la ubicación de los pueblos indígenas por departamento y municipio a 31 de Diciembre de 2020.',
 'tipo': 'dataset',
 'url': 'NA',
 'categoria': 'NA',
 'fecha_creacion': '2020-01-27',
 'numero_vistas': 360,
 'numero_descargas': 60,
 'licencia': 'NA',
 'fecha_publicacion': '2020-01-27',
 'base_publica': 'published',
 'fecha_actualizacion': '2021-01-26',
 'numero_filas': 'NA',
 'numero_columnas': 3,
 'licencia_url': 'http://creativecommons.org/licenses/by-sa/4.0/legalcode',
 'entidad': 'Ministerio del Interior',
 'entidad_municipio': 'Bogotá D.C.',
 'entidad_sector': 'Interior',
 'entidad_departamento': 'Bogotá D.C.',
 'entidad_orden': 'Nacional',
 'entidad_dependencia': 'Dirección de Asuntos Indígenas ROM y Minorías',
 'cobertura': 'Nacional',
 'idioma': 'Español',
 'frecuencia_actualizacion': 'Anual',
 'dueno': 'Ministerio del Interior',
 'columnas': {'Unnamed Column': {'tipo': 'text',
   'descripcion': '',
   'nombre_df': 'unnamed_column'},
  'DEPARTAMENTO': {'tipo': 'text',
   'descripcion': '',
   'nombre_df': 'departamento'},
  'PUEBLOS INDIGENAS': {'tipo': 'text',
   'descripcion': '',
   'nombre_df': 'pueblos_indigenas'}}}