├── .gitignore ├── LICENSE.md ├── README.md ├── audiencias ├── Cleaner audiencias.ipynb ├── audiencias-documentacion.md ├── cleaner-audiencias.py ├── cleaner_audiencias.py └── dataset-sistema-legacy │ ├── audiencias-201601.zip │ └── readme.md ├── contratos-alquiler └── metadata.md ├── contratos ├── cleaner-contratos.py └── directivas-contratos.ipynb ├── estructura-organica-pen ├── Cleaner estructura organica.ipynb ├── Control cambios de ids.ipynb ├── cleaner_estructura.py ├── estructura-organica-documentacion.md └── estructura-organica.xlsx ├── portal-legacy ├── consejo-nacional-mujeres │ ├── cleaner-consejo-naciona-de-mujeres.py │ └── directivas-consejo-nacional-de-mujeres.md ├── datasets-raw │ └── establecimientos-educativos │ │ ├── educacion---establecimientos---buenosaires.ods │ │ ├── educacion---establecimientos---caba.ods │ │ ├── educacion---establecimientos---catamarca.ods │ │ ├── educacion---establecimientos---chaco.ods │ │ ├── educacion---establecimientos---chubut.ods │ │ ├── educacion---establecimientos---cordoba.ods │ │ ├── educacion---establecimientos---corrientes.ods │ │ ├── educacion---establecimientos---entre-rios.ods │ │ ├── educacion---establecimientos---formosa.ods │ │ ├── educacion---establecimientos---jujuy.ods │ │ ├── educacion---establecimientos---la-pampa.ods │ │ ├── educacion---establecimientos---la-rioja.ods │ │ ├── educacion---establecimientos---mendoza.ods │ │ ├── educacion---establecimientos---misiones.ods │ │ ├── educacion---establecimientos---neuquen.ods │ │ ├── educacion---establecimientos---rio-negro.ods │ │ ├── educacion---establecimientos---salta.ods │ │ ├── educacion---establecimientos---san-juan.ods │ │ ├── educacion---establecimientos---san-luis.ods │ │ ├── educacion---establecimientos---santa-cruz.ods │ │ ├── educacion---establecimientos---santa-fe.ods │ │ ├── educacion---establecimientos---santiago-del-estero.ods │ │ ├── educacion---establecimientos---tierra-del-fuego.ods │ │ └── educacion---establecimientos---tucuman.ods ├── establecimientos_de_salud │ ├── Untitled.ipynb │ └── cleaner-establecimientos-salud.py └── oficinas-anses │ ├── cleaner-oficinas-anses.py │ └── directivas-oficinas-anses.md ├── presupuesto ├── cleaner_presupuesto.py └── presupuesto-documentacion.md ├── relevamiento └── readme.md ├── series-tiempo └── base-series-tiempo-administracion-publica-nacional-documentacion.md └── unidades-territoriales └── ign-unidades-territoriales.ipynb /.gitignore: -------------------------------------------------------------------------------- 1 | # Data files 2 | *.csv 3 | 4 | # Byte-compiled / optimized / DLL files 5 | __pycache__/ 6 | *.py[cod] 7 | *$py.class 8 | 9 | # C extensions 10 | *.so 11 | 12 | # Distribution / packaging 13 | .Python 14 | env/ 15 | build/ 16 | develop-eggs/ 17 | dist/ 18 | downloads/ 19 | eggs/ 20 | .eggs/ 21 | lib/ 22 | lib64/ 23 | parts/ 24 | sdist/ 25 | var/ 26 | *.egg-info/ 27 | .installed.cfg 28 | *.egg 29 | 30 | # PyInstaller 31 | # Usually these files are written by a python script from a template 32 | # before PyInstaller builds the exe, so as to inject date/other infos into it. 33 | *.manifest 34 | *.spec 35 | 36 | # Installer logs 37 | pip-log.txt 38 | pip-delete-this-directory.txt 39 | 40 | # Unit test / coverage reports 41 | htmlcov/ 42 | .tox/ 43 | .coverage 44 | .coverage.* 45 | .cache 46 | nosetests.xml 47 | coverage.xml 48 | *,cover 49 | .hypothesis/ 50 | 51 | # Translations 52 | *.mo 53 | *.pot 54 | 55 | # Django stuff: 56 | *.log 57 | 58 | # Sphinx documentation 59 | docs/_build/ 60 | 61 | # PyBuilder 62 | target/ 63 | 64 | #Ipython Notebook 65 | .ipynb_checkpoints 66 | 67 | #Other 68 | .DS_Store 69 | estructura-organica-pen/old 70 | estructura-organica-pen/originales 71 | -------------------------------------------------------------------------------- /LICENSE.md: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2016 Gobierno Abierto Argentina 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Ejemplos de Scripts de Limpieza de los Datasets del Portal 2 | 3 | Se muestran algunos ejemplos de limpieza de datos aplicados a datasets publicados en el Portal de Datos Abiertos. Cada Dataset tiene asignada una carpeta con su nombre en la que se encuentran dos archivos: un archivo cleaner-nombre-dataset.py y un archivo de directivas-limpieza-nombre-dataset.md. 4 | 5 | * **directivas-limpieza:** Contiene una descripción de los procesos de limpieza que deben llevarse a cabo sobre ese dataset. 6 | * **cleaner-...py :** Implementación de las directivas usando la librería [data_cleaner](https://github.com/gobabiertoAR/data-cleaner) 7 | 8 | # Portal Legacy 9 | 10 | Contiene datasets de la versión anterior del Portal de Datos Abiertos que se encuentran discontinuados. 11 | -------------------------------------------------------------------------------- /audiencias/audiencias-documentacion.md: -------------------------------------------------------------------------------- 1 | # Registro Único de Audiencias de Gestión de Intereses 2 | 3 | Información correspondiente a las solicitudes de audiencias a funcionarios públicos. La misma surge del [Registro Único de Audiencias de Gestión de Intereses del Poder Ejecutivo Nacional](http://audiencias.jgm.gob.ar/registrodeaudiencias/searchjgm.php), establecido por el Decreto 1172/2003. Contiene, entre otros, datos sobre las fechas de solicitud y realización de la audiencia, sus participantes y una síntesis de los temas discutidos. Para una descripción más detallada de los datos disponibles ver la sección [Recursos](#heading=h.kh8t24rymv7n). 4 | 5 | # Características 6 | 7 | * **Recursos:** audiencias.csv 8 | 9 | * **Tags o Etiquetas:** Audiencias, Reuniones, Funcionarios, Solicitudes de Audiencia, Agenda Pública 10 | 11 | * **Organización:** MINISTERIO DEL INTERIOR, OBRAS PÚBLICAS Y VIVIENDA. Secretaría de Asuntos Políticos y Fortalecimiento Institucional. 12 | 13 | * **Autor:** Ministerio del Interior, Obras Públicas y Vivienda. Secretaría de Asuntos Políticos y Fortalecimiento Institucional. Subsecretaría de Reforma Institucional y Fortalecimiento de la Democracia. 14 | 15 | * **Responsable:** MINISTERIO DEL INTERIOR, OBRAS PÚBLICAS Y VIVIENDA. Secretaría de Asuntos Políticos y Fortalecimiento Institucional. 16 | 17 | * **Grupo:** Administración Pública y Normativa 18 | 19 | * **Frecuencia de Actualización:** Eventual 20 | 21 | # Recursos 22 | 23 | ## Audiencias 24 | 25 | * **Nombre:** audiencias.csv 26 | 27 | * **Descripción:** Datos sobre las fechas de solicitud y realización de la audiencia con Funcionarios Públicos, sus participantes y una síntesis de los temas discutidos. 28 | 29 | * **Formato:** CSV 30 | 31 | * **Rango temporal:** 20-01-2004 / 31-12-2015 32 | 33 | * **Fecha de Actualización:** 17/02/2016 34 | 35 | ### Campos del recurso 36 | 37 | * **audiencia_id (int):** ID de la audiencia 38 | 39 | * **obligado_cargo (string):** Cargo del sujeto obligado. 40 | 41 | * **obligado_apellido (string):** Apellido del sujeto obligado. 42 | 43 | * **obligado_nombre (string):** Nombre del sujeto obligado. 44 | 45 | * **dependencia_descripcion (string):** Nombre de la Dependencia Estatal en la que se solicitó una Audiencia. 46 | 47 | * **root_dependencia_descripcion (string):** Nombre del Organismo Estatal al que pertence la dependencia. 48 | 49 | * **fecha_solicitud (date):** Fecha en que fue solicitada la audiencia. 50 | 51 | * **solic_apellido (string):** Apellido de la persona que solicita la audiencia. 52 | 53 | * **solic_nombre (string):** Nombre de la persona que solicita la audiencia. 54 | 55 | * **solic_cargo (string):** Cargo de la persona que solicita la audiencia. 56 | 57 | * **interes_invocado (string):** Puede ser Propio, Colectivo o Difuso invocado por un Particular Interesado, un Organismo Estatal, un Representante de Persona Física o un Representante de Persona Jurídica. 58 | 59 | * **desc_caracter (string):** Caracter de la reunión. 60 | 61 | * **representado_cargo (string):** Cargo del Representado 62 | 63 | * **representado_persona_juridica (boolean):** ¿Es persona jurídica el representado? 64 | 65 | * **representado_nombre (string):** Nombre del Representado 66 | 67 | * **representado_apellido (string):** Apellido del Representado 68 | 69 | * **fecha_audiencia (datetime):** Fecha y hora en que se realizó la audiencia. 70 | 71 | * **lugar (string):** Lugar de la Audiencia. 72 | 73 | * **objeto (string):** Finalidad de la Audiencia. 74 | 75 | * **participante (string):** Nombre de los participantes de la audiencia. 76 | 77 | * **comentario (string):** Comentarios sobre la audiencia. 78 | 79 | * **desc_estado (string):** Estado de la audiencia (ej. realizada, pospuesta, suspendida) 80 | 81 | * **desc_estado_no_realizado (string):** Razón por la cual no fue realizada. 82 | 83 | * **sintesis (string):** Resúmen de los temas tratados. 84 | 85 | * **obligado_asesor_cargo (string):** Cargo del asesor del sujeto obligado. 86 | 87 | * **asesor_apellido (string):** Cargo del asesor del sujeto obligado. 88 | 89 | * **asesor_nombre (string):** Cargo del asesor del sujeto obligado. 90 | 91 | * **asesor_cargo (string):** Cargo del asesor del sujeto obligado. 92 | 93 | # Notas 94 | 95 | El decreto que regula el acceso a la información de Audiencias de Funcionarios Públicos se puede encontrar en [este sitio](http://infoleg.gov.ar/infolegInternet/anexos/90000-94999/90763/norma.htm). 96 | 97 | # Preprocesamiento 98 | 99 | Este dataset fue preprocesado siguiendo los [estándares de limpieza de datos](https://github.com/gobabiertoAR/documentacion-estandares/tree/master/datos/limpieza) que incluyen una normalización básica de strings, de fechas y separación de campos a partir de strings concatenados. 100 | 101 | -------------------------------------------------------------------------------- /audiencias/cleaner-audiencias.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # -*- coding: utf-8 -*- 3 | 4 | """Script de limpieza para los datos de audiencias 5 | 6 | Utiliza el paquete `data-cleaner` para limpiar datos de audiencias aplicando 7 | reglas de limpieza disponibles en el paquete, reglas extendidas sobre el objeto 8 | MyDataCleaner y cualquier script de limpieza custom que deba aplicarse antes o 9 | después de las reglas. 10 | 11 | Típicamente, el usuario puede tener que aplicar filtros, recortes o tareas muy 12 | específicas para ese dataset antes de aplicar reglas de limpieza. Estas tareas 13 | no buscarían implementar una nueva regla de limpieza en la clase extensible 14 | MyDataCleaner sino que se escribirían en los métodos provistos que actúan antes 15 | o después de la aplicación de reglas. 16 | """ 17 | 18 | from __future__ import unicode_literals 19 | from __future__ import print_function 20 | from __future__ import with_statement 21 | import sys 22 | 23 | from data_cleaner import DataCleaner 24 | 25 | DEFAULT_INPUT_PATH = "audiencias-raw.csv" 26 | DEFAULT_OUTPUT_PATH = "audiencias-clean.csv" 27 | 28 | RULES = [ 29 | { 30 | "remover_columnas": [ 31 | {"field": "obligadodependenciaid"}, 32 | {"field": "obligadoid"}, 33 | {"field": "obligado_posicion"}, 34 | {"field": "dependenciaid"}, 35 | {"field": "dependencia_depende"}, 36 | {"field": "dependencia_posicion"}, 37 | {"field": "rootdependenciaid"}, 38 | {"field": "solicitanteid"}, 39 | {"field": "solic_personajuridica"}, 40 | {"field": "tipointeresinvocadoid"}, 41 | {"field": "tipocaracterid"}, 42 | {"field": "representadoid"}, 43 | {"field": "tipoestadoid"}, 44 | {"field": "tipoestadonorealizadaid"}, 45 | {"field": "obligadoasesorid"}, 46 | {"field": "dependenciadescripcion"}, 47 | 48 | ] 49 | }, 50 | { 51 | "nombre_propio": [ 52 | {"field": "obligado_cargo", "keep_original": False}, 53 | {"field": "obligado_apellido", "keep_original": False}, 54 | {"field": "obligado_nombre", "keep_original": False}, 55 | {"field": "dependencia_descripcion", "keep_original": False}, 56 | {"field": "rootdependenciadescripcion", "keep_original": False}, 57 | {"field": "solic_apellido", "keep_original": False}, 58 | {"field": "solic_nombre", "keep_original": False}, 59 | {"field": "solic_cargo", "keep_original": False}, 60 | {"field": "interes_invocado", "keep_original": False}, 61 | {"field": "desc_caracter", "keep_original": False}, 62 | {"field": "representado_apellido", "keep_original": False}, 63 | {"field": "desc_estado", "keep_original": False}, 64 | {"field": "obligadoasesorcargo", "keep_original": False}, 65 | {"field": "asesor_apellido", "keep_original": False}, 66 | {"field": "asesor_nombre", "keep_original": False}, 67 | {"field": "asesor_cargo", "keep_original": False}, 68 | ] 69 | }, 70 | { 71 | "string": [ 72 | {"field": "obligado_cargo", "keep_original": False}, 73 | {"field": "obligado_apellido", "keep_original": False}, 74 | {"field": "obligado_nombre", "keep_original": False}, 75 | {"field": "dependencia_descripcion", "keep_original": False}, 76 | {"field": "rootdependenciadescripcion", "keep_original": False}, 77 | {"field": "solic_apellido", "keep_original": False}, 78 | {"field": "solic_nombre", "keep_original": False}, 79 | {"field": "solic_cargo", "keep_original": False}, 80 | {"field": "interes_invocado", "keep_original": False}, 81 | {"field": "desc_caracter", "keep_original": False}, 82 | {"field": "representado_apellido", "keep_original": False}, 83 | {"field": "desc_estado", "keep_original": False}, 84 | {"field": "obligadoasesorcargo", "keep_original": False}, 85 | {"field": "asesor_apellido", "keep_original": False}, 86 | {"field": "asesor_nombre", "keep_original": False}, 87 | {"field": "asesor_cargo", "keep_original": False}, 88 | ] 89 | }, 90 | {"fecha_completa": [ 91 | {"field": "fechaaudiencia", "time_format": "YY-MM-DD HH:mm:ss"}, 92 | ]}, 93 | {"fecha_simple": [ 94 | {"field": "fechasolicitud", "time_format": "YY-MM-DD HH:mm:ss"}, 95 | ]} 96 | ] 97 | 98 | 99 | def custom_cleaning_before_rules(dc): 100 | """Script de limpieza custom para aplicar al objeto antes de las reglas. 101 | 102 | Args: 103 | dc (DataCleaner): Objeto data cleaner con datos cargados. 104 | """ 105 | pass 106 | 107 | 108 | def custom_cleaning_after_rules(dc): 109 | """Script de limpieza custom para aplicar al objeto después de las reglas. 110 | 111 | Args: 112 | dc (DataCleaner): Objeto data cleaner con datos cargados. 113 | """ 114 | pass 115 | 116 | 117 | class MyDataCleaner(DataCleaner): 118 | """Extensión del DataCleaner que permite agregar nuevas reglas. 119 | 120 | El método clean_file() utiliza esta clase extendible del DataCleaner para 121 | permitir el agregado de nuevos métodos de limpieza que sean necesarios, en 122 | un formato que haga sencilla su posterior portación al paquete original.""" 123 | 124 | def nueva_regla(self, field, sufix=None, keep_original=False, 125 | inplace=False): 126 | """One liner sobre lo que hace la regla. 127 | 128 | Descripción extendida (si correponde) sobre lo que hace la regla. 129 | 130 | Args: 131 | field (str): Campo a limpiar. 132 | sufix (str): Sufijo del nuevo campo creado después de limpiar. 133 | keep_original (bool): True si se mantiene el campo original y el 134 | nuevo se agrega con un sufijo. False para reemplazar el campo 135 | original. 136 | inplace (bool): True si los cambios deben impactar en el estado del 137 | objeto. False si sólo se quiere retornar una serie limpia sin 138 | impactar en el estado del objeto. 139 | 140 | Returns: 141 | pandas.Series: Serie de strings limpios 142 | """ 143 | # debe normalizarse el nombre del campo primero 144 | field = self._normalize_field(field) 145 | 146 | # toma la serie a limpiar del DataFrame 147 | series = self.df[field] 148 | 149 | # ________________________________________________________ 150 | # en este espacio se aplica el nuevo algoritmo de limpieza 151 | # y se guarda la serie limpia en una nueva variable 152 | 153 | clean_series = series 154 | # ________________________________________________________ 155 | 156 | # guarda los cambios en el objeto, si inplace=True 157 | if inplace: 158 | self._update_series(field=field, sufix=sufix, 159 | keep_original=keep_original, 160 | new_series=clean_series) 161 | 162 | return clean_series 163 | 164 | 165 | def clean_file(input_path, output_path): 166 | """Limpia los datos del input creando un nuevo archivo limpio.""" 167 | 168 | print("Comenzando limpieza...") 169 | # crea una instancia de la versión extendible del DataCleaner 170 | dc = MyDataCleaner(input_path) 171 | 172 | # aplica reglas de limpieza disponibles y customizadas 173 | custom_cleaning_before_rules(dc) 174 | dc.clean(RULES) 175 | custom_cleaning_after_rules(dc) 176 | 177 | # guarda la data limpia en el csv output 178 | dc.save(output_path) 179 | print("Limpieza finalizada exitosamente!") 180 | 181 | if __name__ == '__main__': 182 | # toma argumentos optativos de la línea de comandos 183 | if len(sys.argv) == 1: 184 | # el usuario no pasó argumentos, se usan los default en input y output 185 | clean_file(DEFAULT_INPUT_PATH, DEFAULT_OUTPUT_PATH) 186 | elif len(sys.argv) == 2: 187 | # el usuario pasó input, se usa el default para output 188 | clean_file(sys.argv[1], DEFAULT_OUTPUT_PATH) 189 | elif len(sys.argv) == 3: 190 | # el usuario pasó input y output, no se usan defaults 191 | clean_file(sys.argv[1], sys.argv[2]) 192 | else: 193 | # el usuario pasó más de 2 argumentos! 194 | print("{} no es una cantidad de argumentos aceptada.".format( 195 | len(sys.argv) - 1 196 | )) 197 | -------------------------------------------------------------------------------- /audiencias/cleaner_audiencias.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # -*- coding: utf-8 -*- 3 | 4 | """Script de limpieza para los datos de audiencias 5 | 6 | Utiliza el paquete `data-cleaner` para limpiar datos de audiencias aplicando 7 | reglas de limpieza disponibles en el paquete, reglas extendidas sobre el objeto 8 | MyDataCleaner y cualquier script de limpieza custom que deba aplicarse antes o 9 | después de las reglas. 10 | 11 | Típicamente, el usuario puede tener que aplicar filtros, recortes o tareas muy 12 | específicas para ese dataset antes de aplicar reglas de limpieza. Estas tareas 13 | no buscarían implementar una nueva regla de limpieza en la clase extensible 14 | MyDataCleaner sino que se escribirían en los métodos provistos que actúan antes 15 | o después de la aplicación de reglas. 16 | 17 | Versión del data-cleaner: 0.1.15 18 | """ 19 | 20 | 21 | from __future__ import unicode_literals 22 | from __future__ import print_function 23 | from __future__ import with_statement 24 | import sys 25 | 26 | from data_cleaner import DataCleaner 27 | 28 | DEFAULT_INPUT_PATH = "audiencias-raw.csv" 29 | DEFAULT_OUTPUT_PATH = "audiencias-clean.csv" 30 | 31 | RULES = [ 32 | { 33 | "remover_columnas": [ 34 | {"field": "obligadodependenciaid"}, 35 | {"field": "obligadoid"}, 36 | {"field": "obligado_posicion"}, 37 | {"field": "dependenciaid"}, 38 | {"field": "dependencia_depende"}, 39 | {"field": "dependencia_posicion"}, 40 | {"field": "rootdependenciaid"}, 41 | {"field": "solicitanteid"}, 42 | {"field": "solic_personajuridica"}, 43 | {"field": "tipointeresinvocadoid"}, 44 | {"field": "tipocaracterid"}, 45 | {"field": "representadoid"}, 46 | {"field": "tipoestadoid"}, 47 | {"field": "tipoestadonorealizadaid"}, 48 | {"field": "obligadoasesorid"}, 49 | {"field": "dependenciadescripcion"}, 50 | 51 | ] 52 | }, 53 | { 54 | "nombre_propio": [ 55 | {"field": "obligado_cargo", "keep_original": False}, 56 | {"field": "obligado_apellido", "keep_original": False}, 57 | {"field": "obligado_nombre", "keep_original": False}, 58 | {"field": "dependencia_descripcion", "keep_original": False}, 59 | {"field": "rootdependenciadescripcion", "keep_original": False}, 60 | {"field": "solic_apellido", "keep_original": False}, 61 | {"field": "solic_nombre", "keep_original": False}, 62 | {"field": "solic_cargo", "keep_original": False}, 63 | {"field": "interes_invocado", "keep_original": False}, 64 | {"field": "desc_caracter", "keep_original": False}, 65 | {"field": "representado_apellido", "keep_original": False}, 66 | {"field": "desc_estado", "keep_original": False}, 67 | {"field": "obligadoasesorcargo", "keep_original": False}, 68 | {"field": "asesor_apellido", "keep_original": False}, 69 | {"field": "asesor_nombre", "keep_original": False}, 70 | {"field": "asesor_cargo", "keep_original": False}, 71 | ] 72 | }, 73 | { 74 | "string": [ 75 | {"field": "obligado_cargo", "keep_original": False}, 76 | {"field": "obligado_apellido", "keep_original": False}, 77 | {"field": "obligado_nombre", "keep_original": False}, 78 | {"field": "dependencia_descripcion", "keep_original": False}, 79 | {"field": "rootdependenciadescripcion", "keep_original": False}, 80 | {"field": "solic_apellido", "keep_original": False}, 81 | {"field": "solic_nombre", "keep_original": False}, 82 | {"field": "solic_cargo", "keep_original": False}, 83 | {"field": "interes_invocado", "keep_original": False}, 84 | {"field": "desc_caracter", "keep_original": False}, 85 | {"field": "representado_apellido", "keep_original": False}, 86 | {"field": "desc_estado", "keep_original": False}, 87 | {"field": "obligadoasesorcargo", "keep_original": False}, 88 | {"field": "asesor_apellido", "keep_original": False}, 89 | {"field": "asesor_nombre", "keep_original": False}, 90 | {"field": "asesor_cargo", "keep_original": False}, 91 | ] 92 | }, 93 | { 94 | "fecha_completa": [ 95 | {"field": "fechaaudiencia", "time_format": "YY-MM-DD HH:mm:ss"}, 96 | ] 97 | }, 98 | { 99 | "fecha_simple": [ 100 | {"field": "fechasolicitud", "time_format": "YY-MM-DD HH:mm:ss"}, 101 | ] 102 | }, 103 | { 104 | "renombrar_columnas": [ 105 | {"field": "audienciaid", "new_field": "audiencia_id"}, 106 | {"field": "rootdependenciadescripcion", 107 | "new_field": "root_dependencia_descripcion"}, 108 | {"field": "fechasolicitud", "new_field": "fecha_solicitud"}, 109 | {"field": "fechaaudiencia", "new_field": "fecha_audiencia"}, 110 | {"field": "representado_personajuridica", 111 | "new_field": "representado_persona_juridica"}, 112 | {"field": "obligadoasesorcargo", 113 | "new_field": "obligado_asesor_cargo"} 114 | ] 115 | } 116 | ] 117 | 118 | 119 | def custom_cleaning_before_rules(dc): 120 | """Script de limpieza custom para aplicar al objeto antes de las reglas. 121 | 122 | Args: 123 | dc (DataCleaner): Objeto data cleaner con datos cargados. 124 | """ 125 | pass 126 | 127 | 128 | def custom_cleaning_after_rules(dc): 129 | """Script de limpieza custom para aplicar al objeto después de las reglas. 130 | 131 | Args: 132 | dc (DataCleaner): Objeto data cleaner con datos cargados. 133 | """ 134 | pass 135 | 136 | 137 | class MyDataCleaner(DataCleaner): 138 | """Extensión del DataCleaner que permite agregar nuevas reglas. 139 | 140 | El método clean_file() utiliza esta clase extendible del DataCleaner para 141 | permitir el agregado de nuevos métodos de limpieza que sean necesarios, en 142 | un formato que haga sencilla su posterior portación al paquete original.""" 143 | 144 | def nueva_regla(self, field, sufix=None, keep_original=False, 145 | inplace=False): 146 | """One liner sobre lo que hace la regla. 147 | 148 | Descripción extendida (si correponde) sobre lo que hace la regla. 149 | 150 | Args: 151 | field (str): Campo a limpiar. 152 | sufix (str): Sufijo del nuevo campo creado después de limpiar. 153 | keep_original (bool): True si se mantiene el campo original y el 154 | nuevo se agrega con un sufijo. False para reemplazar el campo 155 | original. 156 | inplace (bool): True si los cambios deben impactar en el estado del 157 | objeto. False si sólo se quiere retornar una serie limpia sin 158 | impactar en el estado del objeto. 159 | 160 | Returns: 161 | pandas.Series: Serie de strings limpios 162 | """ 163 | # debe normalizarse el nombre del campo primero 164 | field = self._normalize_field(field) 165 | 166 | # toma la serie a limpiar del DataFrame 167 | series = self.df[field] 168 | 169 | # ________________________________________________________ 170 | # en este espacio se aplica el nuevo algoritmo de limpieza 171 | # y se guarda la serie limpia en una nueva variable 172 | 173 | clean_series = series 174 | # ________________________________________________________ 175 | 176 | # guarda los cambios en el objeto, si inplace=True 177 | if inplace: 178 | self._update_series(field=field, sufix=sufix, 179 | keep_original=keep_original, 180 | new_series=clean_series) 181 | 182 | return clean_series 183 | 184 | 185 | def clean_file(input_path, output_path): 186 | """Limpia los datos del input creando un nuevo archivo limpio.""" 187 | 188 | print("Comenzando limpieza...") 189 | # crea una instancia de la versión extendible del DataCleaner 190 | dc = MyDataCleaner(input_path) 191 | 192 | # aplica reglas de limpieza disponibles y customizadas 193 | custom_cleaning_before_rules(dc) 194 | dc.clean(RULES) 195 | custom_cleaning_after_rules(dc) 196 | 197 | # guarda la data limpia en el csv output 198 | dc.save(output_path) 199 | print("Limpieza finalizada exitosamente!") 200 | 201 | if __name__ == '__main__': 202 | # toma argumentos optativos de la línea de comandos 203 | if len(sys.argv) == 1: 204 | # el usuario no pasó argumentos, se usan los default en input y output 205 | clean_file(DEFAULT_INPUT_PATH, DEFAULT_OUTPUT_PATH) 206 | elif len(sys.argv) == 2: 207 | # el usuario pasó input, se usa el default para output 208 | clean_file(sys.argv[1], DEFAULT_OUTPUT_PATH) 209 | elif len(sys.argv) == 3: 210 | # el usuario pasó input y output, no se usan defaults 211 | clean_file(sys.argv[1], sys.argv[2]) 212 | else: 213 | # el usuario pasó más de 2 argumentos! 214 | print("{} no es una cantidad de argumentos aceptada.".format( 215 | len(sys.argv) - 1 216 | )) 217 | -------------------------------------------------------------------------------- /audiencias/dataset-sistema-legacy/audiencias-201601.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/datosgobar/datasets-portal/74a0fb0b5316d4cdeb895054f587ca38898ca121/audiencias/dataset-sistema-legacy/audiencias-201601.zip -------------------------------------------------------------------------------- /audiencias/dataset-sistema-legacy/readme.md: -------------------------------------------------------------------------------- 1 | #Registro Único de Audiencias de Gestión de Intereses (Legacy).md 2 | 3 | Dataset del Registro Único de Audiencias de Gestión de Intereses del Poder Ejecutivo Nacional publicado en http://www.datos.gob.ar/dataset/registro-unico-audiencias-gestion-intereses hasta el 11 de enero de 2017. El mismo fue reemplazado por una versión actualizada y modificada en el mismo link. 4 | -------------------------------------------------------------------------------- /contratos-alquiler/metadata.md: -------------------------------------------------------------------------------- 1 | # Formulario de Dataset 2 | 3 | **Título del DataSet:** Contratos de Alquiler del Estado Nacional como Locador 4 | 5 | **Descripción:** Información de los contratos donde el Estado Nacional arrienda, como locador, inmuebles de su propiedad. Esta información se actualizará conforme los contratos sean digitalizados y cargados por la Agencia de Administración de Bienes del Estado. 6 | 7 | **Fuente:** Registro de Contratos de la Agencia de Administración de Bienes del Estado 8 | 9 | **Autor:** Jefatura de Gabinete de Ministros. Agencia de Administración de Bienes del Estado. Dirección Nacional del Registro de Bienes Inmuebles. 10 | 11 | **E-mail del Autor:** info_renabe@bienesdelestado.gob.ar 12 | 13 | **Responsable:** Agencia de Administración de Bienes del Estado. Dirección Nacional del Registro de Bienes Inmuebles. 14 | 15 | **E-mail del Responsable:** info_renabe@bienesdelestado.gob.ar 16 | 17 | **Grupo: **Administración Pública; Infraestructura y Obra Pública 18 | 19 | **Tags o Etiquetas:** Inmuebles, Alquileres, Contratos, Locador, Bienes Inmuebles 20 | 21 | **Frecuencia de Actualización:** Eventual 22 | 23 | ## Formulario del Recurso 24 | 25 | **Nombre:** Contratos de alquiler ENA 26 | 27 | **Descripción:** Información de los contratos donde el Estado Nacional arrienda, como locador, inmuebles de su propiedad. Esta información se actualizará conforme los contratos sean digitalizados y cargados por la Agencia de Administración de Bienes del Estado. 28 | 29 | **Formato:** csv 30 | 31 | **Campos:** 32 | 33 | * cce (String): Sigla de Código de Contrato del Estado. Es el código de registro del contrato que le asigna la Agencia de Administración de Bienes del Estado al Contrato. 34 | 35 | * cie (String): Sigla de Código de Inmueble del Estado. Es el código de registro del contrato que le asigna la Agencia de Administración de Bienes del Estado al Inmueble. 36 | 37 | * tipo_contraparte (String): Clasificación entre persona física o jurídica. 38 | 39 | * razon_social (String): Denominación de la contraparte del Estado en el contrato. 40 | 41 | * objeto(String): Descripción del Objeto del Contrato 42 | 43 | * isodatetime_fecha_inicio(Date): Estandarización del campo fecha_inicio 44 | 45 | * fecha_inicio(Date): Fecha de Inicio del Contrato 46 | 47 | * isodatetime_fecha_finalizacion(Date): Estandarización del campo fecha_finalizacion 48 | 49 | * fecha_finalizacion(Date): Fecha de Finalización del Contrato 50 | 51 | * canon_total(Numeric): Monto Total del contrato 52 | 53 | * organización(String): Organización que firmó el contrato. 54 | 55 | * jurisdiccion(String): Organismo del cual depende la organización. 56 | 57 | * provincia(String): Provincia de la ubicación del inmueble 58 | 59 | * departamento(String): Departamento de la ubicación del inmueble 60 | 61 | * localidad(String): Localidad de la ubicación del inmueble 62 | 63 | * direccion(String): Dirección de la ubicación del inmueble 64 | 65 | * destino_uso (String): Descripción del destino de uso que se le dará al inmueble según el contrato. 66 | 67 | * contrato_url (string): URL link hacia el archivo pdf del contrato 68 | 69 | -------------------------------------------------------------------------------- /contratos/cleaner-contratos.py: -------------------------------------------------------------------------------- 1 | # coding: utf-8 2 | 3 | """ 4 | Script de limpieza para los datos de contratos 5 | Utiliza el paquete `data-cleaner` para limpiar datos de audiencias aplicando 6 | reglas de limpieza. 7 | 8 | Version: 0.1.10 9 | 10 | """ 11 | from data_cleaner import DataCleaner 12 | import pandas as pd 13 | import sys 14 | # input_path = "contratos_vigentes_2015.csv" 15 | # DEFAULT_OUTPUT_PATH = "clear_contratos_vigentes_2015.csv" 16 | 17 | DEFAULT_INPUT_PATH = "contratos-raw.csv" 18 | DEFAULT_OUTPUT_PATH_VIGENTE = "contratos-2015-clean.csv" 19 | DEFAULT_OUTPUT_PATH1_HISTORICO = "contratos-historico-clean.csv" 20 | 21 | RULES = [ 22 | 23 | { 24 | "nombre_propio": [ 25 | {"field": "financiacion"}, 26 | {"field": "nombre_organismo"}, 27 | {"field": "apellido"}, 28 | {"field": "nombre"}, 29 | ] 30 | }, 31 | { 32 | "fecha_simple": [ 33 | {"field": "alta_fecha", "time_format": "YYYY/MM/DD"}, 34 | {"field": "mod_fecha", "time_format": "YYYY/MM/DD"}, 35 | ] 36 | }, 37 | 38 | { 39 | "reemplazar": [ 40 | {"field": "locacion", 41 | "replacements": {"Servicios": ["Serv"], 42 | 43 | } 44 | } 45 | ] 46 | }, 47 | { 48 | "reemplazar": [ 49 | {"field": "financiacion", 50 | "replacements": {"Dec. 1421/2002 - Convenio Dec.1133/09": ["Dec. 1133/2009"], 51 | "Dec. 1421/2002 - Convenio Conae": ["Convenio Conae"], 52 | "Dec. 1421/2002 - Convenio Docifa": ["Convenio Docifa"], 53 | "Dec. 1421/2002 - Convenio Pecifa": ["Convenio Pecifa"], 54 | "Dec. 1421/2002 - Convenio Senasa": ["Convenio Senasa"], 55 | "Dec. 1421/2002 - Convenio Sigen": ["Convenio Sigen"], 56 | "Dec. 2345/2008 - Fin. Int. B I D": ["Fin. Int. B I D"], 57 | "Dec. 2345/2008 - Fin. Int. B I R F": ["Fin. Int. B I R F"], 58 | "Dec. 2345/2008 - Fin. Int. B M": ["Fin. Int. B M"], 59 | "Dec. 2345/2008 - Fin. Int. Fonplata": ["Fin. Int. Fonplata"], 60 | "Dec. 2345/2008 - Fin. Int. P N U D": ["Fin. Int. P N U D"], 61 | "Dec. 2345/2008 - Fin. Int. U E": ["Fin. Int. U E"], 62 | "Dec. 1421/2002 (arts. 93/99 LCT)": [u"Ley Nº 20744"], 63 | } 64 | } 65 | ] 66 | }, 67 | 68 | {"renombrar_columnas": [ 69 | {"field": "alta_fecha", "new_field": "fecha_alta_registro_rcpc"}, 70 | {"field": "mod_fecha", "new_field": "fecha_modificacion_registro_rcpc"}, 71 | {"field": "id_unico", "new_field": "id_organismo"}, 72 | ]}, 73 | 74 | {"remover_columnas": [ 75 | {"field": "estudios"}, 76 | {"field": "titulo"}, 77 | {"field": "nivel_grado"}, 78 | {"field": "nacimiento"} 79 | ]} 80 | ] 81 | 82 | 83 | 84 | 85 | def custom_cleaning_before_rules(dc): 86 | """Script de limpieza custom para aplicar al objeto antes de las reglas. 87 | Args: 88 | dc (DataCleaner): Objeto data cleaner con datos cargados. 89 | """ 90 | pass 91 | 92 | 93 | def custom_cleaning_after_rules(dc): 94 | """Script de limpieza custom para aplicar al objeto después de las reglas. 95 | Args: 96 | dc (DataCleaner): Objeto data cleaner con datos cargados. 97 | """ 98 | pass 99 | 100 | 101 | def clean_file(input_path, output_path): 102 | """Limpia los datos del input creando un nuevo archivo limpio.""" 103 | print("Comenzando limpieza...") 104 | dc = DataCleaner(input_path, encoding='latin1') 105 | custom_cleaning_before_rules(dc) 106 | dc.clean(RULES) 107 | custom_cleaning_after_rules(dc) 108 | y = 2015 109 | dc.df.hasta = pd.to_datetime(dc.df.hasta, yearfirst=True) 110 | dc.df.desde = pd.to_datetime(dc.df.desde, yearfirst=True) 111 | gii = dc.df.desde.dt.year == y 112 | gif = dc.df.hasta.dt.year == y 113 | gis = (dc.df.desde.dt.year < y) & (dc.df.hasta.dt.year > y) 114 | givig = gii | gif | gis 115 | df1 = dc.df[givig].copy() 116 | print("La cantida de registros 2015 es: ") 117 | print(givig.sum()) 118 | gin2016 = dc.df.desde.dt.year == 2016 119 | df2 = dc.df[~gin2016].copy() 120 | print("La cantida de registros historicos es: ") 121 | print((~gin2016).sum()) 122 | df1.to_csv( 123 | DEFAULT_OUTPUT_PATH_VIGENTE, encoding=dc.OUTPUT_ENCODING, 124 | separator=dc.OUTPUT_SEPARATOR, 125 | quotechar=dc.OUTPUT_QUOTECHAR, index=False) 126 | df2.to_csv( 127 | DEFAULT_OUTPUT_PATH1_HISTORICO, encoding=dc.OUTPUT_ENCODING, 128 | separator=dc.OUTPUT_SEPARATOR, 129 | quotechar=dc.OUTPUT_QUOTECHAR, index=False) 130 | 131 | print("Limpieza finalizada exitosamente!") 132 | 133 | if __name__ == '__main__': 134 | if len(sys.argv) == 1: 135 | clean_file(DEFAULT_INPUT_PATH, DEFAULT_OUTPUT_PATH_VIGENTE) 136 | elif len(sys.argv) == 2: 137 | clean_file(sys.argv[1], DEFAULT_OUTPUT_PATH_VIGENTE) 138 | elif len(sys.argv) == 3: 139 | clean_file(sys.argv[1], sys.argv[2]) 140 | else: 141 | print("{} no es una cantidad de argumentos aceptada.".format( 142 | len(sys.argv) - 1 143 | )) 144 | -------------------------------------------------------------------------------- /contratos/directivas-contratos.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "code", 5 | "execution_count": 1, 6 | "metadata": { 7 | "collapsed": true 8 | }, 9 | "outputs": [], 10 | "source": [ 11 | "from data_cleaner import DataCleaner\n", 12 | "import pandas as pd" 13 | ] 14 | }, 15 | { 16 | "cell_type": "code", 17 | "execution_count": 2, 18 | "metadata": { 19 | "collapsed": true 20 | }, 21 | "outputs": [], 22 | "source": [ 23 | "#input_path = \"contratos_vigentes_2015.csv\"\n", 24 | "#output_path = \"clear_contratos_vigentes_2015.csv\"\n", 25 | "\n", 26 | "input_path = \"contratos-concatenados-raw.csv\"\n", 27 | "output_path = \"contratos-hasta-2015-clean.csv\"" 28 | ] 29 | }, 30 | { 31 | "cell_type": "code", 32 | "execution_count": 3, 33 | "metadata": { 34 | "collapsed": false 35 | }, 36 | "outputs": [ 37 | { 38 | "name": "stderr", 39 | "output_type": "stream", 40 | "text": [ 41 | "/usr/local/lib/python2.7/dist-packages/IPython/core/interactiveshell.py:3006: DtypeWarning: Columns (16) have mixed types. Specify dtype option on import or set low_memory=False.\n", 42 | " if self.run_code(code, result):\n", 43 | "/usr/local/lib/python2.7/dist-packages/unidecode/__init__.py:46: RuntimeWarning: Argument is not an unicode object. Passing an encoded string will likely have unexpected results.\n", 44 | " _warn_if_not_unicode(string)\n", 45 | "/home/mec/MEGAsync/repo/data-cleaner/data_cleaner/data_cleaner.py:124: UserWarning: \n", 46 | "\n", 47 | "El campo \"Unnamed: 0\" no sigue las convenciones para escribir\n", 48 | "campos (sólo se admiten caracteres alfanuméricos ASCII en\n", 49 | "minúsculas, con palabras separadas por \"_\"). DataCleaner\n", 50 | "normaliza automáticamente los campos en estos casos, lo\n", 51 | "que puede llevar a resultados inesperados.\n", 52 | "\n", 53 | "El nuevo nombre del campo normalizado es: \"unnamed_0\".\n", 54 | "Método que llamó al normalizador de campos: __init__\n", 55 | "\n", 56 | " warnings.warn(msg)\n", 57 | "/home/mec/MEGAsync/repo/data-cleaner/data_cleaner/data_cleaner.py:124: UserWarning: \n", 58 | "\n", 59 | "El campo \"Alta_Fecha\" no sigue las convenciones para escribir\n", 60 | "campos (sólo se admiten caracteres alfanuméricos ASCII en\n", 61 | "minúsculas, con palabras separadas por \"_\"). DataCleaner\n", 62 | "normaliza automáticamente los campos en estos casos, lo\n", 63 | "que puede llevar a resultados inesperados.\n", 64 | "\n", 65 | "El nuevo nombre del campo normalizado es: \"alta_fecha\".\n", 66 | "Método que llamó al normalizador de campos: __init__\n", 67 | "\n", 68 | " warnings.warn(msg)\n", 69 | "/home/mec/MEGAsync/repo/data-cleaner/data_cleaner/data_cleaner.py:124: UserWarning: \n", 70 | "\n", 71 | "El campo \"Apellido\" no sigue las convenciones para escribir\n", 72 | "campos (sólo se admiten caracteres alfanuméricos ASCII en\n", 73 | "minúsculas, con palabras separadas por \"_\"). DataCleaner\n", 74 | "normaliza automáticamente los campos en estos casos, lo\n", 75 | "que puede llevar a resultados inesperados.\n", 76 | "\n", 77 | "El nuevo nombre del campo normalizado es: \"apellido\".\n", 78 | "Método que llamó al normalizador de campos: __init__\n", 79 | "\n", 80 | " warnings.warn(msg)\n", 81 | "/home/mec/MEGAsync/repo/data-cleaner/data_cleaner/data_cleaner.py:124: UserWarning: \n", 82 | "\n", 83 | "El campo \"Cuit\" no sigue las convenciones para escribir\n", 84 | "campos (sólo se admiten caracteres alfanuméricos ASCII en\n", 85 | "minúsculas, con palabras separadas por \"_\"). DataCleaner\n", 86 | "normaliza automáticamente los campos en estos casos, lo\n", 87 | "que puede llevar a resultados inesperados.\n", 88 | "\n", 89 | "El nuevo nombre del campo normalizado es: \"cuit\".\n", 90 | "Método que llamó al normalizador de campos: __init__\n", 91 | "\n", 92 | " warnings.warn(msg)\n", 93 | "/home/mec/MEGAsync/repo/data-cleaner/data_cleaner/data_cleaner.py:124: UserWarning: \n", 94 | "\n", 95 | "El campo \"Dedicacion\" no sigue las convenciones para escribir\n", 96 | "campos (sólo se admiten caracteres alfanuméricos ASCII en\n", 97 | "minúsculas, con palabras separadas por \"_\"). DataCleaner\n", 98 | "normaliza automáticamente los campos en estos casos, lo\n", 99 | "que puede llevar a resultados inesperados.\n", 100 | "\n", 101 | "El nuevo nombre del campo normalizado es: \"dedicacion\".\n", 102 | "Método que llamó al normalizador de campos: __init__\n", 103 | "\n", 104 | " warnings.warn(msg)\n", 105 | "/home/mec/MEGAsync/repo/data-cleaner/data_cleaner/data_cleaner.py:124: UserWarning: \n", 106 | "\n", 107 | "El campo \"Desde\" no sigue las convenciones para escribir\n", 108 | "campos (sólo se admiten caracteres alfanuméricos ASCII en\n", 109 | "minúsculas, con palabras separadas por \"_\"). DataCleaner\n", 110 | "normaliza automáticamente los campos en estos casos, lo\n", 111 | "que puede llevar a resultados inesperados.\n", 112 | "\n", 113 | "El nuevo nombre del campo normalizado es: \"desde\".\n", 114 | "Método que llamó al normalizador de campos: __init__\n", 115 | "\n", 116 | " warnings.warn(msg)\n", 117 | "/home/mec/MEGAsync/repo/data-cleaner/data_cleaner/data_cleaner.py:124: UserWarning: \n", 118 | "\n", 119 | "El campo \"Estudios\" no sigue las convenciones para escribir\n", 120 | "campos (sólo se admiten caracteres alfanuméricos ASCII en\n", 121 | "minúsculas, con palabras separadas por \"_\"). DataCleaner\n", 122 | "normaliza automáticamente los campos en estos casos, lo\n", 123 | "que puede llevar a resultados inesperados.\n", 124 | "\n", 125 | "El nuevo nombre del campo normalizado es: \"estudios\".\n", 126 | "Método que llamó al normalizador de campos: __init__\n", 127 | "\n", 128 | " warnings.warn(msg)\n", 129 | "/home/mec/MEGAsync/repo/data-cleaner/data_cleaner/data_cleaner.py:124: UserWarning: \n", 130 | "\n", 131 | "El campo \"Financiacion\" no sigue las convenciones para escribir\n", 132 | "campos (sólo se admiten caracteres alfanuméricos ASCII en\n", 133 | "minúsculas, con palabras separadas por \"_\"). DataCleaner\n", 134 | "normaliza automáticamente los campos en estos casos, lo\n", 135 | "que puede llevar a resultados inesperados.\n", 136 | "\n", 137 | "El nuevo nombre del campo normalizado es: \"financiacion\".\n", 138 | "Método que llamó al normalizador de campos: __init__\n", 139 | "\n", 140 | " warnings.warn(msg)\n", 141 | "/home/mec/MEGAsync/repo/data-cleaner/data_cleaner/data_cleaner.py:124: UserWarning: \n", 142 | "\n", 143 | "El campo \"Hasta\" no sigue las convenciones para escribir\n", 144 | "campos (sólo se admiten caracteres alfanuméricos ASCII en\n", 145 | "minúsculas, con palabras separadas por \"_\"). DataCleaner\n", 146 | "normaliza automáticamente los campos en estos casos, lo\n", 147 | "que puede llevar a resultados inesperados.\n", 148 | "\n", 149 | "El nuevo nombre del campo normalizado es: \"hasta\".\n", 150 | "Método que llamó al normalizador de campos: __init__\n", 151 | "\n", 152 | " warnings.warn(msg)\n", 153 | "/home/mec/MEGAsync/repo/data-cleaner/data_cleaner/data_cleaner.py:124: UserWarning: \n", 154 | "\n", 155 | "El campo \"ID_Unico\" no sigue las convenciones para escribir\n", 156 | "campos (sólo se admiten caracteres alfanuméricos ASCII en\n", 157 | "minúsculas, con palabras separadas por \"_\"). DataCleaner\n", 158 | "normaliza automáticamente los campos en estos casos, lo\n", 159 | "que puede llevar a resultados inesperados.\n", 160 | "\n", 161 | "El nuevo nombre del campo normalizado es: \"id_unico\".\n", 162 | "Método que llamó al normalizador de campos: __init__\n", 163 | "\n", 164 | " warnings.warn(msg)\n", 165 | "/home/mec/MEGAsync/repo/data-cleaner/data_cleaner/data_cleaner.py:124: UserWarning: \n", 166 | "\n", 167 | "El campo \"Locacion\" no sigue las convenciones para escribir\n", 168 | "campos (sólo se admiten caracteres alfanuméricos ASCII en\n", 169 | "minúsculas, con palabras separadas por \"_\"). DataCleaner\n", 170 | "normaliza automáticamente los campos en estos casos, lo\n", 171 | "que puede llevar a resultados inesperados.\n", 172 | "\n", 173 | "El nuevo nombre del campo normalizado es: \"locacion\".\n", 174 | "Método que llamó al normalizador de campos: __init__\n", 175 | "\n", 176 | " warnings.warn(msg)\n", 177 | "/home/mec/MEGAsync/repo/data-cleaner/data_cleaner/data_cleaner.py:124: UserWarning: \n", 178 | "\n", 179 | "El campo \"Mod_Fecha\" no sigue las convenciones para escribir\n", 180 | "campos (sólo se admiten caracteres alfanuméricos ASCII en\n", 181 | "minúsculas, con palabras separadas por \"_\"). DataCleaner\n", 182 | "normaliza automáticamente los campos en estos casos, lo\n", 183 | "que puede llevar a resultados inesperados.\n", 184 | "\n", 185 | "El nuevo nombre del campo normalizado es: \"mod_fecha\".\n", 186 | "Método que llamó al normalizador de campos: __init__\n", 187 | "\n", 188 | " warnings.warn(msg)\n", 189 | "/home/mec/MEGAsync/repo/data-cleaner/data_cleaner/data_cleaner.py:124: UserWarning: \n", 190 | "\n", 191 | "El campo \"Nacimiento\" no sigue las convenciones para escribir\n", 192 | "campos (sólo se admiten caracteres alfanuméricos ASCII en\n", 193 | "minúsculas, con palabras separadas por \"_\"). DataCleaner\n", 194 | "normaliza automáticamente los campos en estos casos, lo\n", 195 | "que puede llevar a resultados inesperados.\n", 196 | "\n", 197 | "El nuevo nombre del campo normalizado es: \"nacimiento\".\n", 198 | "Método que llamó al normalizador de campos: __init__\n", 199 | "\n", 200 | " warnings.warn(msg)\n", 201 | "/home/mec/MEGAsync/repo/data-cleaner/data_cleaner/data_cleaner.py:124: UserWarning: \n", 202 | "\n", 203 | "El campo \"Nivel_Grado\" no sigue las convenciones para escribir\n", 204 | "campos (sólo se admiten caracteres alfanuméricos ASCII en\n", 205 | "minúsculas, con palabras separadas por \"_\"). DataCleaner\n", 206 | "normaliza automáticamente los campos en estos casos, lo\n", 207 | "que puede llevar a resultados inesperados.\n", 208 | "\n", 209 | "El nuevo nombre del campo normalizado es: \"nivel_grado\".\n", 210 | "Método que llamó al normalizador de campos: __init__\n", 211 | "\n", 212 | " warnings.warn(msg)\n", 213 | "/home/mec/MEGAsync/repo/data-cleaner/data_cleaner/data_cleaner.py:124: UserWarning: \n", 214 | "\n", 215 | "El campo \"Nombre\" no sigue las convenciones para escribir\n", 216 | "campos (sólo se admiten caracteres alfanuméricos ASCII en\n", 217 | "minúsculas, con palabras separadas por \"_\"). DataCleaner\n", 218 | "normaliza automáticamente los campos en estos casos, lo\n", 219 | "que puede llevar a resultados inesperados.\n", 220 | "\n", 221 | "El nuevo nombre del campo normalizado es: \"nombre\".\n", 222 | "Método que llamó al normalizador de campos: __init__\n", 223 | "\n", 224 | " warnings.warn(msg)\n", 225 | "/home/mec/MEGAsync/repo/data-cleaner/data_cleaner/data_cleaner.py:124: UserWarning: \n", 226 | "\n", 227 | "El campo \"Nombre_Organismo\" no sigue las convenciones para escribir\n", 228 | "campos (sólo se admiten caracteres alfanuméricos ASCII en\n", 229 | "minúsculas, con palabras separadas por \"_\"). DataCleaner\n", 230 | "normaliza automáticamente los campos en estos casos, lo\n", 231 | "que puede llevar a resultados inesperados.\n", 232 | "\n", 233 | "El nuevo nombre del campo normalizado es: \"nombre_organismo\".\n", 234 | "Método que llamó al normalizador de campos: __init__\n", 235 | "\n", 236 | " warnings.warn(msg)\n", 237 | "/home/mec/MEGAsync/repo/data-cleaner/data_cleaner/data_cleaner.py:124: UserWarning: \n", 238 | "\n", 239 | "El campo \"Requiere Excepcion\" no sigue las convenciones para escribir\n", 240 | "campos (sólo se admiten caracteres alfanuméricos ASCII en\n", 241 | "minúsculas, con palabras separadas por \"_\"). DataCleaner\n", 242 | "normaliza automáticamente los campos en estos casos, lo\n", 243 | "que puede llevar a resultados inesperados.\n", 244 | "\n", 245 | "El nuevo nombre del campo normalizado es: \"requiere_excepcion\".\n", 246 | "Método que llamó al normalizador de campos: __init__\n", 247 | "\n", 248 | " warnings.warn(msg)\n", 249 | "/home/mec/MEGAsync/repo/data-cleaner/data_cleaner/data_cleaner.py:124: UserWarning: \n", 250 | "\n", 251 | "El campo \"Sexo\" no sigue las convenciones para escribir\n", 252 | "campos (sólo se admiten caracteres alfanuméricos ASCII en\n", 253 | "minúsculas, con palabras separadas por \"_\"). DataCleaner\n", 254 | "normaliza automáticamente los campos en estos casos, lo\n", 255 | "que puede llevar a resultados inesperados.\n", 256 | "\n", 257 | "El nuevo nombre del campo normalizado es: \"sexo\".\n", 258 | "Método que llamó al normalizador de campos: __init__\n", 259 | "\n", 260 | " warnings.warn(msg)\n", 261 | "/home/mec/MEGAsync/repo/data-cleaner/data_cleaner/data_cleaner.py:124: UserWarning: \n", 262 | "\n", 263 | "El campo \"Titulo\" no sigue las convenciones para escribir\n", 264 | "campos (sólo se admiten caracteres alfanuméricos ASCII en\n", 265 | "minúsculas, con palabras separadas por \"_\"). DataCleaner\n", 266 | "normaliza automáticamente los campos en estos casos, lo\n", 267 | "que puede llevar a resultados inesperados.\n", 268 | "\n", 269 | "El nuevo nombre del campo normalizado es: \"titulo\".\n", 270 | "Método que llamó al normalizador de campos: __init__\n", 271 | "\n", 272 | " warnings.warn(msg)\n" 273 | ] 274 | } 275 | ], 276 | "source": [ 277 | "dc = DataCleaner(input_path, encoding=\"utf-8\")" 278 | ] 279 | }, 280 | { 281 | "cell_type": "code", 282 | "execution_count": 5, 283 | "metadata": { 284 | "collapsed": false 285 | }, 286 | "outputs": [ 287 | { 288 | "data": { 289 | "text/plain": [ 290 | "Index([u'unnamed_0', u'alta_fecha', u'apellido', u'cuit', u'dedicacion',\n", 291 | " u'desde', u'estudios', u'financiacion', u'hasta', u'id_unico',\n", 292 | " u'locacion', u'mod_fecha', u'nacimiento', u'nivel_grado', u'nombre',\n", 293 | " u'nombre_organismo', u'requiere_excepcion', u'sexo', u'titulo'],\n", 294 | " dtype='object')" 295 | ] 296 | }, 297 | "execution_count": 5, 298 | "metadata": {}, 299 | "output_type": "execute_result" 300 | } 301 | ], 302 | "source": [ 303 | "dc.df.columns" 304 | ] 305 | }, 306 | { 307 | "cell_type": "code", 308 | "execution_count": 4, 309 | "metadata": { 310 | "collapsed": false 311 | }, 312 | "outputs": [], 313 | "source": [ 314 | "rules = [\n", 315 | " \n", 316 | "# {\n", 317 | "# \"nombre_propio\": [\n", 318 | "# {\"field\": \"financiacion\"},\n", 319 | "# {\"field\": \"nombre_organismo\"},\n", 320 | "# {\"field\": \"apellido\"},\n", 321 | "# {\"field\": \"nombre\"},\n", 322 | "# ]\n", 323 | "# },\n", 324 | " {\n", 325 | " \"fecha_simple\": [\n", 326 | "# {\"field\": \"desde\", \"time_format\": \"YYYY-MM-DD\"},\n", 327 | "# {\"field\": \"hasta\", \"time_format\": \"YYYY-MM-DD\"},\n", 328 | " {\"field\": \"alta_fecha\", \"time_format\": \"YYYY/MM/DD\"},\n", 329 | " {\"field\": \"mod_fecha\", \"time_format\": \"YYYY/MM/DD\"},\n", 330 | " ]\n", 331 | " },\n", 332 | " \n", 333 | " {\"reemplazar\": [\n", 334 | " {\n", 335 | " \"field\": \"locacion\",\n", 336 | " \"replacements\": {\"Servicios\": [\"Serv\"]}\n", 337 | " }\n", 338 | " ]\n", 339 | " },\n", 340 | " \n", 341 | " {\"renombrar_columnas\": [\n", 342 | " {\"field\": \"alta_fecha\", \"new_field\": \"fecha_alta_registro_rcpc\"},\n", 343 | " {\"field\": \"mod_fecha\", \"new_field\": \"fecha_modificacion_registro_rcpc\"}\n", 344 | " ]},\n", 345 | " \n", 346 | " {\"remover_columnas\": [\n", 347 | " {\"field\": \"estudios\"},\n", 348 | " {\"field\": \"titulo\"},\n", 349 | " {\"field\": \"nivel_grado\"},\n", 350 | " {\"field\": \"id_unico\"},\n", 351 | " {\"field\": \"nacimiento\"}\n", 352 | " ]}\n", 353 | "]" 354 | ] 355 | }, 356 | { 357 | "cell_type": "code", 358 | "execution_count": 5, 359 | "metadata": { 360 | "collapsed": false 361 | }, 362 | "outputs": [], 363 | "source": [ 364 | "dc.clean(rules)" 365 | ] 366 | }, 367 | { 368 | "cell_type": "code", 369 | "execution_count": 8, 370 | "metadata": { 371 | "collapsed": false 372 | }, 373 | "outputs": [], 374 | "source": [ 375 | "y = 2015\n", 376 | "dc.df.hasta = pd.to_datetime(dc.df.hasta,yearfirst=True)\n", 377 | "dc.df.desde = pd.to_datetime(dc.df.desde,yearfirst=True)\n", 378 | "gii = dc.df.desde.dt.year == y\n", 379 | "gif = dc.df.hasta.dt.year == y\n", 380 | "gis = (dc.df.desde.dt.year < y) & (dc.df.hasta.dt.year > y)\n", 381 | "givig = gii | gif | gis\n", 382 | "df1 = dc.df[givig]" 383 | ] 384 | }, 385 | { 386 | "cell_type": "code", 387 | "execution_count": 10, 388 | "metadata": { 389 | "collapsed": false 390 | }, 391 | "outputs": [ 392 | { 393 | "ename": "NameError", 394 | "evalue": "name 'DEFAULT_OUTPUT_PATH_VIGENTE' is not defined", 395 | "output_type": "error", 396 | "traceback": [ 397 | "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", 398 | "\u001b[1;31mNameError\u001b[0m Traceback (most recent call last)", 399 | "\u001b[1;32m\u001b[0m in \u001b[0;36m\u001b[1;34m()\u001b[0m\n\u001b[0;32m 10\u001b[0m \u001b[0mdf2\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mdc\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mdf\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;33m~\u001b[0m\u001b[0mgin2016\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 11\u001b[0m df1.set_index(df1.columns[0]).to_csv(\n\u001b[1;32m---> 12\u001b[1;33m \u001b[0mDEFAULT_OUTPUT_PATH_VIGENTE\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mencoding\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mOUTPUT_ENCODING\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 13\u001b[0m \u001b[0mseparator\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mOUTPUT_SEPARATOR\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 14\u001b[0m quotechar=self.OUTPUT_QUOTECHAR)\n", 400 | "\u001b[1;31mNameError\u001b[0m: name 'DEFAULT_OUTPUT_PATH_VIGENTE' is not defined" 401 | ] 402 | } 403 | ], 404 | "source": [ 405 | "y = 2015\n", 406 | "dc.df.hasta = pd.to_datetime(dc.df.hasta,yearfirst=True)\n", 407 | "dc.df.desde = pd.to_datetime(dc.df.desde,yearfirst=True)\n", 408 | "gii = dc.df.desde.dt.year == y\n", 409 | "gif = dc.df.hasta.dt.year == y\n", 410 | "gis = (dc.df.desde.dt.year < y) & (dc.df.hasta.dt.year > y)\n", 411 | "givig = gii | gif | gis\n", 412 | "df1 = dc.df[givig]\n", 413 | "gin2016 = dc.df.desde.dt.year == 2016\n", 414 | "df2 = dc.df[~gin2016]\n", 415 | "df1.set_index(df1.columns[0]).to_csv(\n", 416 | " DEFAULT_OUTPUT_PATH_VIGENTE, encoding=self.OUTPUT_ENCODING,\n", 417 | " separator=self.OUTPUT_SEPARATOR,\n", 418 | " quotechar=self.OUTPUT_QUOTECHAR)\n", 419 | "df2.set_index(df2.columns[0]).to_csv(\n", 420 | " DEFAULT_OUTPUT_PATH1_HISTORICO, encoding=self.OUTPUT_ENCODING,\n", 421 | " separator=self.OUTPUT_SEPARATOR,\n", 422 | " quotechar=self.OUTPUT_QUOTECHAR)" 423 | ] 424 | }, 425 | { 426 | "cell_type": "code", 427 | "execution_count": null, 428 | "metadata": { 429 | "collapsed": true 430 | }, 431 | "outputs": [], 432 | "source": [] 433 | } 434 | ], 435 | "metadata": { 436 | "kernelspec": { 437 | "display_name": "Python 2", 438 | "language": "python", 439 | "name": "python2" 440 | }, 441 | "language_info": { 442 | "codemirror_mode": { 443 | "name": "ipython", 444 | "version": 2 445 | }, 446 | "file_extension": ".py", 447 | "mimetype": "text/x-python", 448 | "name": "python", 449 | "nbconvert_exporter": "python", 450 | "pygments_lexer": "ipython2", 451 | "version": "2.7.6" 452 | }, 453 | "notify_time": "5", 454 | "toc": { 455 | "toc_cell": false, 456 | "toc_number_sections": true, 457 | "toc_threshold": 4, 458 | "toc_window_display": false 459 | } 460 | }, 461 | "nbformat": 4, 462 | "nbformat_minor": 0 463 | } 464 | -------------------------------------------------------------------------------- /estructura-organica-pen/cleaner_estructura.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # -*- coding: utf-8 -*- 3 | 4 | """Script de limpieza para los datos de audiencias 5 | 6 | Utiliza el paquete `data-cleaner` para limpiar datos de audiencias aplicando 7 | reglas de limpieza disponibles en el paquete, reglas extendidas sobre el objeto 8 | MyDataCleaner y cualquier script de limpieza custom que deba aplicarse antes o 9 | después de las reglas. 10 | 11 | Típicamente, el usuario puede tener que aplicar filtros, recortes o tareas muy 12 | específicas para ese dataset antes de aplicar reglas de limpieza. Estas tareas 13 | no buscarían implementar una nueva regla de limpieza en la clase extensible 14 | MyDataCleaner sino que se escribirían en los métodos provistos que actúan antes 15 | o después de la aplicación de reglas. 16 | 17 | Versión del data-cleaner: 0.1.15 18 | """ 19 | 20 | 21 | from __future__ import unicode_literals 22 | from __future__ import print_function 23 | from __future__ import with_statement 24 | import sys 25 | 26 | from data_cleaner import DataCleaner 27 | 28 | DEFAULT_INPUT_PATH = "estructura-organica-raw.csv" 29 | DEFAULT_OUTPUT_PATH = "estructura-organica-clean.csv" 30 | 31 | RULES = [ 32 | { 33 | "renombrar_columnas": [ 34 | {"field": "aut_dni", "new_field": "autoridad_dni"}, 35 | {"field": "aut_cuit_cuil", "new_field": "autoridad_cuil_cuit"}, 36 | {"field": "aut_cargo", "new_field": "autoridad_cargo"}, 37 | {"field": "aut_tratamiento", "new_field": "autoridad_tratamiento"}, 38 | {"field": "aut_apellido", "new_field": "autoridad_apellido"}, 39 | {"field": "aut_nombre", "new_field": "autoridad_nombre"}, 40 | {"field": "aut_norma_designacion", 41 | "new_field": "autoridad_norma_designacion"}, 42 | {"field": "norma_competenciasobjetivos", 43 | "new_field": "norma_competencias_objetivos"}, 44 | {"field": "cordigo_postal", "new_field": "codigo_postal"} 45 | ] 46 | }, 47 | { 48 | "string": [ 49 | {"field": "jurisdiccion", "keep_original": False}, 50 | {"field": "unidad", "keep_original": False}, 51 | {"field": "reporta_a", "keep_original": False}, 52 | {"field": "unidad_tipo", "keep_original": False}, 53 | {"field": "autoridad_cargo", "keep_original": False}, 54 | {"field": "autoridad_tratamiento", "keep_original": False}, 55 | {"field": "autoridad_apellido", "keep_original": False}, 56 | {"field": "autoridad_nombre", "keep_original": False}, 57 | {"field": "piso_oficina", "keep_original": False}, 58 | {"field": "codigo_postal", "keep_original": False}, 59 | {"field": "domicilio", "keep_original": False}, 60 | {"field": "localidad", "keep_original": False}, 61 | {"field": "provincia", "keep_original": False}, 62 | ] 63 | }, 64 | { 65 | "string_regex_substitute": [ 66 | {"field": "norma_competencias_objetivos", "regex_str_match": ";", "regex_str_sub": ",", 67 | "keep_original": False}, 68 | {"field": "unidad", "regex_str_match": "\(.*\)", "regex_str_sub": "", 69 | "keep_original": False}, 70 | {"field": "provincia", "regex_str_match": "Bs\. As\.", "regex_str_sub": "Buenos Aires", 71 | "keep_original": False}, 72 | {"field": "autoridad_tratamiento", "regex_str_match": "\s+$", "regex_str_sub": "", 73 | "keep_original": False}, 74 | {"field": "autoridad_tratamiento", "regex_str_match": "(.+{^\.})$", "regex_str_sub": "\g<1>.", 75 | "keep_original": False}, 76 | {"field": "autoridad_norma_designacion", "regex_str_match": "Dto\D*", "regex_str_sub": "Decreto ", 77 | "keep_original": False}, 78 | {"field": "web", "regex_str_match": "^.+www\.", "regex_str_sub": "http://www.", 79 | "keep_original": False}, 80 | ] 81 | }, 82 | { 83 | "mail_format": [ 84 | {"field": "mail"} 85 | ] 86 | }, 87 | { 88 | "reemplazar_string": [ 89 | {"field": "piso_oficina", "replacements": { 90 | "Oficina": ["Of.icina"]}}, 91 | {"field": "piso_oficina", "replacements": {"Piso": ["Planta"]}} 92 | ] 93 | } 94 | ] 95 | 96 | 97 | def custom_cleaning_before_rules(dc): 98 | """Script de limpieza custom para aplicar al objeto antes de las reglas. 99 | 100 | Args: 101 | dc (DataCleaner): Objeto data cleaner con datos cargados. 102 | """ 103 | pass 104 | 105 | 106 | def custom_cleaning_after_rules(dc): 107 | """Script de limpieza custom para aplicar al objeto después de las reglas. 108 | 109 | Args: 110 | dc (DataCleaner): Objeto data cleaner con datos cargados. 111 | """ 112 | pass 113 | 114 | 115 | class MyDataCleaner(DataCleaner): 116 | """Extensión del DataCleaner que permite agregar nuevas reglas. 117 | 118 | El método clean_file() utiliza esta clase extendible del DataCleaner para 119 | permitir el agregado de nuevos métodos de limpieza que sean necesarios, en 120 | un formato que haga sencilla su posterior portación al paquete original.""" 121 | 122 | def nueva_regla(self, field, sufix=None, keep_original=False, 123 | inplace=False): 124 | """One liner sobre lo que hace la regla. 125 | 126 | Descripción extendida (si correponde) sobre lo que hace la regla. 127 | 128 | Args: 129 | field (str): Campo a limpiar. 130 | sufix (str): Sufijo del nuevo campo creado después de limpiar. 131 | keep_original (bool): True si se mantiene el campo original y el 132 | nuevo se agrega con un sufijo. False para reemplazar el campo 133 | original. 134 | inplace (bool): True si los cambios deben impactar en el estado del 135 | objeto. False si sólo se quiere retornar una serie limpia sin 136 | impactar en el estado del objeto. 137 | 138 | Returns: 139 | pandas.Series: Serie de strings limpios 140 | """ 141 | # debe normalizarse el nombre del campo primero 142 | field = self._normalize_field(field) 143 | 144 | # toma la serie a limpiar del DataFrame 145 | series = self.df[field] 146 | 147 | # ________________________________________________________ 148 | # en este espacio se aplica el nuevo algoritmo de limpieza 149 | # y se guarda la serie limpia en una nueva variable 150 | 151 | clean_series = series 152 | # ________________________________________________________ 153 | 154 | # guarda los cambios en el objeto, si inplace=True 155 | if inplace: 156 | self._update_series(field=field, sufix=sufix, 157 | keep_original=keep_original, 158 | new_series=clean_series) 159 | 160 | return clean_series 161 | 162 | 163 | def clean_file(input_path, output_path): 164 | """Limpia los datos del input creando un nuevo archivo limpio.""" 165 | 166 | print("Comenzando limpieza...") 167 | # crea una instancia de la versión extendible del DataCleaner 168 | dc = MyDataCleaner(input_path) 169 | 170 | # aplica reglas de limpieza disponibles y customizadas 171 | custom_cleaning_before_rules(dc) 172 | dc.clean(RULES) 173 | custom_cleaning_after_rules(dc) 174 | 175 | # guarda la data limpia en el csv output 176 | dc.save(output_path) 177 | print("Limpieza finalizada exitosamente!") 178 | 179 | 180 | if __name__ == '__main__': 181 | # toma argumentos optativos de la línea de comandos 182 | if len(sys.argv) == 1: 183 | # el usuario no pasó argumentos, se usan los default en input y output 184 | clean_file(DEFAULT_INPUT_PATH, DEFAULT_OUTPUT_PATH) 185 | elif len(sys.argv) == 2: 186 | # el usuario pasó input, se usa el default para output 187 | clean_file(sys.argv[1], DEFAULT_OUTPUT_PATH) 188 | elif len(sys.argv) == 3: 189 | # el usuario pasó input y output, no se usan defaults 190 | clean_file(sys.argv[1], sys.argv[2]) 191 | else: 192 | # el usuario pasó más de 2 argumentos! 193 | print("{} no es una cantidad de argumentos aceptada.".format( 194 | len(sys.argv) - 1 195 | )) 196 | -------------------------------------------------------------------------------- /estructura-organica-pen/estructura-organica-documentacion.md: -------------------------------------------------------------------------------- 1 | # Estructura Orgánica y Autoridades del Poder Ejecutivo Nacional 2 | 3 | Este conjunto de datos provee información acerca de la estructura y las autoridades de la Administración Centralizada del Estado Nacional, tomando como fuente de información el Boletín Oficial y los respectivos Decretos de designación de cargos en la Administración Pública Nacional hasta el rango de Subsecretarios. 4 | 5 | En esta primera versión no se incluyen los cargos extra-escalafonarios. Toda la información suministrada está en proceso de actualización permanente. Los datos de contacto tanto domiciliario, postal, telefónico, como digital, han sido relevados a partir de la información publicada por los Organismos en distintas fuentes de información y en sus respectivos sitios de web. 6 | 7 | # Características 8 | 9 | * **Fecha de Publicación:** 07/03/2016 10 | 11 | * **Recursos:** Estructura Orgánica. 12 | 13 | * **Tags o Etiquetas:** Organigrama, Estructura, Cargos, Jerarquía, Árbol 14 | 15 | * **Organización:** Ministerio de Modernización- Secretaría de Empleo Público- Subsecretaría de Planificación de Empleo Público. 16 | 17 | * **Autor:** Ministerio de Modernización- Secretaría de Empleo Público- Subsecretaría de Planificación de Empleo Público. 18 | 19 | * **E-mail del Autor:** [mapadelestado@modernizacion.gob.ar](mailto:mapadelestado@jefatura.gob.ar) 20 | 21 | * **Responsable:** Ministerio de Modernización. 22 | 23 | * **E-mail del responsable:** [gobiernoabierto@modernizacion.gob.ar](mailto:gobiernoabierto@modernizacion.gob.ar) 24 | 25 | * **Grupo:** Administración Pública y Normativa. 26 | 27 | * **Frecuencia de Actualización:** Eventual. 28 | 29 | # Recursos 30 | 31 | ## Estructura Orgánica. 32 | 33 | * **Nombre:** estructura-organica 34 | 35 | * **Descripción:** Estructura Orgánica del Poder Ejecutivo Nacional. 36 | 37 | * **Formato:** CSV 38 | 39 | * **Rango temporal:** No aplica. 40 | 41 | * **Fecha de Actualización:** 07/03/2016 42 | 43 | ### Campos del recurso 44 | 45 | * **jurisdiccion (str):** Jurisdicción a la que pertenece la unidad. 46 | 47 | * **unidad (str):** Unidad sobre la que se brinda información. 48 | 49 | * **reporta_a (str):** Unidad a la que reporta la presente unidad. 50 | 51 | * **unidad_tipo (str):** Tipo de unidad. Puede ser: Descentralizado, Desconcentrado, Empresa del Estado, Organismo Interestadual, Sociedad Anónima, Sociedad del Estado. 52 | 53 | * **norma_competencias_objetivos (str):** Decreto o Resolución que lo regula. 54 | 55 | * **autoridad_cargo (str):** Cargo de la autoridad que encabeza la unidad en cuestión. 56 | 57 | * **autoridad_tratamiento (str):** Tratamiento de la autoridad de la unidad (ej: Lic., Dr., Sr.) 58 | 59 | * **autoridad_apellido (str):** Apellido de la autoridad de la unidad. 60 | 61 | * **autoridad_nombre (str):** Nombre de la autoridad de la unidad. 62 | 63 | * **autoridad_dni:** Documento Nacional de Identidad de la autoridad. 64 | 65 | * **autoridad_cuil_cuit:** Número de CUIT/CUIL de la autoridad. 66 | 67 | * **extraescalafonario (str):** Indica si el cargo es ajeno a la enumeración del artículo 4º de la Decisión Administrativa Nº 1/00. 68 | 69 | * **autoridad_norma_designacion (str):** Norma que designa a la autoridad a cargo de la unidad. 70 | 71 | * **web (str):** Dirección del sitio web de la unidad. 72 | 73 | * **domicilio (str):** Domicilio en el que se desarrollan las actividades de la unidad (calle y nro.) 74 | 75 | * **piso_oficina (str):** Piso dentro del inmueble. 76 | 77 | * **localidad (str):** Localidad en la que se encuentra el domicilio. 78 | 79 | * **codigo_postal (str):** Código Postal. 80 | 81 | * **provincia (str):** Provincia en la que se encuentra la unidad. 82 | 83 | * **telefono (str):** Número telefónico de contacto con la unidad. 84 | 85 | * **mail (str):** Dirección de correo electrónico de contacto con la unidad. 86 | 87 | # Notas 88 | 89 | Para más información ver [http://mapadelestado.modernizacion.gob.ar](http://mapadelestado.modernizacion.gob.ar) 90 | 91 | # Preprocesamiento 92 | 93 | Este dataset fue preprocesado siguiendo los [estándares de limpieza de datos](https://github.com/datosgobar/documentacion-estandares/tree/master/datos/limpieza) que incluyen una normalización básica de strings, de fechas y separación de campos a partir de strings concatenados. 94 | 95 | -------------------------------------------------------------------------------- /estructura-organica-pen/estructura-organica.xlsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/datosgobar/datasets-portal/74a0fb0b5316d4cdeb895054f587ca38898ca121/estructura-organica-pen/estructura-organica.xlsx -------------------------------------------------------------------------------- /portal-legacy/consejo-nacional-mujeres/cleaner-consejo-naciona-de-mujeres.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | 3 | from data_cleaner import DataCleaner 4 | 5 | data_path = '/home/mec/Downloads/' 6 | input_path = data_path + "arg-servsociales-mds-red144-nacional.csv" 7 | output_path = data_path + "clean_red-114-del-consejo-nacional-de-las-mujeres.csv" 8 | 9 | rules = [ 10 | { 11 | "nombre_propio": [ 12 | {"field": "institucion"}, 13 | {"field": "localidad"}, 14 | {"field": "provincia"}, 15 | {"field": "direccion"}, 16 | ] 17 | }, 18 | { 19 | "string": [ 20 | {"field": "localidad"}, 21 | {"field": "provincia"}, 22 | {"field": "direccion"}, 23 | {"field": u"Tipo de API (Centro/Institución)"}, 24 | ] 25 | }, 26 | {"renombrar_columnas": [ 27 | {"field": "recurso", "new_field": "coordenadas"}, 28 | ]} 29 | # NO FUNCIONA BIEN DEJO EL CAMPO COMO ESTA 30 | # {"reemplazar": [ 31 | # { 32 | # "field": "horario_de_atencion", 33 | # "replacements": {"LUN": ["lunes", "lun"], 34 | # "MAR": ["martes", "mar"], 35 | # "MIE": ["miercoles", "mie", u"miércoles"], 36 | # "JUE": ["jueves", "jue"], 37 | # "VIE": ["viernes", "vie"], 38 | # "SAB": ["sabado", "sab", "sábado","sáb"], 39 | # "DOM": ["domingo", "dom"], 40 | # "-": [" a "], 41 | # "_": [" y ", ","], 42 | # "": ["hs", "hs."], 43 | # "00:00-23:59": ["24"] 44 | # }, 45 | # "keep_original": True 46 | # } 47 | # ]} 48 | 49 | ] 50 | 51 | dc = DataCleaner(input_path) 52 | # No implementados aun van derecho con Pandas 53 | dc.df['coordenadas_latitud'] = dc.df.recurso.str.split("\s+", 1, expand=True)[0] 54 | dc.df['coordenadas_longitud'] = dc.df.recurso.str.split("\s+", 1, expand=True)[1] 55 | dc.df['mail'] = dc.df['mail'].str.lower() 56 | dc.df['sitio_web'] = dc.df.mail.str.findall('www[^ \s]+').str.join(",") 57 | dc.df['mail'] = dc.df.mail.str.findall('[a-z_0-9\.]+@[a-z_0-9\.]+').str.join(",") 58 | dc.clean_file(rules, output_path) 59 | -------------------------------------------------------------------------------- /portal-legacy/consejo-nacional-mujeres/directivas-consejo-nacional-de-mujeres.md: -------------------------------------------------------------------------------- 1 | #GENERAL 2 | 3 | Los CSVs raw no tienen delimitados los campos por “ ” y algunos campos contienen comas en sus valores entonces no se parsea correctamente. ARREGLARLO! 4 | 5 | ##CAMPOS 6 | 7 | * Normalizar los campos al formato de nuestro estandar> minusculas_y_guiones_bajos 8 | * Separar la columna mail en mail / sitio_web 9 | * Separar el campo RECURSO que contiene coordenadas en latitud y longitud 10 | 11 | ##VALORES 12 | * mail: 13 | 1. hay varios mails, separarlos con ‘,’ 14 | 1. pasar los mails a minusculas 15 | 1. Extraer los sitios web que haya y mandarlos a la columna nueva sito_web 16 | * horario_de_atencion llevarlo al standard en un nuevo campo standard_horario_de_atencion pero conservando version legible por humanos 17 | -------------------------------------------------------------------------------- /portal-legacy/datasets-raw/establecimientos-educativos/educacion---establecimientos---buenosaires.ods: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/datosgobar/datasets-portal/74a0fb0b5316d4cdeb895054f587ca38898ca121/portal-legacy/datasets-raw/establecimientos-educativos/educacion---establecimientos---buenosaires.ods -------------------------------------------------------------------------------- /portal-legacy/datasets-raw/establecimientos-educativos/educacion---establecimientos---caba.ods: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/datosgobar/datasets-portal/74a0fb0b5316d4cdeb895054f587ca38898ca121/portal-legacy/datasets-raw/establecimientos-educativos/educacion---establecimientos---caba.ods -------------------------------------------------------------------------------- /portal-legacy/datasets-raw/establecimientos-educativos/educacion---establecimientos---catamarca.ods: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/datosgobar/datasets-portal/74a0fb0b5316d4cdeb895054f587ca38898ca121/portal-legacy/datasets-raw/establecimientos-educativos/educacion---establecimientos---catamarca.ods -------------------------------------------------------------------------------- /portal-legacy/datasets-raw/establecimientos-educativos/educacion---establecimientos---chaco.ods: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/datosgobar/datasets-portal/74a0fb0b5316d4cdeb895054f587ca38898ca121/portal-legacy/datasets-raw/establecimientos-educativos/educacion---establecimientos---chaco.ods -------------------------------------------------------------------------------- /portal-legacy/datasets-raw/establecimientos-educativos/educacion---establecimientos---chubut.ods: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/datosgobar/datasets-portal/74a0fb0b5316d4cdeb895054f587ca38898ca121/portal-legacy/datasets-raw/establecimientos-educativos/educacion---establecimientos---chubut.ods -------------------------------------------------------------------------------- /portal-legacy/datasets-raw/establecimientos-educativos/educacion---establecimientos---cordoba.ods: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/datosgobar/datasets-portal/74a0fb0b5316d4cdeb895054f587ca38898ca121/portal-legacy/datasets-raw/establecimientos-educativos/educacion---establecimientos---cordoba.ods -------------------------------------------------------------------------------- /portal-legacy/datasets-raw/establecimientos-educativos/educacion---establecimientos---corrientes.ods: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/datosgobar/datasets-portal/74a0fb0b5316d4cdeb895054f587ca38898ca121/portal-legacy/datasets-raw/establecimientos-educativos/educacion---establecimientos---corrientes.ods -------------------------------------------------------------------------------- /portal-legacy/datasets-raw/establecimientos-educativos/educacion---establecimientos---entre-rios.ods: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/datosgobar/datasets-portal/74a0fb0b5316d4cdeb895054f587ca38898ca121/portal-legacy/datasets-raw/establecimientos-educativos/educacion---establecimientos---entre-rios.ods -------------------------------------------------------------------------------- /portal-legacy/datasets-raw/establecimientos-educativos/educacion---establecimientos---formosa.ods: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/datosgobar/datasets-portal/74a0fb0b5316d4cdeb895054f587ca38898ca121/portal-legacy/datasets-raw/establecimientos-educativos/educacion---establecimientos---formosa.ods -------------------------------------------------------------------------------- /portal-legacy/datasets-raw/establecimientos-educativos/educacion---establecimientos---jujuy.ods: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/datosgobar/datasets-portal/74a0fb0b5316d4cdeb895054f587ca38898ca121/portal-legacy/datasets-raw/establecimientos-educativos/educacion---establecimientos---jujuy.ods -------------------------------------------------------------------------------- /portal-legacy/datasets-raw/establecimientos-educativos/educacion---establecimientos---la-pampa.ods: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/datosgobar/datasets-portal/74a0fb0b5316d4cdeb895054f587ca38898ca121/portal-legacy/datasets-raw/establecimientos-educativos/educacion---establecimientos---la-pampa.ods -------------------------------------------------------------------------------- /portal-legacy/datasets-raw/establecimientos-educativos/educacion---establecimientos---la-rioja.ods: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/datosgobar/datasets-portal/74a0fb0b5316d4cdeb895054f587ca38898ca121/portal-legacy/datasets-raw/establecimientos-educativos/educacion---establecimientos---la-rioja.ods -------------------------------------------------------------------------------- /portal-legacy/datasets-raw/establecimientos-educativos/educacion---establecimientos---mendoza.ods: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/datosgobar/datasets-portal/74a0fb0b5316d4cdeb895054f587ca38898ca121/portal-legacy/datasets-raw/establecimientos-educativos/educacion---establecimientos---mendoza.ods -------------------------------------------------------------------------------- /portal-legacy/datasets-raw/establecimientos-educativos/educacion---establecimientos---misiones.ods: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/datosgobar/datasets-portal/74a0fb0b5316d4cdeb895054f587ca38898ca121/portal-legacy/datasets-raw/establecimientos-educativos/educacion---establecimientos---misiones.ods -------------------------------------------------------------------------------- /portal-legacy/datasets-raw/establecimientos-educativos/educacion---establecimientos---neuquen.ods: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/datosgobar/datasets-portal/74a0fb0b5316d4cdeb895054f587ca38898ca121/portal-legacy/datasets-raw/establecimientos-educativos/educacion---establecimientos---neuquen.ods -------------------------------------------------------------------------------- /portal-legacy/datasets-raw/establecimientos-educativos/educacion---establecimientos---rio-negro.ods: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/datosgobar/datasets-portal/74a0fb0b5316d4cdeb895054f587ca38898ca121/portal-legacy/datasets-raw/establecimientos-educativos/educacion---establecimientos---rio-negro.ods -------------------------------------------------------------------------------- /portal-legacy/datasets-raw/establecimientos-educativos/educacion---establecimientos---salta.ods: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/datosgobar/datasets-portal/74a0fb0b5316d4cdeb895054f587ca38898ca121/portal-legacy/datasets-raw/establecimientos-educativos/educacion---establecimientos---salta.ods -------------------------------------------------------------------------------- /portal-legacy/datasets-raw/establecimientos-educativos/educacion---establecimientos---san-juan.ods: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/datosgobar/datasets-portal/74a0fb0b5316d4cdeb895054f587ca38898ca121/portal-legacy/datasets-raw/establecimientos-educativos/educacion---establecimientos---san-juan.ods -------------------------------------------------------------------------------- /portal-legacy/datasets-raw/establecimientos-educativos/educacion---establecimientos---san-luis.ods: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/datosgobar/datasets-portal/74a0fb0b5316d4cdeb895054f587ca38898ca121/portal-legacy/datasets-raw/establecimientos-educativos/educacion---establecimientos---san-luis.ods -------------------------------------------------------------------------------- /portal-legacy/datasets-raw/establecimientos-educativos/educacion---establecimientos---santa-cruz.ods: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/datosgobar/datasets-portal/74a0fb0b5316d4cdeb895054f587ca38898ca121/portal-legacy/datasets-raw/establecimientos-educativos/educacion---establecimientos---santa-cruz.ods -------------------------------------------------------------------------------- /portal-legacy/datasets-raw/establecimientos-educativos/educacion---establecimientos---santa-fe.ods: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/datosgobar/datasets-portal/74a0fb0b5316d4cdeb895054f587ca38898ca121/portal-legacy/datasets-raw/establecimientos-educativos/educacion---establecimientos---santa-fe.ods -------------------------------------------------------------------------------- /portal-legacy/datasets-raw/establecimientos-educativos/educacion---establecimientos---santiago-del-estero.ods: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/datosgobar/datasets-portal/74a0fb0b5316d4cdeb895054f587ca38898ca121/portal-legacy/datasets-raw/establecimientos-educativos/educacion---establecimientos---santiago-del-estero.ods -------------------------------------------------------------------------------- /portal-legacy/datasets-raw/establecimientos-educativos/educacion---establecimientos---tierra-del-fuego.ods: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/datosgobar/datasets-portal/74a0fb0b5316d4cdeb895054f587ca38898ca121/portal-legacy/datasets-raw/establecimientos-educativos/educacion---establecimientos---tierra-del-fuego.ods -------------------------------------------------------------------------------- /portal-legacy/datasets-raw/establecimientos-educativos/educacion---establecimientos---tucuman.ods: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/datosgobar/datasets-portal/74a0fb0b5316d4cdeb895054f587ca38898ca121/portal-legacy/datasets-raw/establecimientos-educativos/educacion---establecimientos---tucuman.ods -------------------------------------------------------------------------------- /portal-legacy/establecimientos_de_salud/Untitled.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "code", 5 | "execution_count": 2, 6 | "metadata": { 7 | "collapsed": false 8 | }, 9 | "outputs": [ 10 | { 11 | "ename": "ImportError", 12 | "evalue": "C extension: hashtable not built. If you want to import pandas from the source directory, you may need to run 'python setup.py build_ext --inplace' to build the C extensions first.", 13 | "output_type": "error", 14 | "traceback": [ 15 | "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", 16 | "\u001b[0;31mImportError\u001b[0m Traceback (most recent call last)", 17 | "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0;32mfrom\u001b[0m \u001b[0mdata_cleaner\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mDataCleaner\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", 18 | "\u001b[0;32m/usr/local/lib/python2.7/site-packages/data_cleaner/__init__.py\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[0;31m# -*- coding: utf-8 -*-\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 2\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 3\u001b[0;31m \u001b[0;32mfrom\u001b[0m \u001b[0mdata_cleaner\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mDataCleaner\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 4\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 5\u001b[0m \u001b[0m__author__\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m'Gobierno Abierto Argentina'\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", 19 | "\u001b[0;32m/usr/local/lib/python2.7/site-packages/data_cleaner/data_cleaner.py\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[1;32m 10\u001b[0m \u001b[0;32mfrom\u001b[0m \u001b[0m__future__\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mprint_function\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 11\u001b[0m \u001b[0;32mfrom\u001b[0m \u001b[0m__future__\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mwith_statement\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 12\u001b[0;31m \u001b[0;32mimport\u001b[0m \u001b[0mpandas\u001b[0m \u001b[0;32mas\u001b[0m \u001b[0mpd\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 13\u001b[0m \u001b[0;32mfrom\u001b[0m \u001b[0mdateutil\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mtz\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 14\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0marrow\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", 20 | "\u001b[0;32m/usr/local/lib/python2.7/site-packages/pandas/__init__.py\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[1;32m 11\u001b[0m \u001b[0;34m\"pandas from the source directory, you may need to run \"\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 12\u001b[0m \u001b[0;34m\"'python setup.py build_ext --inplace' to build the C \"\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 13\u001b[0;31m \"extensions first.\".format(module))\n\u001b[0m\u001b[1;32m 14\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 15\u001b[0m \u001b[0;32mfrom\u001b[0m \u001b[0mdatetime\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mdatetime\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", 21 | "\u001b[0;31mImportError\u001b[0m: C extension: hashtable not built. If you want to import pandas from the source directory, you may need to run 'python setup.py build_ext --inplace' to build the C extensions first." 22 | ] 23 | } 24 | ], 25 | "source": [ 26 | "from data_cleaner import DataCleaner" 27 | ] 28 | }, 29 | { 30 | "cell_type": "code", 31 | "execution_count": null, 32 | "metadata": { 33 | "collapsed": true 34 | }, 35 | "outputs": [], 36 | "source": [ 37 | " " 38 | ] 39 | }, 40 | { 41 | "cell_type": "code", 42 | "execution_count": 1, 43 | "metadata": { 44 | "collapsed": false 45 | }, 46 | "outputs": [ 47 | { 48 | "ename": "ValueError", 49 | "evalue": "unknown locale: UTF-8", 50 | "output_type": "error", 51 | "traceback": [ 52 | "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", 53 | "\u001b[0;31mValueError\u001b[0m Traceback (most recent call last)", 54 | "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0;32mfrom\u001b[0m \u001b[0mdata_cleaner\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mDataCleaner\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 2\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 3\u001b[0m \u001b[0minput_path\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m\"establecimientos-de-salud-raw.csv\"\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 4\u001b[0m \u001b[0moutput_path\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m\"establecimientos-de-salud-clean.csv\"\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 5\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", 55 | "\u001b[0;32m/usr/local/lib/python2.7/site-packages/data_cleaner/__init__.py\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[0;31m# -*- coding: utf-8 -*-\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 2\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 3\u001b[0;31m \u001b[0;32mfrom\u001b[0m \u001b[0mdata_cleaner\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mDataCleaner\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 4\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 5\u001b[0m \u001b[0m__author__\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m'Gobierno Abierto Argentina'\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", 56 | "\u001b[0;32m/usr/local/lib/python2.7/site-packages/data_cleaner/data_cleaner.py\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[1;32m 10\u001b[0m \u001b[0;32mfrom\u001b[0m \u001b[0m__future__\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mprint_function\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 11\u001b[0m \u001b[0;32mfrom\u001b[0m \u001b[0m__future__\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mwith_statement\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 12\u001b[0;31m \u001b[0;32mimport\u001b[0m \u001b[0mpandas\u001b[0m \u001b[0;32mas\u001b[0m \u001b[0mpd\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 13\u001b[0m \u001b[0;32mfrom\u001b[0m \u001b[0mdateutil\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mtz\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 14\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0marrow\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", 57 | "\u001b[0;32m/usr/local/lib/python2.7/site-packages/pandas/__init__.pyc\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[1;32m 42\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mpandas\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mcore\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mconfig_init\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 43\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 44\u001b[0;31m \u001b[0;32mfrom\u001b[0m \u001b[0mpandas\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mcore\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mapi\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0;34m*\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 45\u001b[0m \u001b[0;32mfrom\u001b[0m \u001b[0mpandas\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msparse\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mapi\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0;34m*\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 46\u001b[0m \u001b[0;32mfrom\u001b[0m \u001b[0mpandas\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mstats\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mapi\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0;34m*\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", 58 | "\u001b[0;32m/usr/local/lib/python2.7/site-packages/pandas/core/api.py\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[1;32m 7\u001b[0m \u001b[0;32mfrom\u001b[0m \u001b[0mpandas\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mcore\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mcommon\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0misnull\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mnotnull\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 8\u001b[0m \u001b[0;32mfrom\u001b[0m \u001b[0mpandas\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mcore\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mcategorical\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mCategorical\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 9\u001b[0;31m \u001b[0;32mfrom\u001b[0m \u001b[0mpandas\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mcore\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mgroupby\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mGrouper\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 10\u001b[0m \u001b[0;32mfrom\u001b[0m \u001b[0mpandas\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mcore\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mformat\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mset_eng_float_format\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 11\u001b[0m \u001b[0;32mfrom\u001b[0m \u001b[0mpandas\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mcore\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mindex\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mIndex\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mCategoricalIndex\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mInt64Index\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mFloat64Index\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mMultiIndex\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", 59 | "\u001b[0;32m/usr/local/lib/python2.7/site-packages/pandas/core/groupby.py\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[1;32m 15\u001b[0m \u001b[0;32mfrom\u001b[0m \u001b[0mpandas\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mcore\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mbase\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mPandasObject\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 16\u001b[0m \u001b[0;32mfrom\u001b[0m \u001b[0mpandas\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mcore\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mcategorical\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mCategorical\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 17\u001b[0;31m \u001b[0;32mfrom\u001b[0m \u001b[0mpandas\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mcore\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mframe\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mDataFrame\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 18\u001b[0m \u001b[0;32mfrom\u001b[0m \u001b[0mpandas\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mcore\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mgeneric\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mNDFrame\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 19\u001b[0m \u001b[0;32mfrom\u001b[0m \u001b[0mpandas\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mcore\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mindex\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mIndex\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mMultiIndex\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mCategoricalIndex\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0m_ensure_index\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", 60 | "\u001b[0;32m/usr/local/lib/python2.7/site-packages/pandas/core/frame.py\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[1;32m 39\u001b[0m \u001b[0mcreate_block_manager_from_arrays\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 40\u001b[0m create_block_manager_from_blocks)\n\u001b[0;32m---> 41\u001b[0;31m \u001b[0;32mfrom\u001b[0m \u001b[0mpandas\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mcore\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mseries\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mSeries\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 42\u001b[0m \u001b[0;32mfrom\u001b[0m \u001b[0mpandas\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mcore\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mcategorical\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mCategorical\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 43\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mpandas\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mcomputation\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mexpressions\u001b[0m \u001b[0;32mas\u001b[0m \u001b[0mexpressions\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", 61 | "\u001b[0;32m/usr/local/lib/python2.7/site-packages/pandas/core/series.py\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[1;32m 2907\u001b[0m \u001b[0;31m# Add plotting methods to Series\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 2908\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 2909\u001b[0;31m \u001b[0;32mimport\u001b[0m \u001b[0mpandas\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mtools\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mplotting\u001b[0m \u001b[0;32mas\u001b[0m \u001b[0m_gfx\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 2910\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 2911\u001b[0m \u001b[0mSeries\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mplot\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mbase\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mAccessorProperty\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0m_gfx\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mSeriesPlotMethods\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0m_gfx\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mSeriesPlotMethods\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", 62 | "\u001b[0;32m/usr/local/lib/python2.7/site-packages/pandas/tools/plotting.py\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[1;32m 26\u001b[0m \u001b[0;32mfrom\u001b[0m \u001b[0mpandas\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mutil\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mdecorators\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mAppender\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 27\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0;31m# mpl optional\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 28\u001b[0;31m \u001b[0;32mimport\u001b[0m \u001b[0mpandas\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mtseries\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mconverter\u001b[0m \u001b[0;32mas\u001b[0m \u001b[0mconv\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 29\u001b[0m \u001b[0mconv\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mregister\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;31m# needs to override so set_xlim works with str/number\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 30\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mImportError\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", 63 | "\u001b[0;32m/usr/local/lib/python2.7/site-packages/pandas/tseries/converter.py\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[1;32m 5\u001b[0m \u001b[0;32mfrom\u001b[0m \u001b[0mdateutil\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mrelativedelta\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mrelativedelta\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 6\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 7\u001b[0;31m \u001b[0;32mimport\u001b[0m \u001b[0mmatplotlib\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0munits\u001b[0m \u001b[0;32mas\u001b[0m \u001b[0munits\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 8\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mmatplotlib\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mdates\u001b[0m \u001b[0;32mas\u001b[0m \u001b[0mdates\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 9\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", 64 | "\u001b[0;32m/usr/local/lib/python2.7/site-packages/matplotlib/__init__.py\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[1;32m 1129\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1130\u001b[0m \u001b[0;31m# this is the instance used by the matplotlib classes\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1131\u001b[0;31m \u001b[0mrcParams\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mrc_params\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1132\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1133\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mrcParams\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m'examples.directory'\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", 65 | "\u001b[0;32m/usr/local/lib/python2.7/site-packages/matplotlib/__init__.py\u001b[0m in \u001b[0;36mrc_params\u001b[0;34m(fail_on_error)\u001b[0m\n\u001b[1;32m 973\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mret\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 974\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 975\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mrc_params_from_file\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mfname\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mfail_on_error\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 976\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 977\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", 66 | "\u001b[0;32m/usr/local/lib/python2.7/site-packages/matplotlib/__init__.py\u001b[0m in \u001b[0;36mrc_params_from_file\u001b[0;34m(fname, fail_on_error, use_default_template)\u001b[0m\n\u001b[1;32m 1098\u001b[0m \u001b[0mparameters\u001b[0m \u001b[0mspecified\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mthe\u001b[0m \u001b[0mfile\u001b[0m\u001b[0;34m.\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0mUseful\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mupdating\u001b[0m \u001b[0mdicts\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1099\u001b[0m \"\"\"\n\u001b[0;32m-> 1100\u001b[0;31m \u001b[0mconfig_from_file\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0m_rc_params_in_file\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mfname\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mfail_on_error\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1101\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1102\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0muse_default_template\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", 67 | "\u001b[0;32m/usr/local/lib/python2.7/site-packages/matplotlib/__init__.py\u001b[0m in \u001b[0;36m_rc_params_in_file\u001b[0;34m(fname, fail_on_error)\u001b[0m\n\u001b[1;32m 1016\u001b[0m \u001b[0mcnt\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;36m0\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1017\u001b[0m \u001b[0mrc_temp\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m{\u001b[0m\u001b[0;34m}\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1018\u001b[0;31m \u001b[0;32mwith\u001b[0m \u001b[0m_open_file_or_url\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mfname\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;32mas\u001b[0m \u001b[0mfd\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1019\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1020\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mline\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mfd\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", 68 | "\u001b[0;32m/usr/local/Cellar/python/2.7.10/Frameworks/Python.framework/Versions/2.7/lib/python2.7/contextlib.pyc\u001b[0m in \u001b[0;36m__enter__\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 15\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0m__enter__\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 16\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 17\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mgen\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mnext\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 18\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mStopIteration\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 19\u001b[0m \u001b[0;32mraise\u001b[0m \u001b[0mRuntimeError\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"generator didn't yield\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", 69 | "\u001b[0;32m/usr/local/lib/python2.7/site-packages/matplotlib/__init__.py\u001b[0m in \u001b[0;36m_open_file_or_url\u001b[0;34m(fname)\u001b[0m\n\u001b[1;32m 998\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 999\u001b[0m \u001b[0mfname\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mos\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mpath\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mexpanduser\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mfname\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1000\u001b[0;31m \u001b[0mencoding\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mlocale\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mgetdefaultlocale\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1001\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mencoding\u001b[0m \u001b[0;32mis\u001b[0m \u001b[0mNone\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1002\u001b[0m \u001b[0mencoding\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m\"utf-8\"\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", 70 | "\u001b[0;32m/usr/local/Cellar/python/2.7.10/Frameworks/Python.framework/Versions/2.7/lib/python2.7/locale.pyc\u001b[0m in \u001b[0;36mgetdefaultlocale\u001b[0;34m(envvars)\u001b[0m\n\u001b[1;32m 541\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 542\u001b[0m \u001b[0mlocalename\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m'C'\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 543\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0m_parse_localename\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mlocalename\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 544\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 545\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", 71 | "\u001b[0;32m/usr/local/Cellar/python/2.7.10/Frameworks/Python.framework/Versions/2.7/lib/python2.7/locale.pyc\u001b[0m in \u001b[0;36m_parse_localename\u001b[0;34m(localename)\u001b[0m\n\u001b[1;32m 473\u001b[0m \u001b[0;32melif\u001b[0m \u001b[0mcode\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0;34m'C'\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 474\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mNone\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mNone\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 475\u001b[0;31m \u001b[0;32mraise\u001b[0m \u001b[0mValueError\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m'unknown locale: %s'\u001b[0m \u001b[0;34m%\u001b[0m \u001b[0mlocalename\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 476\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 477\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0m_build_localename\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mlocaletuple\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", 72 | "\u001b[0;31mValueError\u001b[0m: unknown locale: UTF-8" 73 | ] 74 | } 75 | ], 76 | "source": [ 77 | "\n", 78 | "\n", 79 | "input_path = \"establecimientos-de-salud-raw.csv\"\n", 80 | "output_path = \"establecimientos-de-salud-clean.csv\"\n", 81 | "\n", 82 | "rules = [\n", 83 | " {\n", 84 | " \"nombre_propio\": [\n", 85 | " {\"field\": \"nombre\"}\n", 86 | " ]\n", 87 | " },\n", 88 | " {\"string\": [\n", 89 | " {\"field\": \"financiamiento\"},\n", 90 | " {\"field\": \"provincia\"},\n", 91 | " {\"field\": \"localidad\"},\n", 92 | " ]}\n", 93 | "]\n", 94 | "\n", 95 | "dc = DataCleaner(input_path)\n", 96 | "dc.clean_file(rules, output_path)\n" 97 | ] 98 | }, 99 | { 100 | "cell_type": "code", 101 | "execution_count": null, 102 | "metadata": { 103 | "collapsed": true 104 | }, 105 | "outputs": [], 106 | "source": [] 107 | } 108 | ], 109 | "metadata": { 110 | "kernelspec": { 111 | "display_name": "Python 2", 112 | "language": "python", 113 | "name": "python2" 114 | }, 115 | "language_info": { 116 | "codemirror_mode": { 117 | "name": "ipython", 118 | "version": 2 119 | }, 120 | "file_extension": ".py", 121 | "mimetype": "text/x-python", 122 | "name": "python", 123 | "nbconvert_exporter": "python", 124 | "pygments_lexer": "ipython2", 125 | "version": "2.7.10" 126 | } 127 | }, 128 | "nbformat": 4, 129 | "nbformat_minor": 0 130 | } 131 | -------------------------------------------------------------------------------- /portal-legacy/establecimientos_de_salud/cleaner-establecimientos-salud.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # -*- coding: utf-8 -*- 3 | 4 | """Script de limpieza para los datos de audiencias 5 | Utiliza el paquete `data-cleaner` para limpiar datos de 6 | establecimientos-de-salud aplicando reglas de limpieza. 7 | 8 | Versión data-cleaner=0.1.11 9 | """ 10 | 11 | from __future__ import unicode_literals 12 | from __future__ import print_function 13 | from __future__ import with_statement 14 | import sys 15 | 16 | from data_cleaner import DataCleaner 17 | 18 | DEFAULT_INPUT_PATH = "establecimientos-de-salud-raw.csv" 19 | DEFAULT_OUTPUT_PATH = "establecimientos-de-salud-clean.csv" 20 | 21 | RULES = [ 22 | { 23 | "string": [ 24 | {"field": "financiamiento", "keep_original": False}, 25 | {"field": "provincia", "keep_original": False}, 26 | {"field": "localidad", "keep_original": False}, 27 | ] 28 | } 29 | ] 30 | 31 | 32 | def clean_file(input_path, output_path): 33 | """Limpia los datos del input creando un nuevo archivo limpio.""" 34 | print("Comenzando limpieza...") 35 | dc = DataCleaner(input_path) 36 | dc.clean_file(RULES, output_path) 37 | print("Limpieza finalizada exitosamente!") 38 | 39 | if __name__ == '__main__': 40 | if len(sys.argv) == 1: 41 | clean_file(DEFAULT_INPUT_PATH, DEFAULT_OUTPUT_PATH) 42 | elif len(sys.argv) == 2: 43 | clean_file(sys.argv[1], DEFAULT_OUTPUT_PATH) 44 | elif len(sys.argv) == 3: 45 | clean_file(sys.argv[1], sys.argv[2]) 46 | else: 47 | print("{} no es una cantidad de argumentos aceptada.".format( 48 | len(sys.argv) - 1 49 | )) 50 | -------------------------------------------------------------------------------- /portal-legacy/oficinas-anses/cleaner-oficinas-anses.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # -*- coding: utf-8 -*- 3 | 4 | """Script de limpieza para los datos de audiencias 5 | Utiliza el paquete `data-cleaner` para limpiar datos de audiencias aplicando 6 | reglas de limpieza. 7 | """ 8 | 9 | from __future__ import unicode_literals 10 | from __future__ import print_function 11 | from __future__ import with_statement 12 | import sys 13 | 14 | from data_cleaner import DataCleaner 15 | 16 | DEFAULT_INPUT_PATH = "anses-direccion-oficinas-raw.csv" 17 | DEFAULT_OUTPUT_PATH = "anses-direccion-oficinas-clean.csv" 18 | 19 | RULES = [ 20 | { 21 | "nombre_propio": [ 22 | {"field": "descripcion", "keep_original": False}, 23 | {"field": "domicilio", "keep_original": False}, 24 | {"field": "provincia", "keep_original": False} 25 | ] 26 | }, 27 | { 28 | "string": [ 29 | {"field": "provincia", "keep_original": False}, 30 | ] 31 | }, 32 | { 33 | "string_regex_substitute": [ 34 | {"field": "descripcion", 35 | "regex_str_match": "Udai", 36 | "regex_str_sub": "UDAI", 37 | "keep_original": False, 38 | } 39 | ] 40 | } 41 | ] 42 | 43 | 44 | def custom_cleaning_before_rules(dc): 45 | """Script de limpieza custom para aplicar al objeto antes de las reglas. 46 | Args: 47 | dc (DataCleaner): Objeto data cleaner con datos cargados. 48 | """ 49 | pass 50 | 51 | 52 | def custom_cleaning_after_rules(dc): 53 | """Script de limpieza custom para aplicar al objeto después de las reglas. 54 | Args: 55 | dc (DataCleaner): Objeto data cleaner con datos cargados. 56 | """ 57 | pass 58 | 59 | 60 | def clean_file(input_path, output_path): 61 | """Limpia los datos del input creando un nuevo archivo limpio.""" 62 | print("Comenzando limpieza...") 63 | dc = DataCleaner(input_path) 64 | custom_cleaning_before_rules(dc) 65 | dc.clean(RULES) 66 | custom_cleaning_after_rules(dc) 67 | dc.save(output_path) 68 | print("Limpieza finalizada exitosamente!") 69 | 70 | if __name__ == '__main__': 71 | if len(sys.argv) == 1: 72 | clean_file(DEFAULT_INPUT_PATH, DEFAULT_OUTPUT_PATH) 73 | elif len(sys.argv) == 2: 74 | clean_file(sys.argv[1], DEFAULT_OUTPUT_PATH) 75 | elif len(sys.argv) == 3: 76 | clean_file(sys.argv[1], sys.argv[2]) 77 | else: 78 | print("{} no es una cantidad de argumentos aceptada.".format( 79 | len(sys.argv) - 1 80 | )) 81 | -------------------------------------------------------------------------------- /portal-legacy/oficinas-anses/directivas-oficinas-anses.md: -------------------------------------------------------------------------------- 1 | #GENERAL 2 | 3 | No hacen falta grandes cambios. 4 | 5 | ##CAMPOS: 6 | Quedan como estan 7 | 8 | ##VALORES: 9 | * **descripcion:** Pasa a Primera Letra Mayúscula exepto la sigla UDAI 10 | * **domicilio:** Pasa a Primera Letra Mayúscula 11 | * **provincia:** Pasa a Primera Letra Mayúscula y se le aplica el algoritmo string de key collision 12 | 13 | -------------------------------------------------------------------------------- /presupuesto/cleaner_presupuesto.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # -*- coding: utf-8 -*- 3 | 4 | """Template de script de limpieza usando DataCleaner 5 | Utiliza el paquete `data-cleaner` para limpiar datos de un CSV aplicando: 6 | * Reglas de limpieza disponibles en el paquete 7 | * Reglas de limpieza creadas sobre el objeto extendido MyDataCleaner 8 | * Cualquier script de limpieza custom que deba aplicarse antes o después de 9 | las reglas. 10 | Cuando usar custom scripts: 11 | El usuario tiene que aplicar tareas muy específicas del dataset a limpiar, 12 | que dificilmente podrían ser reutilizadas para extender `data-cleaner`. 13 | Como por ejemplo un filtro / recorte global antes o después de la limpieza. 14 | Cuando extender la clase MyDataCleaner con una nueva regla: 15 | El usuario necesita utilizar una regla de limpieza que no está disponible, 16 | pero puede ser pensada para un caso general que abarque distintos tipos de 17 | uso. Implementarla siguiendo la interfaz del DataCleaner permite tener el 18 | nuevo método listo para integrar al paquete más adelante. 19 | Uso desde la línea de comandos: 20 | python cleaning_script.py 21 | python cleaning_script.py input_path 22 | python cleaning_script.py input_path output_path 23 | Uso desde un script de python: 24 | from cleaning_script import clean_file 25 | clean_file(input_path, output_path) 26 | """ 27 | 28 | from __future__ import unicode_literals 29 | from __future__ import print_function 30 | from __future__ import with_statement 31 | import sys 32 | 33 | from data_cleaner import DataCleaner 34 | 35 | DEFAULT_INPUT_PATH = "./Gastos_Listado_General.csv" 36 | DEFAULT_OUTPUT_PATH = "./presupuesto-clean.csv" 37 | 38 | RULES = [ 39 | { 40 | "renombrar_columnas": 41 | [ 42 | {'field': 'Carácter', 43 | 'new_field': 'caracter'}, 44 | {'field': 'Cod. Jurisdicción', 45 | 'new_field': 'jurisdiccion_id'}, 46 | {'field': 'Desc. Jurisdicción', 47 | 'new_field': 'jurisdiccion_desc'}, 48 | {'field': 'Cod. Subjurisdicción', 49 | 'new_field': 'subjurisdiccion_id'}, 50 | {'field': 'Desc. Subjurisdicción', 51 | 'new_field': 'subjurisdiccion_desc'}, 52 | {'field': 'Cod. Entidad', 'new_field': 'entidad_id'}, 53 | {'field': 'Desc. Entidad', 54 | 'new_field': 'entidad_desc'}, 55 | {'field': 'Cod. Servicio', 56 | 'new_field': 'servicio_id'}, 57 | {'field': 'Desc. Servicio', 58 | 'new_field': 'servicio_desc'}, 59 | {'field': 'Cod. Programa', 60 | 'new_field': 'programa_id'}, 61 | {'field': 'Desc. Programa', 62 | 'new_field': 'programa_desc'}, 63 | {'field': 'Cod. Finalidad', 64 | 'new_field': 'finalidad_id'}, 65 | {'field': 'Desc. Finalidad', 66 | 'new_field': 'finalidad_desc'}, 67 | {'field': 'Cod. Función', 'new_field': 'funcion_id'}, 68 | {'field': 'Desc. Función', 69 | 'new_field': 'funcion_desc'}, 70 | {'field': 'Cod. Inciso', 'new_field': 'inciso_id'}, 71 | {'field': 'Desc. Inciso', 'new_field': 'inciso_desc'}, 72 | {'field': 'Cod. Principal', 73 | 'new_field': 'principal_id'}, 74 | {'field': 'Desc. Principal', 75 | 'new_field': 'principal_desc'}, 76 | {'field': 'Cod. Clasificador Económico 2 Dígitos', 77 | 'new_field': 'clasificador_economico_2_digitos_id'}, 78 | {'field': 'Desc. Clasificador Económico 2 Dígitos', 79 | 'new_field': 'clasificador_economico_2_digitos_desc'}, 80 | {'field': 'Cod. Clasificador Económico 3 Dígitos', 81 | 'new_field': 'clasificador_economico_3_digitos_id'}, 82 | {'field': 'Desc. Clasificador Económico 3 Dígitos', 83 | 'new_field': 'clasificador_economico_3_digitos_desc'}, 84 | {'field': 'Cod. Fuente Financiamiento', 85 | 'new_field': 'fuente_financiamiento_id'}, 86 | {'field': 'Desc. Fuente Financiamiento', 87 | 'new_field': 'fuente_financiamiento_desc'}, 88 | {'field': 'Presupuestado', 89 | 'new_field': 'monto_presupuestado'}, 90 | {'field': 'Comprometido', 91 | 'new_field': 'monto_comprometido'}, 92 | {'field': 'Devengado', 'new_field': 'monto_devengado'}, 93 | {'field': 'Pagado', 'new_field': 'monto_pagado'}, 94 | {'field': 'Leyenda_Fecha_Act', 95 | 'new_field': 'leyenda_fecha_actualizacion'}, 96 | {'field': 'Ejercicio - Actual', 97 | 'new_field': 'ejercicio_actual'}, 98 | ] 99 | } 100 | ] 101 | 102 | 103 | def custom_cleaning_before_rules(dc): 104 | """Script de limpieza custom para aplicar al objeto antes de las reglas. 105 | Args: 106 | dc (DataCleaner): Objeto data cleaner con datos cargados. 107 | """ 108 | pass 109 | 110 | 111 | def custom_cleaning_after_rules(dc): 112 | """Script de limpieza custom para aplicar al objeto después de las reglas. 113 | Args: 114 | dc (DataCleaner): Objeto data cleaner con datos cargados. 115 | """ 116 | pass 117 | 118 | 119 | class MyDataCleaner(DataCleaner): 120 | 121 | """Extensión del DataCleaner que permite agregar nuevas reglas. 122 | El método clean_file() utiliza esta clase extendible del DataCleaner para 123 | permitir el agregado de nuevos métodos de limpieza que sean necesarios, en 124 | un formato que haga sencilla su posterior portación al paquete original.""" 125 | 126 | def nueva_regla(self, field, sufix=None, keep_original=False, 127 | inplace=False): 128 | """One liner sobre lo que hace la regla. 129 | Descripción extendida (si correponde) sobre lo que hace la regla. 130 | Args: 131 | field (str): Campo a limpiar. 132 | sufix (str): Sufijo del nuevo campo creado después de limpiar. 133 | keep_original (bool): True si se mantiene el campo original y el 134 | nuevo se agrega con un sufijo. False para reemplazar el campo 135 | original. 136 | inplace (bool): True si los cambios deben impactar en el estado del 137 | objeto. False si sólo se quiere retornar una serie limpia sin 138 | impactar en el estado del objeto. 139 | Returns: 140 | pandas.Series: Serie de strings limpios 141 | """ 142 | # si no se provee un sufijo, se utiliza el default 143 | sufix = sufix or self.DEFAULT_SUFIX 144 | 145 | # debe normalizarse el nombre del campo primero 146 | field = self._normalize_field(field) 147 | 148 | # toma la serie a limpiar del DataFrame 149 | series = self.df[field] 150 | 151 | # ________________________________________________________ 152 | # en este espacio se aplica el nuevo algoritmo de limpieza 153 | # y se guarda la serie limpia en una nueva variable 154 | 155 | clean_series = series 156 | # ________________________________________________________ 157 | 158 | # guarda los cambios en el objeto, si inplace=True 159 | if inplace: 160 | self._update_series(field=field, sufix=sufix, 161 | keep_original=keep_original, 162 | new_series=clean_series) 163 | 164 | return clean_series 165 | 166 | 167 | def clean_file(input_path, output_path): 168 | """Limpia los datos del input creando un nuevo archivo limpio.""" 169 | 170 | print("Comenzando limpieza...") 171 | # crea una instancia de la versión extendible del DataCleaner 172 | dc = MyDataCleaner(input_path) 173 | 174 | # aplica reglas de limpieza disponibles y customizadas 175 | custom_cleaning_before_rules(dc) 176 | dc.clean(RULES) 177 | custom_cleaning_after_rules(dc) 178 | 179 | # guarda la data limpia en el csv output 180 | dc.save(output_path) 181 | print("Limpieza finalizada exitosamente!") 182 | 183 | if __name__ == '__main__': 184 | # toma argumentos optativos de la línea de comandos 185 | if len(sys.argv) == 1: 186 | # el usuario no pasó argumentos, se usan los default en input y output 187 | clean_file(DEFAULT_INPUT_PATH, DEFAULT_OUTPUT_PATH) 188 | elif len(sys.argv) == 2: 189 | # el usuario pasó input, se usa el default para output 190 | clean_file(sys.argv[1], DEFAULT_OUTPUT_PATH) 191 | elif len(sys.argv) == 3: 192 | # el usuario pasó input y output, no se usan defaults 193 | clean_file(sys.argv[1], sys.argv[2]) 194 | else: 195 | # el usuario pasó más de 2 argumentos! 196 | print("{} no es una cantidad de argumentos aceptada.".format( 197 | len(sys.argv) - 1 198 | )) 199 | -------------------------------------------------------------------------------- /presupuesto/presupuesto-documentacion.md: -------------------------------------------------------------------------------- 1 | # Ejecución presupuestaria de la Administración Pública Nacional 2 | 3 | Datos correspondientes a la ejecución presupuestaria de la Administración Pública Nacional incluyendo apertura institucional, Fuente de Financiamiento, Carácter y Objeto del Gasto, Finalidad y Función y Clasificador Económico. A la información de sanción y vigente se incorporan las etapas del gasto (Comprometido, Devengado, Pagado). 4 | 5 | # Características 6 | 7 | * **Recursos:** Presupuesto 2016 8 | 9 | * **Tags o Etiquetas:** Recursos, Finanzas Públicas, Gastos, Economía 10 | 11 | * **Organización:** Ministerio De Hacienda Y Finanzas Públicas 12 | 13 | * **Autor:** Ministerio de Hacienda. Secretaría de Hacienda. Subsecretaría de Presupuesto 14 | 15 | * **E-mail del Autor:** sitiodelciudadano@mecon.gov.ar 16 | 17 | * **Responsable:** Ministerio de Hacienda. Secretaría de Hacienda. Subsecretaría de Presupuesto 18 | 19 | * **E-mail del responsable:** sitiodelciudadano@mecon.gov.ar 20 | 21 | * **Grupo:** Administración Pública; Economía y Finanzas. 22 | 23 | * **Frecuencia de Actualización:** Semanal. 24 | 25 | 26 | # Recursos 27 | 28 | 29 | ## Presupuesto Nacional Año 2016 30 | 31 | * **Nombre:** presupuesto-2016 32 | 33 | * **Descripción:** Distribución de los créditos presupuestarios y ejecución semanal correspondientes al año AAAA. 34 | 35 | * **Formato:** CSV 36 | 37 | ### Campos del recurso 38 | 39 | * **caracter (string):** Carácter 40 | 41 | 42 | * **jurisdiccion_id (string):** Jurisdicción 43 | 44 | 45 | * **jurisdiccion_desc (string):** Descripción Jurisdicción 46 | 47 | * **subjurisdiccion_id (string):** Subjurisdicción 48 | 49 | * **subjurisdiccion_desc (string):** Descripción Subjurisdicción 50 | 51 | * **entidad_id (string):** Entidad 52 | 53 | * **entidad_desc (string):** Descripción Entidad 54 | 55 | * **servicio_id (string):** Servicio 56 | 57 | * **servicio_desc (string):** Descripción Servicio 58 | 59 | * **programa_id (string):** Programa 60 | 61 | * **programa_desc (string):** Descripción Programa 62 | 63 | * **finalidad_id (string):** Finalidad 64 | 65 | * **finalidad_desc (string):** Descripción Finalidad 66 | 67 | * **funcion_id (string):** Funcion 68 | 69 | * **funcion_desc (string):** Descripción Función 70 | 71 | * **inciso_id (string):** Inciso 72 | 73 | * **inciso_desc (string):** Descripción Inciso 74 | 75 | * **principal_id (string):** Principal 76 | 77 | * **principal_desc (string):** Descripción Principal 78 | 79 | * **clasificador_economico_2_digitos_id (string):** Clasificador Económico (2 dígitos) 80 | 81 | * **clasificador_economico_2_digitos_desc (string):** Descripción Clasificador Económico (2 dígitos) 82 | 83 | * **clasificador_economico_3_digitos_id (string):** Clasificador Económico (3 dígitos) 84 | 85 | * **clasificador_economico_3_digitos_desc (string):** Descripción Clasificador Económico (3 dígitos) 86 | 87 | * **fuente_financiamiento_id (string):** Fuente Financiamiento 88 | 89 | * **fuente_financiamiento_desc (string):** Descripción Fuente Financiamiento 90 | 91 | * **monto_presupuestado (float):** Monto presupuestado en millones de pesos 92 | 93 | * **monto_comprometido (float):** Monto comprometido en millones de pesos 94 | 95 | * **monto_devengado (float):** Monto devengado en millones de pesos 96 | 97 | * **monto_pagado (float):** Monto pagado en millones de pesos 98 | 99 | * **leyenda_fecha_actualizacion (string):** Última fecha de actualización de la información. 100 | 101 | * **ejercicio_actual(string):** Ejercicio al que corresponde la información. 102 | 103 | ## Descripción de los campos : 104 | 105 | Extraida de[ http://sitiodelciudadano.mecon.gov.ar/sici/GlosarioPDF.pdf](http://sitiodelciudadano.mecon.gov.ar/sici/GlosarioPDF.pdf) 106 | 107 | * **Carácter:** Es un nivel de clasificación institucional que distingue la: 108 | 109 | * Administración Central (compuesta por las jurisdicciones y Subjurisdicciones) 110 | 111 | * Organismos Descentralizados 112 | 113 | * Instituciones de la Seguridad Social 114 | 115 | * **Jurisdicción:** Son organizaciones públicas sin personalidad jurídica ni patrimonio propio, que integran la Administración Central y representan los Poderes (Legislativo, Judicial y Ejecutivo) establecidos por la Constitución Nacional. 116 | 117 | * **Subjurisdicción:** Tienen características semejantes a las jurisdicciones. En determinadas jurisdicciones, dada su relevancia, es preciso la desagregación en jurisdicciones (i.e.: Secretarías de la Presidencia de la Nación, Fuerzas Armadas en el Ministerio de Defensa, etc.). 118 | 119 | * **Servicio/Entidad:** Tal como está definido en la Ley 24.156, las entidades son "todas las organizaciones públicas con personalidad jurídica y patrimonio propio". 120 | 121 | * **Programa:** Categoría de programación, que es unidad formal de asignación de recursos, que tiene el propósito de satisfacer demandas de la comunidad en el contexto de una política presupuestaria específica. 122 | 123 | * **Finalidad Función:** Presenta el gasto público según la naturaleza de los servicios que las instituciones públicas brindan a la comunidad. Por otra parte, permiten determinar los objetivos generales y los medios a través de los cuales se estiman alcanzar estos. Son un instrumento fundamental para la toma de decisiones. Las diferentes categorías de la clasificación por finalidad son: 124 | 125 | * **Servicios Sociales:** Comprende las acciones inherentes a la prestación de servicios de salud, promoción y asistencia social, seguridad social, educación, cultura, ciencia y técnica, trabajo, vivienda, agua potable, alcantarillado y otros servicios urbanos. 126 | 127 | * **Deuda pública:** Intereses y Gastos comprende los gastos destinados a atender los gastos e intereses de la deuda interna y externa. 128 | 129 | * **Administración Gubernamental: **comprende las acciones propias al Estado destinadas al cumplimiento de funciones tales como la legislativa, justicia, relaciones interiores y exteriores, administración fiscal, control de la gestión pública e información estadística básica. 130 | 131 | * **Servicios de Defensa y Seguridad:** comprende las acciones inherentes a la defensa nacional, al mantenimiento del orden público interno y en las fronteras, costas y espacio aéreo y acciones relacionadas con el sistema penal. 132 | 133 | * **Servicios Económicos** comprende las acciones de apoyo a la producción de bienes y servicios significativos para el desarrollo económico. Incluye energía, combustibles, minería, comunicaciones, transporte, ecología y medio ambiente, agricultura, industria, comercio y turismo. Esta clasificación comprende acciones de fomento, regulación y control del sector privado y público. 134 | 135 | * **Inciso:** Es el primer nivel de cuentas del clasificador por objeto del gasto. La clasificación por objeto del gasto se conceptúa como una ordenación sistemática y homogénea de los bienes y servicios, las transferencias y las variaciones de activos y pasivos que el sector público aplica en el desarrollo de sus actividades. 136 | 137 | * **Clasificador Económico (2 Dígitos):** Es la clasificación por carácter económico y puede ser uno de los siguientes: 138 | 139 | * **Aplicaciones Financieras:** Las aplicaciones financieras se constituyen por el incremento de los activos financieros y la disminución de los pasivos públicos. 140 | 141 | * **Gastos corrientes:** La desagregación de los gastos corrientes permite conocer cuánto cuestan los diferentes elementos / insumos / factores que intervienen en la producción de los bienes y servicios que produce el Estado y, en consecuencia, determinar el valor agregado por el sector público. Incluye también aquellos pagos de jubilaciones y pensiones (prestaciones de la seguridad social), los intereses de la deuda pública (rentas de la propiedad) y los subsidios (transferencias). Ejemplo: gastos de consumo (bienes y servicios) 142 | 143 | * **Gastos de Capital:** Los gastos de capital muestran la inversión que realiza el sector público y su contribución al incremento de la capacidad instalada de producción. Ejemplos: inversión real directa (construcciones), transferencias de capital (al sector privado). 144 | 145 | * **Fuentes Financieras:** Las fuentes financieras son cuentas de financiamiento presupuestario que tienen el objeto de cubrir las necesidades derivadas de la insuficiencia de recursos corrientes y de capital. Constituyen fuentes financieras la disminución de la inversión financiera y el endeudamiento público. 146 | 147 | * **Ingresos de Capital:** Estos ingresos se originan en la venta de activos, en la venta participaciones accionarias en empresas y en la recuperación de préstamos. 148 | 149 | * **Clasificador Económico 3 Dígitos:** Es la subclasificación por carácter económico. 150 | 151 | * **Fuente Financiamiento:** Presenta los gastos públicos según el tipo/origen de recursos empleados para su financiamiento, es decir identifica el gasto según la naturaleza de los ingresos orientados hacia la atención de las necesidades públicas. La importancia de esta clasificación radica en la vinculación entre recursos y gastos. Así un gasto puede ser financiado por una cierta fuente de financiamiento (por ejemplo: Tesoro Nacional) o bien, por una combinación de fuentes. Es conveniente que recursos permanentes financien gastos permanentes, recursos transitorios financien gastos transitorios, recursos por única vez financien gastos por única vez. Ejemplos: fuentes de financiamiento internas (Tesoro Nacional, crédito interno), fuentes de financiamiento externas (crédito externo). 152 | 153 | Por otro lado los campos con el prefijo monto corresponden a las distintas etapas de la ejecución del gasto las cuales se detallan a continuación: 154 | 155 | * **Presupuestado:** En esta esta se presenta la información de acuerdo a lo presupuestado por la ley anual de Presupuesto Nacional que sanciona el Congreso, donde planifica los ingresos que recibirá el Gobierno y cómo se aplicarán para satisfacer las necesidades de la población. Dado que es una estimación de ingresos y de gastos realizada en forma anticipada, pueden producirse situaciones que provoquen modificaciones durante el año. 156 | 157 | * **Comprometido:** Esta es una etapa del gasto que implica la aprobación, por parte del funcionario competente, de la aplicación de recursos por un concepto e importe determinados, como asimismo de la tramitación administrativa cumplida. Además, tiene lugar una afectación preventiva del crédito presupuestario que corresponda, en razón de un concepto, que reduce su importe del saldo disponible. El hecho más relevante es que surge una relación contractual con terceros (orden de compra, contrato, convenio, etc.), que motivará, en el futuro, un egreso de fondos para cancelar una deuda o bien, para su inversión en un objeto determinado. 158 | 159 | * **Devengado:** En esta etapa surge una obligación de pago por la recepción de conformidad de bienes o servicios oportunamente contratados o bien, por haberse cumplido los requisitos administrativos para los casos de gastos sin contraprestación. También implica la afectación definitiva de los créditos presupuestarios referibles por un concepto y monto a la respectiva liquidación. 160 | 161 | * **Pagado:** A través de la etapa del pago, se refleja la cancelación de las obligaciones asumidas en materia de gasto 162 | 163 | 164 | ## Preprocesamiento 165 | 166 | * Se cambió el nombre de las columnas para que solo están compuestos por palabras en minúsculas unidas por un guión bajo, utilizando únicamente caracteres ASCII a-z y 0-9 167 | -------------------------------------------------------------------------------- /relevamiento/readme.md: -------------------------------------------------------------------------------- 1 | # Relevamiento de Barrios Populares 2 | 3 | ## Introducción 4 | 5 | En el año 2016 se creó el Programa Presupuestario "Coordinación de Proyectos Sociocomunitarios", en la Secretaría de Coordinación Interministerial de la Jefatura de Gabinete de Ministros - Presidencia de la Nación. 6 | 7 | A través de este Programa, se avanzó para poder llevar a cabo un relevamiento de todos los Barrios Populares del Territorio Nacional, incluyendo a los asentamientos y villas de todo el país. El trabajo se coordinó desde un equipo central con organizaciones sociales nucleadas en CTEP, CCC y Barrios de Pie y con las Organizaciones TECHO y Cáritas Argentina, todas ellas con anclaje territorial a lo largo y ancho del país. 8 | 9 | ## Relevamiento de Barrios Populares 10 | 11 | ### Objetivo 12 | 13 | Identificar todos los Barrios Populares del territorio nacional, obteniendo el perímetro de cada uno y cargarlo en un Sistema de Información Geográfica (SIG). 14 | 15 | ### Metodología 16 | 17 | #### Definición de barrio popular para conformar el Registro Nacional de Barrios Populares (RENABAP) 18 | 19 | Se define a los barrios populares como aquellos barrios comúnmente denominados villas, asentamientos y urbanizaciones informales que se constituyeron mediante distintas estrategias de ocupación del suelo, que presentan diferentes grados de precariedad y hacinamiento, un déficit en el acceso formal a los servicios básicos y una situación dominial irregular en la tenencia del suelo. 20 | 21 | Definición operativa: para aplicar esta definición conceptual en el terreno, se trabajó con una definición operativa que permite delimitar claramente qué casos deben ser incluidos en el universo y cuáles a pesar de su informalidad deben ser excluidos. 22 | 23 | Según esta última, el Barrio Popular se define más estrechamente como un conjunto de un mínimo de ocho familias agrupadas o contiguas, en donde más de la mitad de la población no cuenta con título de propiedad del suelo, ni acceso regular a al menos dos de los servicios básicos: red de agua corriente, red de energía eléctrica con medidor domiciliario y/o red cloacal. 24 | 25 | La irregularidad dominial, el déficit en el acceso a los servicios básicos y la precariedad habitacional no son atributos exclusivos de los Barrios Populares (villas y asentamientos). En ese marco destacamos que el Relevamiento no contempla conventillos, edificios y casas ocupadas, hoteles pensión/familiares, conjuntos habitacionales construidos por el Estado ni tampoco aquellos barrios que carecen de título de propiedad y no cuentan con uno de los servicios básicos establecidos en la definición operativa. 26 | 27 | #### Recopilación de información 28 | 29 | Se confeccionó una ficha que permitió relevar las características socio-urbanas de los Barrios Populares así como su localización geográfica y se desarrolló una aplicación para celulares que facilitó el levantamiento de información en territorio. Se contactó a todos los Municipios solicitando información oficial georreferenciada sobre Barrios Populares, Villas y Asentamientos emplazados en su jurisdicción. 30 | 31 | Los equipos de territorio recorrieron físicamente toda la superficie a relevar con el objetivo de identificar los potenciales barrios populares, mediante la verificación en terreno del déficit en el acceso formal a los servicios básicos y la situación dominial irregular de la tierra, obteniendo la información suministrada por los referentes barriales y cruzándose con la información obtenida a través de organizaciones sociales y gobiernos locales. 32 | 33 | #### Calidad y Auditoría 34 | 35 | Una vez finalizado el Relevamiento se realizó un proceso de chequeo y corrección de la información obtenida haciendo foco principalmente en los límites de cada barrio y en su cantidad de familias. Por último se volvió a relevar un porcentaje determinado de barrios que fueron sorteados a partir de un muestreo aleatorio para evaluar la calidad de los datos obtenidos. 36 | 37 | ### Resultados 38 | 39 | Fueron identificados, caracterizados y georreferenciados 4.100 barrios populares. 40 | 41 | ## Campos del recurso 42 | 43 | * **barrio_nombre (string):** Nombre del Barrio. 44 | 45 | * **localidad_comuna_nombre (string):** Nombre de la localidad o comuna en la que se encuentra el barrio. 46 | 47 | * **partido_departamento_nombre (string):** Nombre del partido o departamento en que se encuentra el barrio. 48 | 49 | * **provincia_nombre (string):** Nombre de la Provincia en la que se encuentra el barrio. 50 | 51 | * **geojson (geojson):** Polígonos correspondientes al barrio. 52 | 53 | -------------------------------------------------------------------------------- /series-tiempo/base-series-tiempo-administracion-publica-nacional-documentacion.md: -------------------------------------------------------------------------------- 1 | # Base de Series de Tiempo de la Administración Pública Nacional 2 | 3 | Base de series de tiempo de distintas fuentes primarias y secundarias de la Administración Pública Nacional, compilada por el Ministerio de Modernización. Estas series son normalizadas por organismos de la APN de acuerdo a los estandares propuestos por Modernización. 4 | 5 | ## Recursos del dataset 6 | 7 | 8 | 9 | 10 | 11 | - [Valores y metadatos (CSV)](#valores-y-metadatos-csv) 12 | - [Metadatos enriquecidos de las series (CSV)](#metadatos-enriquecidos-de-las-series-csv) 13 | - [Valores (CSV)](#valores-csv) 14 | - [Fuentes (CSV)](#fuentes-csv) 15 | - [Valores y metadatos (XLSX)](#valores-y-metadatos-xlsx) 16 | - [Metadatos enriquecidos de las series (XLSX)](#metadatos-enriquecidos-de-las-series-xlsx) 17 | - [Valores (XLSX)](#valores-xlsx) 18 | - [Fuentes (XLSX)](#fuentes-xlsx) 19 | - [Valores y metadatos (DTA)](#valores-y-metadatos-dta) 20 | - [Metadatos enriquecidos de las series (DTA)](#metadatos-enriquecidos-de-las-series-dta) 21 | - [Valores (DTA)](#valores-dta) 22 | - [Fuentes (DTA)](#fuentes-dta) 23 | - [Valores y metadatos (DB)](#valores-y-metadatos-db) 24 | - [Metadatos enriquecidos de las series (DB)](#metadatos-enriquecidos-de-las-series-db) 25 | - [Valores (DB)](#valores-db) 26 | - [Fuentes (DB)](#fuentes-db) 27 | 28 | 29 | 30 | ### Valores y metadatos (CSV) 31 | 32 | Valores y metadatos básicos de las series (CSV). Contiene todos los pares (fecha, valor) que componen cada una de las series de la base, enriquecidos con sus metadatos básicos. 33 | 34 | #### Campos del recurso 35 | 36 | - **catalogo_id** (string): Identificador del catálogo al que pertenece la serie. Un catálogo es la unidad de documentación de activos de datos de un nodo. 37 | - **dataset_id** (string): Identificador del dataset al que pertenece la serie. Es único dentro del catálogo al que pertenece el dataset. 38 | - **distribucion_id** (string): Identificador de la distribución a la que pertenece la serie. Es único dentro del catálogo al que pertenece la distribución. 39 | - **serie_id** (string): Identificador de la serie. Es único dentro de toda base de series de tiempo. 40 | - **indice_tiempo** (date): Fecha de la observación en formato ISO 8601 sin horas, minutos ni segundos (YYYY-MM-DD). La fecha siempre indica el primer día del período al que hace referencia la observación (Ej.: "2017-04-01" hace referencia al segundo trimestre de 2017). 41 | - **indice_tiempo_frecuencia** (string): Frecuencia de las observaciones de la serie en formato ISO 8601 para intervalos repetidos (Ej.: "R/P3M" significa "cada 3 meses" y marca que una serie es trimestral). 42 | - **valor** (number): Valor numérico de la observación de una serie para una fecha determinada. 43 | - **serie_titulo** (string): Nombre normalizado corto de la serie compatible con su uso seguro en distintas aplicaciones. Tiene 60 caracteres como máximo y está compuesto por letras minúsculas de la "a" a la "z" sin caracteres especiales (sin tildes y sin la "ñ"), números y guiones bajos "_". 44 | - **serie_unidades** (string): Unidades en las que están expresados los valores de la serie (Ej.: "Millones de pesos de 1993"). 45 | - **serie_descripcion** (string): Descripción completa de la información que contiene la serie. 46 | - **distribucion_titulo** (string): Título de la distribución a la que pertenece la serie. 47 | - **distribucion_descripcion** (string): Descripción completa de la información que contiene la distribución a la que pertenece la serie. 48 | - **dataset_responsable** (string): Responsable de la publicación del dataset. 49 | - **dataset_fuente** (string): Fuente primaria de los datos contenidos en el dataset al que pertenece la serie. 50 | - **dataset_titulo** (string): Título del dataset al que pertenece la serie. 51 | - **dataset_descripcion** (string): Descripción completa de la información que contiene el dataset al que pertenece la serie. 52 | 53 | ### Metadatos enriquecidos de las series (CSV) 54 | 55 | Listado de las series de tiempo disponibles en la base (CSV). Contiene los metadatos básicos de la series enriquecidos con indicadores descriptivos actualizados al día de la fecha. 56 | 57 | #### Campos del recurso 58 | 59 | - **catalogo_id** (string): Identificador del catálogo al que pertenece la serie. Un catálogo es la unidad de documentación de activos de datos de un nodo. 60 | - **dataset_id** (string): Identificador del dataset al que pertenece la serie. Es único dentro del catálogo al que pertenece el dataset. 61 | - **distribucion_id** (string): Identificador de la distribución a la que pertenece la serie. Es único dentro del catálogo al que pertenece la distribución. 62 | - **serie_id** (string): Identificador de la serie. Es único dentro de toda base de series de tiempo. 63 | - **indice_tiempo_frecuencia** (string): Frecuencia de las observaciones de la serie en formato ISO 8601 para intervalos repetidos (Ej.: "R/P3M" significa "cada 3 meses" y marca que una serie es trimestral). 64 | - **serie_titulo** (string): Nombre normalizado corto de la serie compatible con su uso seguro en distintas aplicaciones. Tiene 60 caracteres como máximo y está compuesto por letras minúsculas de la "a" a la "z" sin caracteres especiales (sin tildes y sin la "ñ"), números y guiones bajos "_". 65 | - **serie_unidades** (string): Unidades en las que están expresados los valores de la serie (Ej.: "Millones de pesos de 1993"). 66 | - **serie_descripcion** (string): Descripción completa de la información que contiene la serie. 67 | - **distribucion_titulo** (string): Título de la distribución a la que pertenece la serie. 68 | - **distribucion_descripcion** (string): Descripción completa de la información que contiene la distribución a la que pertenece la serie. 69 | - **dataset_responsable** (string): Responsable de la publicación del dataset. 70 | - **dataset_fuente** (string): Fuente primaria de los datos contenidos en el dataset al que pertenece la serie. 71 | - **dataset_titulo** (string): Título del dataset al que pertenece la serie. 72 | - **dataset_descripcion** (string): Descripción completa de la información que contiene el dataset al que pertenece la serie. 73 | - **serie_indice_inicio** (date): Fecha de la primera observación de la serie en formato ISO 8601 sin horas, minutos ni segundos (YYYY-MM-DD). La fecha siempre indica el primer día del período al que hace referencia la observación (Ej.: "2017-04-01" hace referencia al segundo trimestre de 2017). 74 | - **serie_indice_final** (date): Fecha de la última observación de la serie en formato ISO 8601 sin horas, minutos ni segundos (YYYY-MM-DD). La fecha siempre indica el primer día del período al que hace referencia la observación (Ej.: "2017-04-01" hace referencia al segundo trimestre de 2017). 75 | - **serie_valores_cant** (number): Cantidad de observaciones contenidas en la serie. 76 | - **serie_dias_no_cubiertos** (number): Días transcurridos desde el final del último período de tiempo para el que la serie tiene observaciones hasta la última fecha de actualización de la base de series de tiempo. Es una medida del período de tiempo más reciente no cubierto por las observaciones de la serie. 77 | - **serie_actualizada** (boolean): Indicación estimativa de que el último valor de la serie está relativamente actualizado con respecto a la última fecha de actualización de la base. 78 | 79 | Se considera que una serie está desactualizada cuando su último valor pertenece a una fecha 14 días anterior (serie diaria), 3 meses anterior (serie mensual) o 2 períodos anterior (para el resto de las frecuencias posibles). 80 | - **serie_valor_ultimo** (number): Última observación disponible de la serie. 81 | - **serie_valor_anterior** (number): Anteúltima observación disponible de la serie. 82 | - **serie_var_pct_anterior** (number): Variación porcentual de la última observación disponible de la serie respecto de la anteúltima observación (la inmediatamente anterior). 83 | 84 | ### Valores (CSV) 85 | 86 | Valores de las series (CSV). Contiene todos los pares (fecha, valor) que componen cada una de las series de la base. 87 | 88 | #### Campos del recurso 89 | 90 | - **catalogo_id** (string): Identificador del catálogo al que pertenece la serie. Un catálogo es la unidad de documentación de activos de datos de un nodo. 91 | - **dataset_id** (string): Identificador del dataset al que pertenece la serie. Es único dentro del catálogo al que pertenece el dataset. 92 | - **distribucion_id** (string): Identificador de la distribución a la que pertenece la serie. Es único dentro del catálogo al que pertenece la distribución. 93 | - **serie_id** (string): Identificador de la serie. Es único dentro de toda base de series de tiempo. 94 | - **indice_tiempo** (string): Fecha de la observación en formato ISO 8601 sin horas, minutos ni segundos (YYYY-MM-DD). La fecha siempre indica el primer día del período al que hace referencia la observación (Ej.: "2017-04-01" hace referencia al segundo trimestre de 2017). 95 | - **valor** (number): Valor numérico de la observación de una serie para una fecha determinada. 96 | 97 | ### Fuentes (CSV) 98 | 99 | Fuentes primarias de las series (CSV). Contiene la cantidad de series y valores presentes en la base de cada una de las fuentes primarias compiladas. 100 | 101 | #### Campos del recurso 102 | 103 | - **dataset_fuente** (string): Fuente primaria de los datos contenidos en el dataset al que pertenece una serie. 104 | - **series_cant** (number): Cantidad de series de la fuente primaria presentes en la base. 105 | - **valores_cant** (number): Cantidad de observaciones de la fuente primaria presentes en la base. 106 | - **fecha_primer_valor** (date): Fecha de la primera observación de la fuente primaria en formato ISO 8601 sin horas, minutos ni segundos (YYYY-MM-DD). La fecha siempre indica el primer día del período al que hace referencia la observación (Ej.: "2017-04-01" hace referencia al segundo trimestre de 2017). 107 | - **fecha_ultimo_valor** (date): Fecha de la última observación de la fuente primaria en formato ISO 8601 sin horas, minutos ni segundos (YYYY-MM-DD). La fecha siempre indica el primer día del período al que hace referencia la observación (Ej.: "2017-04-01" hace referencia al segundo trimestre de 2017). 108 | 109 | ### Valores y metadatos (XLSX) 110 | 111 | Valores y metadatos básicos de las series (XLSX). Contiene todos los pares (fecha, valor) que componen cada una de las series de la base, enriquecidos con sus metadatos básicos. 112 | 113 | #### Campos del recurso 114 | 115 | - **catalogo_id** (string): Identificador del catálogo al que pertenece la serie. Un catálogo es la unidad de documentación de activos de datos de un nodo. 116 | - **dataset_id** (string): Identificador del dataset al que pertenece la serie. Es único dentro del catálogo al que pertenece el dataset. 117 | - **distribucion_id** (string): Identificador de la distribución a la que pertenece la serie. Es único dentro del catálogo al que pertenece la distribución. 118 | - **serie_id** (string): Identificador de la serie. Es único dentro de toda base de series de tiempo. 119 | - **indice_tiempo** (date): Fecha de la observación en formato ISO 8601 sin horas, minutos ni segundos (YYYY-MM-DD). La fecha siempre indica el primer día del período al que hace referencia la observación (Ej.: "2017-04-01" hace referencia al segundo trimestre de 2017). 120 | - **indice_tiempo_frecuencia** (string): Frecuencia de las observaciones de la serie en formato ISO 8601 para intervalos repetidos (Ej.: "R/P3M" significa "cada 3 meses" y marca que una serie es trimestral). 121 | - **valor** (number): Valor numérico de la observación de una serie para una fecha determinada. 122 | - **serie_titulo** (string): Nombre normalizado corto de la serie compatible con su uso seguro en distintas aplicaciones. Tiene 60 caracteres como máximo y está compuesto por letras minúsculas de la "a" a la "z" sin caracteres especiales (sin tildes y sin la "ñ"), números y guiones bajos "_". 123 | - **serie_unidades** (string): Unidades en las que están expresados los valores de la serie (Ej.: "Millones de pesos de 1993"). 124 | - **serie_descripcion** (string): Descripción completa de la información que contiene la serie. 125 | - **distribucion_titulo** (string): Título de la distribución a la que pertenece la serie. 126 | - **distribucion_descripcion** (string): Descripción completa de la información que contiene la distribución a la que pertenece la serie. 127 | - **dataset_responsable** (string): Responsable de la publicación del dataset. 128 | - **dataset_fuente** (string): Fuente primaria de los datos contenidos en el dataset al que pertenece la serie. 129 | - **dataset_titulo** (string): Título del dataset al que pertenece la serie. 130 | - **dataset_descripcion** (string): Descripción completa de la información que contiene el dataset al que pertenece la serie. 131 | 132 | ### Metadatos enriquecidos de las series (XLSX) 133 | 134 | Listado de las series de tiempo disponibles en la base (XLSX). Contiene los metadatos básicos de la series enriquecidos con indicadores descriptivos actualizados al día de la fecha. 135 | 136 | #### Campos del recurso 137 | 138 | - **catalogo_id** (string): Identificador del catálogo al que pertenece la serie. Un catálogo es la unidad de documentación de activos de datos de un nodo. 139 | - **dataset_id** (string): Identificador del dataset al que pertenece la serie. Es único dentro del catálogo al que pertenece el dataset. 140 | - **distribucion_id** (string): Identificador de la distribución a la que pertenece la serie. Es único dentro del catálogo al que pertenece la distribución. 141 | - **serie_id** (string): Identificador de la serie. Es único dentro de toda base de series de tiempo. 142 | - **indice_tiempo_frecuencia** (string): Frecuencia de las observaciones de la serie en formato ISO 8601 para intervalos repetidos (Ej.: "R/P3M" significa "cada 3 meses" y marca que una serie es trimestral). 143 | - **serie_titulo** (string): Nombre normalizado corto de la serie compatible con su uso seguro en distintas aplicaciones. Tiene 60 caracteres como máximo y está compuesto por letras minúsculas de la "a" a la "z" sin caracteres especiales (sin tildes y sin la "ñ"), números y guiones bajos "_". 144 | - **serie_unidades** (string): Unidades en las que están expresados los valores de la serie (Ej.: "Millones de pesos de 1993"). 145 | - **serie_descripcion** (string): Descripción completa de la información que contiene la serie. 146 | - **distribucion_titulo** (string): Título de la distribución a la que pertenece la serie. 147 | - **distribucion_descripcion** (string): Descripción completa de la información que contiene la distribución a la que pertenece la serie. 148 | - **dataset_responsable** (string): Responsable de la publicación del dataset. 149 | - **dataset_fuente** (string): Fuente primaria de los datos contenidos en el dataset al que pertenece la serie. 150 | - **dataset_titulo** (string): Título del dataset al que pertenece la serie. 151 | - **dataset_descripcion** (string): Descripción completa de la información que contiene el dataset al que pertenece la serie. 152 | - **serie_indice_inicio** (date): Fecha de la primera observación de la serie en formato ISO 8601 sin horas, minutos ni segundos (YYYY-MM-DD). La fecha siempre indica el primer día del período al que hace referencia la observación (Ej.: "2017-04-01" hace referencia al segundo trimestre de 2017). 153 | - **serie_indice_final** (date): Fecha de la última observación de la serie en formato ISO 8601 sin horas, minutos ni segundos (YYYY-MM-DD). La fecha siempre indica el primer día del período al que hace referencia la observación (Ej.: "2017-04-01" hace referencia al segundo trimestre de 2017). 154 | - **serie_valores_cant** (number): Cantidad de observaciones contenidas en la serie. 155 | - **serie_dias_no_cubiertos** (number): Días transcurridos desde el final del último período de tiempo para el que la serie tiene observaciones hasta la última fecha de actualización de la base de series de tiempo. Es una medida del período de tiempo más reciente no cubierto por las observaciones de la serie. 156 | - **serie_actualizada** (boolean): Indicación estimativa de que el último valor de la serie está relativamente actualizado con respecto a la última fecha de actualización de la base. 157 | 158 | Se considera que una serie está desactualizada cuando su último valor pertenece a una fecha 14 días anterior (serie diaria), 3 meses anterior (serie mensual) o 2 períodos anterior (para el resto de las frecuencias posibles). 159 | - **serie_valor_ultimo** (number): Última observación disponible de la serie. 160 | - **serie_valor_anterior** (number): Anteúltima observación disponible de la serie. 161 | - **serie_var_pct_anterior** (number): Variación porcentual de la última observación disponible de la serie respecto de la anteúltima observación (la inmediatamente anterior). 162 | 163 | ### Valores (XLSX) 164 | 165 | Valores de las series (XLSX). Contiene todos los pares (fecha, valor) que componen cada una de las series de la base. 166 | 167 | #### Campos del recurso 168 | 169 | - **catalogo_id** (string): Identificador del catálogo al que pertenece la serie. Un catálogo es la unidad de documentación de activos de datos de un nodo. 170 | - **dataset_id** (string): Identificador del dataset al que pertenece la serie. Es único dentro del catálogo al que pertenece el dataset. 171 | - **distribucion_id** (string): Identificador de la distribución a la que pertenece la serie. Es único dentro del catálogo al que pertenece la distribución. 172 | - **serie_id** (string): Identificador de la serie. Es único dentro de toda base de series de tiempo. 173 | - **indice_tiempo** (string): Fecha de la observación en formato ISO 8601 sin horas, minutos ni segundos (YYYY-MM-DD). La fecha siempre indica el primer día del período al que hace referencia la observación (Ej.: "2017-04-01" hace referencia al segundo trimestre de 2017). 174 | - **valor** (number): Valor numérico de la observación de una serie para una fecha determinada. 175 | 176 | ### Fuentes (XLSX) 177 | 178 | Fuentes primarias de las series (XLSX). Contiene la cantidad de series y valores presentes en la base de cada una de las fuentes primarias compiladas. 179 | 180 | #### Campos del recurso 181 | 182 | - **dataset_fuente** (string): Fuente primaria de los datos contenidos en el dataset al que pertenece una serie. 183 | - **series_cant** (number): Cantidad de series de la fuente primaria presentes en la base. 184 | - **valores_cant** (number): Cantidad de observaciones de la fuente primaria presentes en la base. 185 | - **fecha_primer_valor** (date): Fecha de la primera observación de la fuente primaria en formato ISO 8601 sin horas, minutos ni segundos (YYYY-MM-DD). La fecha siempre indica el primer día del período al que hace referencia la observación (Ej.: "2017-04-01" hace referencia al segundo trimestre de 2017). 186 | - **fecha_ultimo_valor** (date): Fecha de la última observación de la fuente primaria en formato ISO 8601 sin horas, minutos ni segundos (YYYY-MM-DD). La fecha siempre indica el primer día del período al que hace referencia la observación (Ej.: "2017-04-01" hace referencia al segundo trimestre de 2017). 187 | 188 | ### Valores y metadatos (DTA) 189 | 190 | Valores y metadatos básicos de las series (DTA). Contiene todos los pares (fecha, valor) que componen cada una de las series de la base, enriquecidos con sus metadatos básicos. 191 | 192 | #### Campos del recurso 193 | 194 | - **catalogo_id** (string): Identificador del catálogo al que pertenece la serie. Un catálogo es la unidad de documentación de activos de datos de un nodo. 195 | - **dataset_id** (string): Identificador del dataset al que pertenece la serie. Es único dentro del catálogo al que pertenece el dataset. 196 | - **distribucion_id** (string): Identificador de la distribución a la que pertenece la serie. Es único dentro del catálogo al que pertenece la distribución. 197 | - **serie_id** (string): Identificador de la serie. Es único dentro de toda base de series de tiempo. 198 | - **indice_tiempo** (date): Fecha de la observación en formato ISO 8601 sin horas, minutos ni segundos (YYYY-MM-DD). La fecha siempre indica el primer día del período al que hace referencia la observación (Ej.: "2017-04-01" hace referencia al segundo trimestre de 2017). 199 | - **indice_tiempo_frecuencia** (string): Frecuencia de las observaciones de la serie en formato ISO 8601 para intervalos repetidos (Ej.: "R/P3M" significa "cada 3 meses" y marca que una serie es trimestral). 200 | - **valor** (number): Valor numérico de la observación de una serie para una fecha determinada. 201 | - **serie_titulo** (string): Nombre normalizado corto de la serie compatible con su uso seguro en distintas aplicaciones. Tiene 60 caracteres como máximo y está compuesto por letras minúsculas de la "a" a la "z" sin caracteres especiales (sin tildes y sin la "ñ"), números y guiones bajos "_". 202 | - **serie_unidades** (string): Unidades en las que están expresados los valores de la serie (Ej.: "Millones de pesos de 1993"). 203 | - **serie_descripcion** (string): Descripción completa de la información que contiene la serie. 204 | - **distribucion_titulo** (string): Título de la distribución a la que pertenece la serie. 205 | - **dataset_responsable** (string): Responsable de la publicación del dataset. 206 | - **dataset_fuente** (string): Fuente primaria de los datos contenidos en el dataset al que pertenece la serie. 207 | - **dataset_titulo** (string): Título del dataset al que pertenece la serie. 208 | 209 | ### Metadatos enriquecidos de las series (DTA) 210 | 211 | Listado de las series de tiempo disponibles en la base (DTA). Contiene los metadatos básicos de la series enriquecidos con indicadores descriptivos actualizados al día de la fecha. 212 | 213 | #### Campos del recurso 214 | 215 | - **catalogo_id** (string): Identificador del catálogo al que pertenece la serie. Un catálogo es la unidad de documentación de activos de datos de un nodo. 216 | - **dataset_id** (string): Identificador del dataset al que pertenece la serie. Es único dentro del catálogo al que pertenece el dataset. 217 | - **distribucion_id** (string): Identificador de la distribución a la que pertenece la serie. Es único dentro del catálogo al que pertenece la distribución. 218 | - **serie_id** (string): Identificador de la serie. Es único dentro de toda base de series de tiempo. 219 | - **indice_tiempo_frecuencia** (string): Frecuencia de las observaciones de la serie en formato ISO 8601 para intervalos repetidos (Ej.: "R/P3M" significa "cada 3 meses" y marca que una serie es trimestral). 220 | - **serie_titulo** (string): Nombre normalizado corto de la serie compatible con su uso seguro en distintas aplicaciones. Tiene 60 caracteres como máximo y está compuesto por letras minúsculas de la "a" a la "z" sin caracteres especiales (sin tildes y sin la "ñ"), números y guiones bajos "_". 221 | - **serie_unidades** (string): Unidades en las que están expresados los valores de la serie (Ej.: "Millones de pesos de 1993"). 222 | - **serie_descripcion** (string): Descripción completa de la información que contiene la serie. 223 | - **distribucion_titulo** (string): Título de la distribución a la que pertenece la serie. 224 | - **distribucion_descripcion** (string): Descripción completa de la información que contiene la distribución a la que pertenece la serie. 225 | - **dataset_responsable** (string): Responsable de la publicación del dataset. 226 | - **dataset_fuente** (string): Fuente primaria de los datos contenidos en el dataset al que pertenece la serie. 227 | - **dataset_titulo** (string): Título del dataset al que pertenece la serie. 228 | - **dataset_descripcion** (string): Descripción completa de la información que contiene el dataset al que pertenece la serie. 229 | - **serie_indice_inicio** (date): Fecha de la primera observación de la serie en formato ISO 8601 sin horas, minutos ni segundos (YYYY-MM-DD). La fecha siempre indica el primer día del período al que hace referencia la observación (Ej.: "2017-04-01" hace referencia al segundo trimestre de 2017). 230 | - **serie_indice_final** (date): Fecha de la última observación de la serie en formato ISO 8601 sin horas, minutos ni segundos (YYYY-MM-DD). La fecha siempre indica el primer día del período al que hace referencia la observación (Ej.: "2017-04-01" hace referencia al segundo trimestre de 2017). 231 | - **serie_valores_cant** (number): Cantidad de observaciones contenidas en la serie. 232 | - **serie_dias_no_cubiertos** (number): Días transcurridos desde el final del último período de tiempo para el que la serie tiene observaciones hasta la última fecha de actualización de la base de series de tiempo. Es una medida del período de tiempo más reciente no cubierto por las observaciones de la serie. 233 | - **serie_actualizada** (boolean): Indicación estimativa de que el último valor de la serie está relativamente actualizado con respecto a la última fecha de actualización de la base. 234 | 235 | Se considera que una serie está desactualizada cuando su último valor pertenece a una fecha 14 días anterior (serie diaria), 3 meses anterior (serie mensual) o 2 períodos anterior (para el resto de las frecuencias posibles). 236 | - **serie_valor_ultimo** (number): Última observación disponible de la serie. 237 | - **serie_valor_anterior** (number): Anteúltima observación disponible de la serie. 238 | - **serie_var_pct_anterior** (number): Variación porcentual de la última observación disponible de la serie respecto de la anteúltima observación (la inmediatamente anterior). 239 | 240 | ### Valores (DTA) 241 | 242 | Valores de las series (DTA). Contiene todos los pares (fecha, valor) que componen cada una de las series de la base. 243 | 244 | #### Campos del recurso 245 | 246 | - **catalogo_id** (string): Identificador del catálogo al que pertenece la serie. Un catálogo es la unidad de documentación de activos de datos de un nodo. 247 | - **dataset_id** (string): Identificador del dataset al que pertenece la serie. Es único dentro del catálogo al que pertenece el dataset. 248 | - **distribucion_id** (string): Identificador de la distribución a la que pertenece la serie. Es único dentro del catálogo al que pertenece la distribución. 249 | - **serie_id** (string): Identificador de la serie. Es único dentro de toda base de series de tiempo. 250 | - **indice_tiempo** (string): Fecha de la observación en formato ISO 8601 sin horas, minutos ni segundos (YYYY-MM-DD). La fecha siempre indica el primer día del período al que hace referencia la observación (Ej.: "2017-04-01" hace referencia al segundo trimestre de 2017). 251 | - **valor** (number): Valor numérico de la observación de una serie para una fecha determinada. 252 | 253 | ### Fuentes (DTA) 254 | 255 | Fuentes primarias de las series (DTA). Contiene la cantidad de series y valores presentes en la base de cada una de las fuentes primarias compiladas. 256 | 257 | #### Campos del recurso 258 | 259 | - **dataset_fuente** (string): Fuente primaria de los datos contenidos en el dataset al que pertenece una serie. 260 | - **series_cant** (number): Cantidad de series de la fuente primaria presentes en la base. 261 | - **valores_cant** (number): Cantidad de observaciones de la fuente primaria presentes en la base. 262 | - **fecha_primer_valor** (date): Fecha de la primera observación de la fuente primaria en formato ISO 8601 sin horas, minutos ni segundos (YYYY-MM-DD). La fecha siempre indica el primer día del período al que hace referencia la observación (Ej.: "2017-04-01" hace referencia al segundo trimestre de 2017). 263 | - **fecha_ultimo_valor** (date): Fecha de la última observación de la fuente primaria en formato ISO 8601 sin horas, minutos ni segundos (YYYY-MM-DD). La fecha siempre indica el primer día del período al que hace referencia la observación (Ej.: "2017-04-01" hace referencia al segundo trimestre de 2017). 264 | 265 | ### Valores y metadatos (DB) 266 | 267 | Valores y metadatos básicos de las series (DB). Contiene todos los pares (fecha, valor) que componen cada una de las series de la base, enriquecidos con sus metadatos básicos. 268 | 269 | #### Campos del recurso 270 | 271 | - **catalogo_id** (string): Identificador del catálogo al que pertenece la serie. Un catálogo es la unidad de documentación de activos de datos de un nodo. 272 | - **dataset_id** (string): Identificador del dataset al que pertenece la serie. Es único dentro del catálogo al que pertenece el dataset. 273 | - **distribucion_id** (string): Identificador de la distribución a la que pertenece la serie. Es único dentro del catálogo al que pertenece la distribución. 274 | - **serie_id** (string): Identificador de la serie. Es único dentro de toda base de series de tiempo. 275 | - **indice_tiempo** (date): Fecha de la observación en formato ISO 8601 sin horas, minutos ni segundos (YYYY-MM-DD). La fecha siempre indica el primer día del período al que hace referencia la observación (Ej.: "2017-04-01" hace referencia al segundo trimestre de 2017). 276 | - **indice_tiempo_frecuencia** (string): Frecuencia de las observaciones de la serie en formato ISO 8601 para intervalos repetidos (Ej.: "R/P3M" significa "cada 3 meses" y marca que una serie es trimestral). 277 | - **valor** (number): Valor numérico de la observación de una serie para una fecha determinada. 278 | - **serie_titulo** (string): Nombre normalizado corto de la serie compatible con su uso seguro en distintas aplicaciones. Tiene 60 caracteres como máximo y está compuesto por letras minúsculas de la "a" a la "z" sin caracteres especiales (sin tildes y sin la "ñ"), números y guiones bajos "_". 279 | - **serie_unidades** (string): Unidades en las que están expresados los valores de la serie (Ej.: "Millones de pesos de 1993"). 280 | - **serie_descripcion** (string): Descripción completa de la información que contiene la serie. 281 | - **distribucion_titulo** (string): Título de la distribución a la que pertenece la serie. 282 | - **distribucion_descripcion** (string): Descripción completa de la información que contiene la distribución a la que pertenece la serie. 283 | - **dataset_responsable** (string): Responsable de la publicación del dataset. 284 | - **dataset_fuente** (string): Fuente primaria de los datos contenidos en el dataset al que pertenece la serie. 285 | - **dataset_titulo** (string): Título del dataset al que pertenece la serie. 286 | - **dataset_descripcion** (string): Descripción completa de la información que contiene el dataset al que pertenece la serie. 287 | 288 | ### Metadatos enriquecidos de las series (DB) 289 | 290 | Listado de las series de tiempo disponibles en la base (DB). Contiene los metadatos básicos de la series enriquecidos con indicadores descriptivos actualizados al día de la fecha. 291 | 292 | #### Campos del recurso 293 | 294 | - **catalogo_id** (string): Identificador del catálogo al que pertenece la serie. Un catálogo es la unidad de documentación de activos de datos de un nodo. 295 | - **dataset_id** (string): Identificador del dataset al que pertenece la serie. Es único dentro del catálogo al que pertenece el dataset. 296 | - **distribucion_id** (string): Identificador de la distribución a la que pertenece la serie. Es único dentro del catálogo al que pertenece la distribución. 297 | - **serie_id** (string): Identificador de la serie. Es único dentro de toda base de series de tiempo. 298 | - **indice_tiempo_frecuencia** (string): Frecuencia de las observaciones de la serie en formato ISO 8601 para intervalos repetidos (Ej.: "R/P3M" significa "cada 3 meses" y marca que una serie es trimestral). 299 | - **serie_titulo** (string): Nombre normalizado corto de la serie compatible con su uso seguro en distintas aplicaciones. Tiene 60 caracteres como máximo y está compuesto por letras minúsculas de la "a" a la "z" sin caracteres especiales (sin tildes y sin la "ñ"), números y guiones bajos "_". 300 | - **serie_unidades** (string): Unidades en las que están expresados los valores de la serie (Ej.: "Millones de pesos de 1993"). 301 | - **serie_descripcion** (string): Descripción completa de la información que contiene la serie. 302 | - **distribucion_titulo** (string): Título de la distribución a la que pertenece la serie. 303 | - **distribucion_descripcion** (string): Descripción completa de la información que contiene la distribución a la que pertenece la serie. 304 | - **dataset_responsable** (string): Responsable de la publicación del dataset. 305 | - **dataset_fuente** (string): Fuente primaria de los datos contenidos en el dataset al que pertenece la serie. 306 | - **dataset_titulo** (string): Título del dataset al que pertenece la serie. 307 | - **dataset_descripcion** (string): Descripción completa de la información que contiene el dataset al que pertenece la serie. 308 | - **serie_indice_inicio** (date): Fecha de la primera observación de la serie en formato ISO 8601 sin horas, minutos ni segundos (YYYY-MM-DD). La fecha siempre indica el primer día del período al que hace referencia la observación (Ej.: "2017-04-01" hace referencia al segundo trimestre de 2017). 309 | - **serie_indice_final** (date): Fecha de la última observación de la serie en formato ISO 8601 sin horas, minutos ni segundos (YYYY-MM-DD). La fecha siempre indica el primer día del período al que hace referencia la observación (Ej.: "2017-04-01" hace referencia al segundo trimestre de 2017). 310 | - **serie_valores_cant** (number): Cantidad de observaciones contenidas en la serie. 311 | - **serie_dias_no_cubiertos** (number): Días transcurridos desde el final del último período de tiempo para el que la serie tiene observaciones hasta la última fecha de actualización de la base de series de tiempo. Es una medida del período de tiempo más reciente no cubierto por las observaciones de la serie. 312 | - **serie_actualizada** (boolean): Indicación estimativa de que el último valor de la serie está relativamente actualizado con respecto a la última fecha de actualización de la base. 313 | 314 | Se considera que una serie está desactualizada cuando su último valor pertenece a una fecha 14 días anterior (serie diaria), 3 meses anterior (serie mensual) o 2 períodos anterior (para el resto de las frecuencias posibles). 315 | - **serie_valor_ultimo** (number): Última observación disponible de la serie. 316 | - **serie_valor_anterior** (number): Anteúltima observación disponible de la serie. 317 | - **serie_var_pct_anterior** (number): Variación porcentual de la última observación disponible de la serie respecto de la anteúltima observación (la inmediatamente anterior). 318 | 319 | ### Valores (DB) 320 | 321 | Valores de las series (DB). Contiene todos los pares (fecha, valor) que componen cada una de las series de la base. 322 | 323 | #### Campos del recurso 324 | 325 | - **catalogo_id** (string): Identificador del catálogo al que pertenece la serie. Un catálogo es la unidad de documentación de activos de datos de un nodo. 326 | - **dataset_id** (string): Identificador del dataset al que pertenece la serie. Es único dentro del catálogo al que pertenece el dataset. 327 | - **distribucion_id** (string): Identificador de la distribución a la que pertenece la serie. Es único dentro del catálogo al que pertenece la distribución. 328 | - **serie_id** (string): Identificador de la serie. Es único dentro de toda base de series de tiempo. 329 | - **indice_tiempo** (string): Fecha de la observación en formato ISO 8601 sin horas, minutos ni segundos (YYYY-MM-DD). La fecha siempre indica el primer día del período al que hace referencia la observación (Ej.: "2017-04-01" hace referencia al segundo trimestre de 2017). 330 | - **valor** (number): Valor numérico de la observación de una serie para una fecha determinada. 331 | 332 | ### Fuentes (DB) 333 | 334 | Fuentes primarias de las series (DB). Contiene la cantidad de series y valores presentes en la base de cada una de las fuentes primarias compiladas. 335 | 336 | #### Campos del recurso 337 | 338 | - **dataset_fuente** (string): Fuente primaria de los datos contenidos en el dataset al que pertenece una serie. 339 | - **series_cant** (number): Cantidad de series de la fuente primaria presentes en la base. 340 | - **valores_cant** (number): Cantidad de observaciones de la fuente primaria presentes en la base. 341 | - **fecha_primer_valor** (date): Fecha de la primera observación de la fuente primaria en formato ISO 8601 sin horas, minutos ni segundos (YYYY-MM-DD). La fecha siempre indica el primer día del período al que hace referencia la observación (Ej.: "2017-04-01" hace referencia al segundo trimestre de 2017). 342 | - **fecha_ultimo_valor** (date): Fecha de la última observación de la fuente primaria en formato ISO 8601 sin horas, minutos ni segundos (YYYY-MM-DD). La fecha siempre indica el primer día del período al que hace referencia la observación (Ej.: "2017-04-01" hace referencia al segundo trimestre de 2017). 343 | 344 | -------------------------------------------------------------------------------- /unidades-territoriales/ign-unidades-territoriales.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "markdown", 5 | "metadata": {}, 6 | "source": [ 7 | "# Correcciones de Unidades Territoriales de IGN" 8 | ] 9 | }, 10 | { 11 | "cell_type": "code", 12 | "execution_count": 1, 13 | "metadata": {}, 14 | "outputs": [], 15 | "source": [ 16 | "import pandas as pd\n", 17 | "from simpledbf import Dbf5\n", 18 | "import geopandas as gpd\n", 19 | "import requests\n", 20 | "import zipfile\n", 21 | "import io\n", 22 | "import os\n", 23 | "%matplotlib inline" 24 | ] 25 | }, 26 | { 27 | "cell_type": "code", 28 | "execution_count": 2, 29 | "metadata": {}, 30 | "outputs": [], 31 | "source": [ 32 | "PROVINCIAS_URL = \"http://www.ign.gob.ar/descargas/geodatos/SHAPES/ign_provincia.zip\"\n", 33 | "DEPARTAMENTOS_URL = \"http://www.ign.gob.ar/descargas/geodatos/SHAPES/ign_departamento.zip\"\n", 34 | "MUNICIPIOS_URL = \"http://www.ign.gob.ar/descargas/geodatos/SHAPES/ign_municipio.zip\"\n", 35 | "\n", 36 | "PROVINCIAS_OUTPUT = \"provincias\"\n", 37 | "DEPARTAMENTOS_OUTPUT = \"departamentos\"\n", 38 | "MUNICIPIOS_OUTPUT = \"municipios\"" 39 | ] 40 | }, 41 | { 42 | "cell_type": "code", 43 | "execution_count": 3, 44 | "metadata": {}, 45 | "outputs": [], 46 | "source": [ 47 | "def download_and_unzip(url):\n", 48 | " print('Downloading shapefile...')\n", 49 | " r = requests.get(url)\n", 50 | " z = zipfile.ZipFile(io.BytesIO(r.content))\n", 51 | " print(\"Done\")\n", 52 | " \n", 53 | " z.extractall(path=\".\") # extract to folder\n", 54 | " filenames = [y for y in sorted(z.namelist()) for ending in ['dbf', 'prj', 'shp', 'shx'] if y.endswith(ending)] \n", 55 | " print(filenames)" 56 | ] 57 | }, 58 | { 59 | "cell_type": "markdown", 60 | "metadata": {}, 61 | "source": [ 62 | "## Provincias" 63 | ] 64 | }, 65 | { 66 | "cell_type": "code", 67 | "execution_count": 5, 68 | "metadata": {}, 69 | "outputs": [ 70 | { 71 | "name": "stdout", 72 | "output_type": "stream", 73 | "text": [ 74 | "Downloading shapefile...\n", 75 | "Done\n", 76 | "['Provincia/ign_provincia.dbf', 'Provincia/ign_provincia.prj', 'Provincia/ign_provincia.shp', 'Provincia/ign_provincia.shx']\n" 77 | ] 78 | } 79 | ], 80 | "source": [ 81 | "download_and_unzip(PROVINCIAS_URL)" 82 | ] 83 | }, 84 | { 85 | "cell_type": "code", 86 | "execution_count": 6, 87 | "metadata": {}, 88 | "outputs": [ 89 | { 90 | "data": { 91 | "text/html": [ 92 | "
\n", 93 | "\n", 106 | "\n", 107 | " \n", 108 | " \n", 109 | " \n", 110 | " \n", 111 | " \n", 112 | " \n", 113 | " \n", 114 | " \n", 115 | " \n", 116 | " \n", 117 | " \n", 118 | " \n", 119 | " \n", 120 | " \n", 121 | " \n", 122 | " \n", 123 | " \n", 124 | " \n", 125 | " \n", 126 | " \n", 127 | " \n", 128 | " \n", 129 | " \n", 130 | " \n", 131 | " \n", 132 | " \n", 133 | " \n", 134 | " \n", 135 | " \n", 136 | " \n", 137 | " \n", 138 | " \n", 139 | " \n", 140 | " \n", 141 | " \n", 142 | " \n", 143 | " \n", 144 | " \n", 145 | " \n", 146 | " \n", 147 | " \n", 148 | " \n", 149 | " \n", 150 | " \n", 151 | " \n", 152 | " \n", 153 | " \n", 154 | " \n", 155 | " \n", 156 | " \n", 157 | " \n", 158 | " \n", 159 | " \n", 160 | " \n", 161 | " \n", 162 | " \n", 163 | " \n", 164 | " \n", 165 | " \n", 166 | " \n", 167 | " \n", 168 | " \n", 169 | " \n", 170 | " \n", 171 | " \n", 172 | " \n", 173 | " \n", 174 | " \n", 175 | " \n", 176 | " \n", 177 | " \n", 178 | " \n", 179 | " \n", 180 | " \n", 181 | " \n", 182 | " \n", 183 | " \n", 184 | " \n", 185 | " \n", 186 | " \n", 187 | " \n", 188 | " \n", 189 | " \n", 190 | " \n", 191 | " \n", 192 | " \n", 193 | " \n", 194 | " \n", 195 | " \n", 196 | " \n", 197 | " \n", 198 | " \n", 199 | " \n", 200 | " \n", 201 | "
OBJECTIDEntidadObjetoFNAGNANAMSAGFDCIN1SHAPE_STArSHAPE_STLegeometry
04270ProvinciaCiudad Autónoma de Buenos AiresCiudad AutónomaCiudad Autónoma de Buenos AiresIGNGeografía020.0202420.743806POLYGON Z ((-58.34188739699994 -34.63109671699...
14280ProvinciaProvincia del NeuquénProvinciaNeuquénIGNGeografía589.77181121.515985POLYGON Z ((-70.39345041599995 -36.15525721499...
24290ProvinciaProvincia de La PampaProvinciaLa PampaIGNGeografía4214.55301919.665614(POLYGON Z ((-64.76547241199995 -40.7835121149...
34300ProvinciaProvincia de MendozaProvinciaMendozaIGNGeografía5014.65838823.259986POLYGON Z ((-69.12569695099995 -32.00283498499...
44310ProvinciaProvincia de San LuisProvinciaSan LuisIGNGeografía747.33377114.490196POLYGON Z ((-67.05547011299996 -31.85605263599...
\n", 202 | "
" 203 | ], 204 | "text/plain": [ 205 | " OBJECTID Entidad Objeto FNA \\\n", 206 | "0 427 0 Provincia Ciudad Autónoma de Buenos Aires \n", 207 | "1 428 0 Provincia Provincia del Neuquén \n", 208 | "2 429 0 Provincia Provincia de La Pampa \n", 209 | "3 430 0 Provincia Provincia de Mendoza \n", 210 | "4 431 0 Provincia Provincia de San Luis \n", 211 | "\n", 212 | " GNA NAM SAG FDC IN1 \\\n", 213 | "0 Ciudad Autónoma Ciudad Autónoma de Buenos Aires IGN Geografía 02 \n", 214 | "1 Provincia Neuquén IGN Geografía 58 \n", 215 | "2 Provincia La Pampa IGN Geografía 42 \n", 216 | "3 Provincia Mendoza IGN Geografía 50 \n", 217 | "4 Provincia San Luis IGN Geografía 74 \n", 218 | "\n", 219 | " SHAPE_STAr SHAPE_STLe geometry \n", 220 | "0 0.020242 0.743806 POLYGON Z ((-58.34188739699994 -34.63109671699... \n", 221 | "1 9.771811 21.515985 POLYGON Z ((-70.39345041599995 -36.15525721499... \n", 222 | "2 14.553019 19.665614 (POLYGON Z ((-64.76547241199995 -40.7835121149... \n", 223 | "3 14.658388 23.259986 POLYGON Z ((-69.12569695099995 -32.00283498499... \n", 224 | "4 7.333771 14.490196 POLYGON Z ((-67.05547011299996 -31.85605263599... " 225 | ] 226 | }, 227 | "execution_count": 6, 228 | "metadata": {}, 229 | "output_type": "execute_result" 230 | } 231 | ], 232 | "source": [ 233 | "provincias = gpd.read_file(\"Provincia\")\n", 234 | "provincias.head()" 235 | ] 236 | }, 237 | { 238 | "cell_type": "code", 239 | "execution_count": 8, 240 | "metadata": {}, 241 | "outputs": [], 242 | "source": [ 243 | "provincias.to_file(os.path.join(PROVINCIAS_OUTPUT, PROVINCIAS_OUTPUT) + \".shp\")" 244 | ] 245 | }, 246 | { 247 | "cell_type": "markdown", 248 | "metadata": {}, 249 | "source": [ 250 | "## Departamentos" 251 | ] 252 | }, 253 | { 254 | "cell_type": "code", 255 | "execution_count": 4, 256 | "metadata": {}, 257 | "outputs": [ 258 | { 259 | "name": "stdout", 260 | "output_type": "stream", 261 | "text": [ 262 | "Downloading shapefile...\n", 263 | "Done\n", 264 | "['Departamento/igndepartamento.dbf', 'Departamento/igndepartamento.prj', 'Departamento/igndepartamento.shp', 'Departamento/igndepartamento.shx']\n" 265 | ] 266 | } 267 | ], 268 | "source": [ 269 | "download_and_unzip(DEPARTAMENTOS_URL)" 270 | ] 271 | }, 272 | { 273 | "cell_type": "code", 274 | "execution_count": 107, 275 | "metadata": {}, 276 | "outputs": [ 277 | { 278 | "data": { 279 | "text/html": [ 280 | "
\n", 281 | "\n", 294 | "\n", 295 | " \n", 296 | " \n", 297 | " \n", 298 | " \n", 299 | " \n", 300 | " \n", 301 | " \n", 302 | " \n", 303 | " \n", 304 | " \n", 305 | " \n", 306 | " \n", 307 | " \n", 308 | " \n", 309 | " \n", 310 | " \n", 311 | " \n", 312 | " \n", 313 | " \n", 314 | " \n", 315 | " \n", 316 | " \n", 317 | " \n", 318 | " \n", 319 | " \n", 320 | " \n", 321 | " \n", 322 | " \n", 323 | " \n", 324 | " \n", 325 | " \n", 326 | " \n", 327 | " \n", 328 | " \n", 329 | " \n", 330 | " \n", 331 | " \n", 332 | " \n", 333 | " \n", 334 | " \n", 335 | " \n", 336 | " \n", 337 | " \n", 338 | " \n", 339 | " \n", 340 | " \n", 341 | " \n", 342 | " \n", 343 | " \n", 344 | " \n", 345 | " \n", 346 | " \n", 347 | " \n", 348 | " \n", 349 | " \n", 350 | " \n", 351 | " \n", 352 | " \n", 353 | " \n", 354 | " \n", 355 | " \n", 356 | " \n", 357 | " \n", 358 | " \n", 359 | " \n", 360 | " \n", 361 | " \n", 362 | " \n", 363 | " \n", 364 | " \n", 365 | " \n", 366 | " \n", 367 | " \n", 368 | " \n", 369 | " \n", 370 | " \n", 371 | " \n", 372 | " \n", 373 | " \n", 374 | " \n", 375 | " \n", 376 | " \n", 377 | " \n", 378 | " \n", 379 | " \n", 380 | " \n", 381 | " \n", 382 | " \n", 383 | "
EntidadObjetoFNAGNANAMSAGFDCIN1SHAPE_STArSHAPE_STLegeometry
00DepartamentoDepartamento Islas del Atlántico SurDepartamentoIslas del Atlántico SurIGNNone0940212.200323113.414744(POLYGON Z ((-58.96740100699998 -51.2338223019...
10DepartamentoDepartamento ConcordiaDepartamentoConcordiaATER - Direc. de CatastroNone0300150.3104714.031163POLYGON Z ((-58.38760625899994 -30.82888817099...
20DepartamentoDepartamento FederalDepartamentoFederalATER - Direc. de CatastroNone0300350.4922145.517325POLYGON Z ((-58.96264851599994 -30.60344399399...
30DepartamentoDepartamento GualeguaychúDepartamentoGualeguaychúATER - Direc. de CatastroNone0300560.7268215.318422POLYGON Z ((-59.06579033399998 -32.48615000999...
40DepartamentoDepartamento Islas del IbicuyDepartamentoIslas del IbicuyATER - Direc. de CatastroNone0300630.4790764.213641POLYGON Z ((-58.43840745399996 -33.51761382999...
\n", 384 | "
" 385 | ], 386 | "text/plain": [ 387 | " Entidad Objeto FNA GNA \\\n", 388 | "0 0 Departamento Departamento Islas del Atlántico Sur Departamento \n", 389 | "1 0 Departamento Departamento Concordia Departamento \n", 390 | "2 0 Departamento Departamento Federal Departamento \n", 391 | "3 0 Departamento Departamento Gualeguaychú Departamento \n", 392 | "4 0 Departamento Departamento Islas del Ibicuy Departamento \n", 393 | "\n", 394 | " NAM SAG FDC IN1 \\\n", 395 | "0 Islas del Atlántico Sur IGN None 094021 \n", 396 | "1 Concordia ATER - Direc. de Catastro None 030015 \n", 397 | "2 Federal ATER - Direc. de Catastro None 030035 \n", 398 | "3 Gualeguaychú ATER - Direc. de Catastro None 030056 \n", 399 | "4 Islas del Ibicuy ATER - Direc. de Catastro None 030063 \n", 400 | "\n", 401 | " SHAPE_STAr SHAPE_STLe geometry \n", 402 | "0 2.200323 113.414744 (POLYGON Z ((-58.96740100699998 -51.2338223019... \n", 403 | "1 0.310471 4.031163 POLYGON Z ((-58.38760625899994 -30.82888817099... \n", 404 | "2 0.492214 5.517325 POLYGON Z ((-58.96264851599994 -30.60344399399... \n", 405 | "3 0.726821 5.318422 POLYGON Z ((-59.06579033399998 -32.48615000999... \n", 406 | "4 0.479076 4.213641 POLYGON Z ((-58.43840745399996 -33.51761382999... " 407 | ] 408 | }, 409 | "execution_count": 107, 410 | "metadata": {}, 411 | "output_type": "execute_result" 412 | } 413 | ], 414 | "source": [ 415 | "departamentos = gpd.read_file(\"Departamento\")\n", 416 | "departamentos.head()" 417 | ] 418 | }, 419 | { 420 | "cell_type": "code", 421 | "execution_count": 108, 422 | "metadata": {}, 423 | "outputs": [], 424 | "source": [ 425 | "# se corrige el id de departamentos, sacando el dígito inicial\n", 426 | "departamentos[\"IN1\"] = departamentos[\"IN1\"].str[1:]" 427 | ] 428 | }, 429 | { 430 | "cell_type": "code", 431 | "execution_count": 109, 432 | "metadata": {}, 433 | "outputs": [], 434 | "source": [ 435 | "departamentos.to_file(os.path.join(DEPARTAMENTOS_OUTPUT, DEPARTAMENTOS_OUTPUT) + \".shp\")" 436 | ] 437 | }, 438 | { 439 | "cell_type": "markdown", 440 | "metadata": {}, 441 | "source": [ 442 | "## Municipios" 443 | ] 444 | }, 445 | { 446 | "cell_type": "code", 447 | "execution_count": 110, 448 | "metadata": {}, 449 | "outputs": [ 450 | { 451 | "name": "stdout", 452 | "output_type": "stream", 453 | "text": [ 454 | "Downloading shapefile...\n", 455 | "Done\n", 456 | "['Municipio/ign_municipio.dbf', 'Municipio/ign_municipio.prj', 'Municipio/ign_municipio.shp', 'Municipio/ign_municipio.shx']\n" 457 | ] 458 | } 459 | ], 460 | "source": [ 461 | "download_and_unzip(MUNICIPIOS_URL)" 462 | ] 463 | }, 464 | { 465 | "cell_type": "code", 466 | "execution_count": 111, 467 | "metadata": {}, 468 | "outputs": [ 469 | { 470 | "data": { 471 | "text/html": [ 472 | "
\n", 473 | "\n", 486 | "\n", 487 | " \n", 488 | " \n", 489 | " \n", 490 | " \n", 491 | " \n", 492 | " \n", 493 | " \n", 494 | " \n", 495 | " \n", 496 | " \n", 497 | " \n", 498 | " \n", 499 | " \n", 500 | " \n", 501 | " \n", 502 | " \n", 503 | " \n", 504 | " \n", 505 | " \n", 506 | " \n", 507 | " \n", 508 | " \n", 509 | " \n", 510 | " \n", 511 | " \n", 512 | " \n", 513 | " \n", 514 | " \n", 515 | " \n", 516 | " \n", 517 | " \n", 518 | " \n", 519 | " \n", 520 | " \n", 521 | " \n", 522 | " \n", 523 | " \n", 524 | " \n", 525 | " \n", 526 | " \n", 527 | " \n", 528 | " \n", 529 | " \n", 530 | " \n", 531 | " \n", 532 | " \n", 533 | " \n", 534 | " \n", 535 | " \n", 536 | " \n", 537 | " \n", 538 | " \n", 539 | " \n", 540 | " \n", 541 | " \n", 542 | " \n", 543 | " \n", 544 | " \n", 545 | " \n", 546 | " \n", 547 | " \n", 548 | " \n", 549 | " \n", 550 | " \n", 551 | " \n", 552 | " \n", 553 | " \n", 554 | " \n", 555 | " \n", 556 | " \n", 557 | " \n", 558 | " \n", 559 | " \n", 560 | " \n", 561 | " \n", 562 | " \n", 563 | " \n", 564 | " \n", 565 | " \n", 566 | " \n", 567 | " \n", 568 | " \n", 569 | " \n", 570 | " \n", 571 | " \n", 572 | " \n", 573 | " \n", 574 | " \n", 575 | " \n", 576 | " \n", 577 | " \n", 578 | " \n", 579 | " \n", 580 | " \n", 581 | "
OBJECTIDEntidadObjetoFNAGNANAMSAGFDCIN1SHAPE_STArSHAPE_STLegeometry
0112450MunicipioMunicipio General PazMunicipioGeneral PazARBA - Gerencia de Servicios CatastralesARBA - Gerencia de Servicios Catastrales0603430.1189161.746722POLYGON Z ((-58.15494155899995 -35.40827560399...
1112460MunicipioMunicipio General GuidoMunicipioGeneral GuidoARBA - Gerencia de Servicios CatastralesARBA - Gerencia de Servicios Catastrales0603080.2344812.694395POLYGON Z ((-57.66096498999997 -36.72321702099...
2112470MunicipioMunicipio General Juan MadariagaMunicipioGeneral Juan MadariagaARBA - Gerencia de Servicios CatastralesARBA - Gerencia de Servicios Catastrales0603150.3027172.781763POLYGON Z ((-56.82128529899995 -37.02416229699...
3112480MunicipioMunicipio TandilMunicipioTandilARBA - Gerencia de Servicios CatastralesARBA - Gerencia de Servicios Catastrales0607910.4927593.341668POLYGON Z ((-59.08983612099996 -37.06261444099...
4112490MunicipioMunicipio Coronel SuárezMunicipioCoronel SuárezARBA - Gerencia de Servicios CatastralesARBA - Gerencia de Servicios Catastrales0602030.6087324.253503POLYGON Z ((-61.60341644299996 -36.99325180099...
\n", 582 | "
" 583 | ], 584 | "text/plain": [ 585 | " OBJECTID Entidad Objeto FNA GNA \\\n", 586 | "0 11245 0 Municipio Municipio General Paz Municipio \n", 587 | "1 11246 0 Municipio Municipio General Guido Municipio \n", 588 | "2 11247 0 Municipio Municipio General Juan Madariaga Municipio \n", 589 | "3 11248 0 Municipio Municipio Tandil Municipio \n", 590 | "4 11249 0 Municipio Municipio Coronel Suárez Municipio \n", 591 | "\n", 592 | " NAM SAG \\\n", 593 | "0 General Paz ARBA - Gerencia de Servicios Catastrales \n", 594 | "1 General Guido ARBA - Gerencia de Servicios Catastrales \n", 595 | "2 General Juan Madariaga ARBA - Gerencia de Servicios Catastrales \n", 596 | "3 Tandil ARBA - Gerencia de Servicios Catastrales \n", 597 | "4 Coronel Suárez ARBA - Gerencia de Servicios Catastrales \n", 598 | "\n", 599 | " FDC IN1 SHAPE_STAr SHAPE_STLe \\\n", 600 | "0 ARBA - Gerencia de Servicios Catastrales 060343 0.118916 1.746722 \n", 601 | "1 ARBA - Gerencia de Servicios Catastrales 060308 0.234481 2.694395 \n", 602 | "2 ARBA - Gerencia de Servicios Catastrales 060315 0.302717 2.781763 \n", 603 | "3 ARBA - Gerencia de Servicios Catastrales 060791 0.492759 3.341668 \n", 604 | "4 ARBA - Gerencia de Servicios Catastrales 060203 0.608732 4.253503 \n", 605 | "\n", 606 | " geometry \n", 607 | "0 POLYGON Z ((-58.15494155899995 -35.40827560399... \n", 608 | "1 POLYGON Z ((-57.66096498999997 -36.72321702099... \n", 609 | "2 POLYGON Z ((-56.82128529899995 -37.02416229699... \n", 610 | "3 POLYGON Z ((-59.08983612099996 -37.06261444099... \n", 611 | "4 POLYGON Z ((-61.60341644299996 -36.99325180099... " 612 | ] 613 | }, 614 | "execution_count": 111, 615 | "metadata": {}, 616 | "output_type": "execute_result" 617 | } 618 | ], 619 | "source": [ 620 | "municipios = gpd.read_file(\"Municipio\")\n", 621 | "municipios.head()" 622 | ] 623 | }, 624 | { 625 | "cell_type": "markdown", 626 | "metadata": {}, 627 | "source": [ 628 | "Los polígonos de algunos municipios están separados. Se juntan para solucionar la duplicidad de municipios." 629 | ] 630 | }, 631 | { 632 | "cell_type": "code", 633 | "execution_count": 112, 634 | "metadata": {}, 635 | "outputs": [ 636 | { 637 | "name": "stdout", 638 | "output_type": "stream", 639 | "text": [ 640 | "Existen 47 municipios con id duplicado, tienen geometrías POLYGON separadas\n" 641 | ] 642 | }, 643 | { 644 | "data": { 645 | "text/plain": [ 646 | "(1806, 1759)" 647 | ] 648 | }, 649 | "execution_count": 112, 650 | "metadata": {}, 651 | "output_type": "execute_result" 652 | } 653 | ], 654 | "source": [ 655 | "print(\"Existen {} municipios con id duplicado, tienen geometrías POLYGON separadas\".format(\n", 656 | " len(municipios) - len(municipios.drop_duplicates(\"IN1\"))\n", 657 | "))\n", 658 | "\n", 659 | "len(municipios), len(municipios.drop_duplicates(\"IN1\"))" 660 | ] 661 | }, 662 | { 663 | "cell_type": "markdown", 664 | "metadata": {}, 665 | "source": [ 666 | "Ejemplo: municipio de San Pedro de Jujuy tiene su geometría dividida en 2 polígonos." 667 | ] 668 | }, 669 | { 670 | "cell_type": "code", 671 | "execution_count": 113, 672 | "metadata": {}, 673 | "outputs": [ 674 | { 675 | "data": { 676 | "text/html": [ 677 | "
\n", 678 | "\n", 691 | "\n", 692 | " \n", 693 | " \n", 694 | " \n", 695 | " \n", 696 | " \n", 697 | " \n", 698 | " \n", 699 | " \n", 700 | " \n", 701 | " \n", 702 | " \n", 703 | " \n", 704 | " \n", 705 | " \n", 706 | " \n", 707 | " \n", 708 | " \n", 709 | " \n", 710 | " \n", 711 | " \n", 712 | " \n", 713 | " \n", 714 | " \n", 715 | " \n", 716 | " \n", 717 | " \n", 718 | " \n", 719 | " \n", 720 | " \n", 721 | " \n", 722 | " \n", 723 | " \n", 724 | " \n", 725 | " \n", 726 | " \n", 727 | " \n", 728 | " \n", 729 | " \n", 730 | " \n", 731 | " \n", 732 | " \n", 733 | " \n", 734 | " \n", 735 | " \n", 736 | " \n", 737 | " \n", 738 | " \n", 739 | " \n", 740 | " \n", 741 | "
OBJECTIDEntidadObjetoFNAGNANAMSAGFDCIN1SHAPE_STArSHAPE_STLegeometry
38112830MunicipioMunicipio San Pedro de JujuyMunicipioSan Pedro de JujuyDirec. Grl. de InmueblesDirec. Grl. de Catastro3802240.0640761.424198POLYGON Z ((-64.49840913399998 -24.30698289499...
39112840MunicipioMunicipio San Pedro de JujuyMunicipioSan Pedro de JujuyDirec. Grl. de InmueblesDirec. Grl. de Catastro3802240.0512191.006599POLYGON Z ((-64.81677994099994 -24.08563480899...
\n", 742 | "
" 743 | ], 744 | "text/plain": [ 745 | " OBJECTID Entidad Objeto FNA GNA \\\n", 746 | "38 11283 0 Municipio Municipio San Pedro de Jujuy Municipio \n", 747 | "39 11284 0 Municipio Municipio San Pedro de Jujuy Municipio \n", 748 | "\n", 749 | " NAM SAG FDC \\\n", 750 | "38 San Pedro de Jujuy Direc. Grl. de Inmuebles Direc. Grl. de Catastro \n", 751 | "39 San Pedro de Jujuy Direc. Grl. de Inmuebles Direc. Grl. de Catastro \n", 752 | "\n", 753 | " IN1 SHAPE_STAr SHAPE_STLe \\\n", 754 | "38 380224 0.064076 1.424198 \n", 755 | "39 380224 0.051219 1.006599 \n", 756 | "\n", 757 | " geometry \n", 758 | "38 POLYGON Z ((-64.49840913399998 -24.30698289499... \n", 759 | "39 POLYGON Z ((-64.81677994099994 -24.08563480899... " 760 | ] 761 | }, 762 | "execution_count": 113, 763 | "metadata": {}, 764 | "output_type": "execute_result" 765 | } 766 | ], 767 | "source": [ 768 | "municipios[municipios[\"IN1\"] == \"380224\"]" 769 | ] 770 | }, 771 | { 772 | "cell_type": "code", 773 | "execution_count": 114, 774 | "metadata": {}, 775 | "outputs": [ 776 | { 777 | "data": { 778 | "text/plain": [ 779 | "" 780 | ] 781 | }, 782 | "execution_count": 114, 783 | "metadata": {}, 784 | "output_type": "execute_result" 785 | }, 786 | { 787 | "data": { 788 | "image/png": "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\n", 789 | "text/plain": [ 790 | "
" 791 | ] 792 | }, 793 | "metadata": { 794 | "needs_background": "light" 795 | }, 796 | "output_type": "display_data" 797 | } 798 | ], 799 | "source": [ 800 | "municipios[municipios[\"IN1\"] == \"380224\"].plot()" 801 | ] 802 | }, 803 | { 804 | "cell_type": "markdown", 805 | "metadata": {}, 806 | "source": [ 807 | "Se aplica el método \"dissolve\" para unir los polígonos de los municipios, generando una sola fila por id sin afectar la forma de los polígonos." 808 | ] 809 | }, 810 | { 811 | "cell_type": "code", 812 | "execution_count": 115, 813 | "metadata": {}, 814 | "outputs": [], 815 | "source": [ 816 | "municipios_dissolved = municipios.dissolve(by='IN1').reset_index()" 817 | ] 818 | }, 819 | { 820 | "cell_type": "code", 821 | "execution_count": 116, 822 | "metadata": {}, 823 | "outputs": [ 824 | { 825 | "data": { 826 | "text/html": [ 827 | "
\n", 828 | "\n", 841 | "\n", 842 | " \n", 843 | " \n", 844 | " \n", 845 | " \n", 846 | " \n", 847 | " \n", 848 | " \n", 849 | " \n", 850 | " \n", 851 | " \n", 852 | " \n", 853 | " \n", 854 | " \n", 855 | " \n", 856 | " \n", 857 | " \n", 858 | " \n", 859 | " \n", 860 | " \n", 861 | " \n", 862 | " \n", 863 | " \n", 864 | " \n", 865 | " \n", 866 | " \n", 867 | " \n", 868 | " \n", 869 | " \n", 870 | " \n", 871 | " \n", 872 | " \n", 873 | " \n", 874 | " \n", 875 | " \n", 876 | "
IN1geometryOBJECTIDEntidadObjetoFNAGNANAMSAGFDCSHAPE_STArSHAPE_STLe
830380224(POLYGON Z ((-64.49840913399998 -24.3069828949...112830MunicipioMunicipio San Pedro de JujuyMunicipioSan Pedro de JujuyDirec. Grl. de InmueblesDirec. Grl. de Catastro0.0640761.424198
\n", 877 | "
" 878 | ], 879 | "text/plain": [ 880 | " IN1 geometry OBJECTID \\\n", 881 | "830 380224 (POLYGON Z ((-64.49840913399998 -24.3069828949... 11283 \n", 882 | "\n", 883 | " Entidad Objeto FNA GNA \\\n", 884 | "830 0 Municipio Municipio San Pedro de Jujuy Municipio \n", 885 | "\n", 886 | " NAM SAG FDC \\\n", 887 | "830 San Pedro de Jujuy Direc. Grl. de Inmuebles Direc. Grl. de Catastro \n", 888 | "\n", 889 | " SHAPE_STAr SHAPE_STLe \n", 890 | "830 0.064076 1.424198 " 891 | ] 892 | }, 893 | "execution_count": 116, 894 | "metadata": {}, 895 | "output_type": "execute_result" 896 | } 897 | ], 898 | "source": [ 899 | "municipios_dissolved[municipios_dissolved[\"IN1\"] == \"380224\"]" 900 | ] 901 | }, 902 | { 903 | "cell_type": "code", 904 | "execution_count": 117, 905 | "metadata": {}, 906 | "outputs": [ 907 | { 908 | "data": { 909 | "text/plain": [ 910 | "" 911 | ] 912 | }, 913 | "execution_count": 117, 914 | "metadata": {}, 915 | "output_type": "execute_result" 916 | }, 917 | { 918 | "data": { 919 | "image/png": "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\n", 920 | "text/plain": [ 921 | "
" 922 | ] 923 | }, 924 | "metadata": { 925 | "needs_background": "light" 926 | }, 927 | "output_type": "display_data" 928 | } 929 | ], 930 | "source": [ 931 | "municipios_dissolved[municipios_dissolved[\"IN1\"] == \"380224\"].plot()" 932 | ] 933 | }, 934 | { 935 | "cell_type": "code", 936 | "execution_count": 118, 937 | "metadata": {}, 938 | "outputs": [], 939 | "source": [ 940 | "municipios_dissolved.to_file(os.path.join(MUNICIPIOS_OUTPUT, MUNICIPIOS_OUTPUT) + \".shp\")" 941 | ] 942 | }, 943 | { 944 | "cell_type": "code", 945 | "execution_count": null, 946 | "metadata": {}, 947 | "outputs": [], 948 | "source": [] 949 | } 950 | ], 951 | "metadata": { 952 | "kernelspec": { 953 | "display_name": "Python 3", 954 | "language": "python", 955 | "name": "python3" 956 | }, 957 | "language_info": { 958 | "codemirror_mode": { 959 | "name": "ipython", 960 | "version": 3 961 | }, 962 | "file_extension": ".py", 963 | "mimetype": "text/x-python", 964 | "name": "python", 965 | "nbconvert_exporter": "python", 966 | "pygments_lexer": "ipython3", 967 | "version": "3.7.1" 968 | }, 969 | "toc": { 970 | "colors": { 971 | "hover_highlight": "#DAA520", 972 | "running_highlight": "#FF0000", 973 | "selected_highlight": "#FFD700" 974 | }, 975 | "moveMenuLeft": true, 976 | "nav_menu": { 977 | "height": "12px", 978 | "width": "252px" 979 | }, 980 | "navigate_menu": true, 981 | "number_sections": true, 982 | "sideBar": true, 983 | "threshold": 4, 984 | "toc_cell": false, 985 | "toc_section_display": "block", 986 | "toc_window_display": false 987 | } 988 | }, 989 | "nbformat": 4, 990 | "nbformat_minor": 2 991 | } 992 | --------------------------------------------------------------------------------