{"id":415,"date":"2021-08-02T22:07:00","date_gmt":"2021-08-02T20:07:00","guid":{"rendered":"http:\/\/www.educagis.com\/wpcarlos\/?p=415"},"modified":"2021-08-09T19:58:50","modified_gmt":"2021-08-09T17:58:50","slug":"introduccion-a-la-ciencia-de-datos-con-julia-parte-1","status":"publish","type":"post","link":"https:\/\/www.educagis.com\/wpcarlos\/2021\/08\/02\/introduccion-a-la-ciencia-de-datos-con-julia-parte-1\/","title":{"rendered":"Introducci\u00f3n a la ciencia de datos con Julia-Parte 1"},"content":{"rendered":"<h2 class=\"simpletoc-title\">Tabla de contenidos<\/h2>\n<ul class=\"simpletoc-list\">\n<li><a href=\"#introduccion\">Introducci\u00f3n<\/a>\n\n<\/li>\n<li><a href=\"#proceso-de-analisis-de-datos\">Proceso de an\u00e1lisis de datos<\/a>\n\n<\/li>\n<li><a href=\"#procedimiento\">Procedimiento<\/a>\n\n\n<ul><li>\n<a href=\"#fuente-de-datos-uso-de-qgis\">Fuente de Datos &#8211; Uso de QGIS<\/a>\n\n<\/li>\n<li><a href=\"#julia-con-visual-studio-code\">Julia con Visual Studio Code<\/a>\n\n<\/li>\n<li><a href=\"#importacion-de-datos\">Importaci\u00f3n de datos<\/a>\n\n<\/li>\n<li><a href=\"#generando-tablas-en-formato-html\">Generando Tablas en formato HTML<\/a>\n\n<\/li>\n<li><a href=\"#ordenar-los-datos\">Ordenar los datos<\/a>\n\n<\/li>\n<li><a href=\"#transformar-los-datos\">Transformar los datos<\/a>\n\n<\/li>\n<li><a href=\"#uso-de-macros\">Uso de Macros<\/a>\n\n<\/li>\n<li><a href=\"#incorporando-tablas-a-nuestro-mapa\">Incorporando tablas a nuestro mapa<\/a>\n\n<\/li>\n<\/ul>\n<li><a href=\"#reflexion-final\">Reflexi\u00f3n Final<\/a>\n<\/li><\/ul>\n\n<h2 class=\"wp-block-heading\" id=\"introduccion\">Introducci\u00f3n<\/h2>\n\n\n<p class=\"has-drop-cap\">En esta oportunidad iniciare una serie de entradas ligadas a la ciencia de datos empleando el lenguaje <a rel=\"noreferrer noopener\" href=\"https:\/\/julialang.org\/\" target=\"_blank\">Julia<\/a>, siendo una importante motivaci\u00f3n la posibilidad de explorar una alternativa que me permite analizar distintos tipos de datos, siendo mi especial inter\u00e9s aquellos que tienen el componente espacial. En los \u00faltimos meses le estuve dedicando tiempo a conocer mejor a Julia y como producto de ello quiero compartir parte de lo aprendido, siendo mi deseo el seguir escribiendo sobre las ventajas que tenemos con Julia. Como primeras acciones se han elaborado un <a rel=\"noreferrer noopener\" href=\"https:\/\/www.youtube.com\/playlist?list=PLs4TRQJDeisQ9lO5Hd_-DmPY3nLpFEBbv\" target=\"_blank\">par de v\u00eddeos<\/a> sobre su instalaci\u00f3n y los primeros pasos que debemos considerar para iniciarnos en esta aventura.<\/p>\n\n\n<h2 class=\"wp-block-heading\" id=\"proceso-de-analisis-de-datos\">Proceso de an\u00e1lisis de datos<\/h2>\n\n\n<p>En esta primera parte me pienso enfocar en tres fases dentro del conocido como proceso de an\u00e1lisis de datos: Importar, Ordenar y Transformar.<\/p>\n\n\n\n<p>Si lo vemos dentro de un flujo, el mismo que corresponde a las etapas definidas por <a rel=\"noreferrer noopener\" href=\"https:\/\/r4ds.had.co.nz\/index.html\" target=\"_blank\">Hadley Wickham<\/a>, resaltamos en la siguiente gr\u00e1fica lo considerado por ahora. <\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/bitsandbricks.github.io\/ciencia_de_datos_gente_sociable\/\" target=\"_blank\" rel=\"noopener noreferrer\"><img loading=\"lazy\" decoding=\"async\" width=\"741\" height=\"295\" src=\"http:\/\/www.educagis.com\/wpcarlos\/wp-content\/uploads\/2021\/08\/fig1_proceso1_blog.png\" alt=\"\" class=\"wp-image-418\" srcset=\"https:\/\/www.educagis.com\/wpcarlos\/wp-content\/uploads\/2021\/08\/fig1_proceso1_blog.png 741w, https:\/\/www.educagis.com\/wpcarlos\/wp-content\/uploads\/2021\/08\/fig1_proceso1_blog-300x119.png 300w\" sizes=\"auto, (max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 984px) 61vw, (max-width: 1362px) 45vw, 600px\" \/><\/a><figcaption><strong>Fuente<\/strong>:<a href=\"https:\/\/bitsandbricks.github.io\/ciencia_de_datos_gente_sociable\/\" target=\"_blank\" rel=\"noreferrer noopener\"> Ciencia de Datos para Gente Sociable \u2013<\/a> Antonio Vasquez Brust<\/figcaption><\/figure>\n\n\n<h2 class=\"wp-block-heading\" id=\"procedimiento\">Procedimiento<\/h2>\n\n\n<p>Si bien nos enfocaremos en el uso de Julia, por la naturaleza de los datos iniciaremos apoy\u00e1ndonos en otras herramientas. Los datos a emplear tienen un componente geogr\u00e1fico, por lo tanto, emplear\u00e1 el software <a rel=\"noreferrer noopener\" href=\"https:\/\/qgis.org\/es\/site\/\" target=\"_blank\">QGIS<\/a>, con la final de realizar un preprocesamiento necesario.<\/p>\n\n\n<h3 class=\"wp-block-heading\" id=\"fuente-de-datos-uso-de-qgis\">Fuente de Datos &#8211; Uso de QGIS<\/h3>\n\n\n<p>Como fuente de datos vamos a considerar los siguientes:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Datos de poblaci\u00f3n mundial (<a rel=\"noreferrer noopener\" href=\"https:\/\/data.humdata.org\/dataset\/kontur-population-dataset\" target=\"_blank\">Kontur Population: Global Population Density for 400m H3 Hexagons<\/a>)<\/li><\/ul>\n\n\n\n<figure class=\"wp-block-image size-medium\"><a href=\"https:\/\/data.humdata.org\/dataset\/kontur-population-dataset\" target=\"_blank\" rel=\"noopener noreferrer\"><img loading=\"lazy\" decoding=\"async\" width=\"300\" height=\"188\" src=\"http:\/\/www.educagis.com\/wpcarlos\/wp-content\/uploads\/2021\/08\/source1_completo-300x188.png\" alt=\"\" class=\"wp-image-421\" srcset=\"https:\/\/www.educagis.com\/wpcarlos\/wp-content\/uploads\/2021\/08\/source1_completo-300x188.png 300w, https:\/\/www.educagis.com\/wpcarlos\/wp-content\/uploads\/2021\/08\/source1_completo-1024x642.png 1024w, https:\/\/www.educagis.com\/wpcarlos\/wp-content\/uploads\/2021\/08\/source1_completo-768x481.png 768w, https:\/\/www.educagis.com\/wpcarlos\/wp-content\/uploads\/2021\/08\/source1_completo-1200x752.png 1200w, https:\/\/www.educagis.com\/wpcarlos\/wp-content\/uploads\/2021\/08\/source1_completo.png 1257w\" sizes=\"auto, (max-width: 300px) 85vw, 300px\" \/><\/a><\/figure>\n\n\n\n<ul class=\"wp-block-list\"><li>Datos sobre centros poblados en Per\u00fa (<a href=\"https:\/\/www.datosabiertos.gob.pe\/dataset\/tipologia-de-distritos-presidencia-del-consejo-de-ministros\" target=\"_blank\" rel=\"noreferrer noopener\">Tipolog\u00eda de distritos &#8211; PCM<\/a>)<\/li><\/ul>\n\n\n\n<figure class=\"wp-block-image size-medium\"><a href=\"https:\/\/www.datosabiertos.gob.pe\/dataset\/tipologia-de-distritos-presidencia-del-consejo-de-ministros\" target=\"_blank\" rel=\"noopener noreferrer\"><img loading=\"lazy\" decoding=\"async\" width=\"300\" height=\"250\" src=\"http:\/\/www.educagis.com\/wpcarlos\/wp-content\/uploads\/2021\/08\/source2_completo-300x250.png\" alt=\"\" class=\"wp-image-424\" srcset=\"https:\/\/www.educagis.com\/wpcarlos\/wp-content\/uploads\/2021\/08\/source2_completo-300x250.png 300w, https:\/\/www.educagis.com\/wpcarlos\/wp-content\/uploads\/2021\/08\/source2_completo-768x641.png 768w, https:\/\/www.educagis.com\/wpcarlos\/wp-content\/uploads\/2021\/08\/source2_completo.png 881w\" sizes=\"auto, (max-width: 300px) 85vw, 300px\" \/><\/a><\/figure>\n\n\n\n<p>Como parte de la preparaci\u00f3n de nuestros datos para un posterior an\u00e1lisis se ha creado un Proyecto en QGIS con la incorporaci\u00f3n de un grupo de capas, tal como se aprecia en la siguiente figura.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"275\" height=\"163\" src=\"http:\/\/www.educagis.com\/wpcarlos\/wp-content\/uploads\/2021\/08\/capas_qgis.png\" alt=\"\" class=\"wp-image-426\"\/><\/figure>\n\n\n\n<p>El procedimiento seguido para obtener dichas capas a partir de los datos descargados se puede resumir en las siguientes figuras.<\/p>\n\n\n\n<figure class=\"wp-block-gallery columns-2 is-cropped wp-block-gallery-1 is-layout-flex wp-block-gallery-is-layout-flex\"><ul class=\"blocks-gallery-grid\"><li class=\"blocks-gallery-item\"><figure><a href=\"http:\/\/www.educagis.com\/wpcarlos\/wp-content\/uploads\/2021\/08\/procedimiento_1.png\"><img loading=\"lazy\" decoding=\"async\" width=\"300\" height=\"129\" src=\"http:\/\/www.educagis.com\/wpcarlos\/wp-content\/uploads\/2021\/08\/procedimiento_1-300x129.png\" alt=\"\" data-id=\"427\" data-full-url=\"http:\/\/www.educagis.com\/wpcarlos\/wp-content\/uploads\/2021\/08\/procedimiento_1.png\" data-link=\"http:\/\/www.educagis.com\/wpcarlos\/?attachment_id=427\" class=\"wp-image-427\" srcset=\"https:\/\/www.educagis.com\/wpcarlos\/wp-content\/uploads\/2021\/08\/procedimiento_1-300x129.png 300w, https:\/\/www.educagis.com\/wpcarlos\/wp-content\/uploads\/2021\/08\/procedimiento_1-1024x440.png 1024w, https:\/\/www.educagis.com\/wpcarlos\/wp-content\/uploads\/2021\/08\/procedimiento_1-768x330.png 768w, https:\/\/www.educagis.com\/wpcarlos\/wp-content\/uploads\/2021\/08\/procedimiento_1.png 1168w\" sizes=\"auto, (max-width: 300px) 85vw, 300px\" \/><\/a><figcaption class=\"blocks-gallery-item__caption\"><a rel=\"noreferrer noopener\" href=\"http:\/\/www.educagis.com\/wpcarlos\/wp-content\/uploads\/2021\/08\/procedimiento_1.png\" target=\"_blank\"><span class=\"has-inline-color has-bright-red-color\">Capa: ccpp_huanuco_inei_mod<\/span><\/a><\/figcaption><\/figure><\/li><li class=\"blocks-gallery-item\"><figure><a href=\"http:\/\/www.educagis.com\/wpcarlos\/wp-content\/uploads\/2021\/08\/procedimiento_2.png\"><img loading=\"lazy\" decoding=\"async\" width=\"300\" height=\"242\" src=\"http:\/\/www.educagis.com\/wpcarlos\/wp-content\/uploads\/2021\/08\/procedimiento_2-300x242.png\" alt=\"\" data-id=\"428\" data-full-url=\"http:\/\/www.educagis.com\/wpcarlos\/wp-content\/uploads\/2021\/08\/procedimiento_2.png\" data-link=\"http:\/\/www.educagis.com\/wpcarlos\/?attachment_id=428\" class=\"wp-image-428\" srcset=\"https:\/\/www.educagis.com\/wpcarlos\/wp-content\/uploads\/2021\/08\/procedimiento_2-300x242.png 300w, https:\/\/www.educagis.com\/wpcarlos\/wp-content\/uploads\/2021\/08\/procedimiento_2.png 660w\" sizes=\"auto, (max-width: 300px) 85vw, 300px\" \/><\/a><figcaption class=\"blocks-gallery-item__caption\"><a rel=\"noreferrer noopener\" href=\"http:\/\/www.educagis.com\/wpcarlos\/wp-content\/uploads\/2021\/08\/procedimiento_2.png\" target=\"_blank\"><span class=\"has-inline-color has-bright-red-color\">Capa: select_pop_huanuco<\/span><\/a><\/figcaption><\/figure><\/li><\/ul><\/figure>\n\n\n\n<p>Las capas que corresponden a <code>dist_huanuco<\/code>, <code>prov_huanuco<\/code> y <code>dep_huanuco<\/code>, fueron obtenidos desde los datos libres del <em><a rel=\"noreferrer noopener\" href=\"https:\/\/www.openstreetmap.org\/\" target=\"_blank\">OpenStreetMap<\/a><\/em>. En QGIS empleamos el plugin <em><a rel=\"noreferrer noopener\" href=\"https:\/\/plugins.qgis.org\/plugins\/QuickOSM\/\" target=\"_blank\">QuickOSM<\/a><\/em> para realizar la extracci\u00f3n de elementos que corresponden a los mismos.<\/p>\n\n\n\n<figure class=\"wp-block-image size-medium\"><a href=\"http:\/\/www.educagis.com\/wpcarlos\/wp-content\/uploads\/2021\/08\/icon_tool2.png\" target=\"_blank\" rel=\"noopener noreferrer\"><img loading=\"lazy\" decoding=\"async\" width=\"300\" height=\"152\" src=\"http:\/\/www.educagis.com\/wpcarlos\/wp-content\/uploads\/2021\/08\/icon_tool2-300x152.png\" alt=\"\" class=\"wp-image-433\" srcset=\"https:\/\/www.educagis.com\/wpcarlos\/wp-content\/uploads\/2021\/08\/icon_tool2-300x152.png 300w, https:\/\/www.educagis.com\/wpcarlos\/wp-content\/uploads\/2021\/08\/icon_tool2.png 460w\" sizes=\"auto, (max-width: 300px) 85vw, 300px\" \/><\/a><figcaption>Vista del uso del plugin QuickOSM<\/figcaption><\/figure>\n\n\n\n<p>Al final, todas las capas que fueron preprocesadas en QGIS fueron exportados al formato <em>GeoJSON<\/em> y de manera adicional las capas que presentan geometr\u00eda de puntos fueron exportados en un formato tipo<em> CSV<\/em>.<\/p>\n\n\n\n<figure class=\"wp-block-image size-medium\"><a href=\"http:\/\/www.educagis.com\/wpcarlos\/wp-content\/uploads\/2021\/08\/export1_csv.png\" target=\"_blank\" rel=\"noopener noreferrer\"><img loading=\"lazy\" decoding=\"async\" width=\"268\" height=\"300\" src=\"http:\/\/www.educagis.com\/wpcarlos\/wp-content\/uploads\/2021\/08\/export1_csv-268x300.png\" alt=\"\" class=\"wp-image-434\" srcset=\"https:\/\/www.educagis.com\/wpcarlos\/wp-content\/uploads\/2021\/08\/export1_csv-268x300.png 268w, https:\/\/www.educagis.com\/wpcarlos\/wp-content\/uploads\/2021\/08\/export1_csv.png 593w\" sizes=\"auto, (max-width: 268px) 85vw, 268px\" \/><\/a><figcaption>Exportando a formato CSV<\/figcaption><\/figure>\n\n\n<h3 class=\"wp-block-heading\" id=\"julia-con-visual-studio-code\">Julia con Visual Studio Code <\/h3>\n\n\n<p>Ahora que tenemos los datos que vamos a emplear en nuestra carpeta de trabajo, vamos abrir el mismo empleando <a rel=\"noreferrer noopener\" href=\"https:\/\/code.visualstudio.com\/\" target=\"_blank\">Visual Studio Code<\/a>. En la actualidad considero que es una de las mejores opciones para trabajar Julia, en especial por la facilidad que tenemos para incorporar <a rel=\"noreferrer noopener\" href=\"https:\/\/marketplace.visualstudio.com\/VSCode\" target=\"_blank\">extensiones<\/a> que permiten tener un mejor entorno de trabajo. Para nuestro objetivo voy a dividirlos en extensiones que son necesarios y aquellos recomendados, los \u00faltimos buscan principalmente mejorar la visualizaci\u00f3n de nuestro c\u00f3digo.<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li><strong>Necesarios<\/strong>: Julia, Jupyter, Geo Data Viewer, HTML Preview, Office Viewer, Tabnine.<\/li><li><strong>Recomendados<\/strong>: Julia Color Themes, Better TOML, Rainbow End, Prettify JSON, Rainbow CSV, Better Comments, vscode-icons<\/li><\/ul>\n\n\n\n<p>Luego de instalar las extensiones necesarias en VSCode, debemos realizar los siguientes pasos:<\/p>\n\n\n\n<ol class=\"wp-block-list\"><li> Abrir la vista del terminal (habilitarlo desde el men\u00fa <em>view<\/em>)<\/li><li>Iniciamos el REPL (por defecto se usa <strong><code>Alt + j<\/code><\/strong>    <code><strong>Alt + o<\/strong><\/code>)<\/li><li>Activamos nuestro entorno en nuestra carpeta (usamos la tecla <code><strong><em>]<\/em><\/strong><\/code> y luego <code><strong><em>activate .<\/em><\/strong><\/code>)<\/li><li>Dentro de nuestro entorno iniciamos la instalaci\u00f3n de los paquetes de Julia requeridos, solo ingresamos el comando <code><strong><em>add<\/em><\/strong><\/code> seguido del nombre del paquete. Para esta primera parte usaremos los siguientes: <a rel=\"noreferrer noopener\" href=\"https:\/\/julialang.github.io\/IJulia.jl\/stable\/\" target=\"_blank\">IJulia<\/a>, <a rel=\"noreferrer noopener\" href=\"https:\/\/csv.juliadata.org\/stable\/\" target=\"_blank\">CSV<\/a>, <a rel=\"noreferrer noopener\" href=\"https:\/\/yeesian.com\/ArchGDAL.jl\/latest\/\" target=\"_blank\">ArchGDAL<\/a>, <a rel=\"noreferrer noopener\" href=\"https:\/\/dataframes.juliadata.org\/stable\/\" target=\"_blank\">DataFrames<\/a>,<a rel=\"noreferrer noopener\" href=\"https:\/\/juliadata.github.io\/DataFramesMeta.jl\/stable\/\" target=\"_blank\"> DataFramesMeta<\/a>, <a rel=\"noreferrer noopener\" href=\"https:\/\/ronisbr.github.io\/PrettyTables.jl\/stable\/\" target=\"_blank\">PrettyTables<\/a>)<\/li><li>Luego ejecutamos el comando <code><strong><em>status<\/em><\/strong><\/code>, para verificar que todos los paquetes fueron instalados.<\/li><li>Finalmente verificamos que se han generado dos archivos, el <em><strong>Project.toml<\/strong><\/em> y el <em><strong>Manifest.toml<\/strong><\/em> (incluyen informaci\u00f3n de los paquetes instalados como las dependencias, versiones, compatibilidad, nombres, etc.).<\/li><\/ol>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"514\" height=\"160\" src=\"http:\/\/www.educagis.com\/wpcarlos\/wp-content\/uploads\/2021\/08\/packages_julia-installed.png\" alt=\"\" class=\"wp-image-446\" srcset=\"https:\/\/www.educagis.com\/wpcarlos\/wp-content\/uploads\/2021\/08\/packages_julia-installed.png 514w, https:\/\/www.educagis.com\/wpcarlos\/wp-content\/uploads\/2021\/08\/packages_julia-installed-300x93.png 300w\" sizes=\"auto, (max-width: 514px) 85vw, 514px\" \/><\/figure>\n\n\n\n<p>Es importante resaltar que al contar con  <em><strong>Project.toml + Manifest.toml<\/strong><\/em>, es posible crear una instancia del mismo entorno de paquetes, lo cual es muy \u00fatil para la reproducibilidad.<\/p>\n\n\n<h3 class=\"wp-block-heading\" id=\"importacion-de-datos\">Importaci\u00f3n de datos<\/h3>\n\n\n<p>En Julia tenemos a las extensiones de<em> CSV<\/em>, <em>DataFrames<\/em> y <em>ArchGDAL<\/em> para apoyarnos en la importaci\u00f3n de datos que tenemos en nuestra carpeta de trabajo. Para el caso de archivos en formato CSV podemos emplear el siguiente c\u00f3digo.<\/p>\n\n\n\n<script src=\"https:\/\/gist.github.com\/ccarbajal16\/7cf9f5b272cfebd3ca88574f48a08788.js\"><\/script>\n\n\n\n<p>En el caso que necesitemos trabajar con formatos de tipo <em>GeoJSON<\/em>, emplearemos el paquete <em><a href=\"https:\/\/yeesian.com\/ArchGDAL.jl\/latest\/\" target=\"_blank\" rel=\"noreferrer noopener\">ArchGDAL<\/a><\/em>, que usa la librer\u00eda <em>GDAL<\/em> para trabajar con diversos formatos de datos geoespaciales vectoriales y r\u00e1ster.<\/p>\n\n\n\n<script src=\"https:\/\/gist.github.com\/ccarbajal16\/bd80b72146e74fdae41a278ab9f37c27.js\"><\/script>\n\n\n\n<p>Considerar que el resultado a diferencia del anterior, se incluye una columna con la geometr\u00eda de los datos (<em>wkbPoint<\/em>). Se recomienda ejecutar <code><strong><em>typeof(dat_geo)<\/em><\/strong><\/code> y <code><em><strong>typeof(layer_geo)<\/strong><\/em><\/code>, para conocer los tipos de datos generados.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"560\" height=\"365\" src=\"http:\/\/www.educagis.com\/wpcarlos\/wp-content\/uploads\/2021\/08\/salida1.png\" alt=\"\" class=\"wp-image-447\" srcset=\"https:\/\/www.educagis.com\/wpcarlos\/wp-content\/uploads\/2021\/08\/salida1.png 560w, https:\/\/www.educagis.com\/wpcarlos\/wp-content\/uploads\/2021\/08\/salida1-300x196.png 300w\" sizes=\"auto, (max-width: 560px) 85vw, 560px\" \/><\/figure>\n\n\n\n<p>Para realizar una exploraci\u00f3n a nuestros datos en nuestro <em>Dataframe<\/em> emplearemos la funci\u00f3n <code><strong><em>describe<\/em><\/strong><\/code>, obteniendo una tabla en donde se presenta algunos datos estad\u00edsticos, pero lo que quiero resaltar es la identificaci\u00f3n de datos faltantes en algunas columnas.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"669\" height=\"242\" src=\"http:\/\/www.educagis.com\/wpcarlos\/wp-content\/uploads\/2021\/08\/salida_2.png\" alt=\"\" class=\"wp-image-449\" srcset=\"https:\/\/www.educagis.com\/wpcarlos\/wp-content\/uploads\/2021\/08\/salida_2.png 669w, https:\/\/www.educagis.com\/wpcarlos\/wp-content\/uploads\/2021\/08\/salida_2-300x109.png 300w\" sizes=\"auto, (max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 984px) 61vw, (max-width: 1362px) 45vw, 600px\" \/><\/figure>\n\n\n<h3 class=\"wp-block-heading\" id=\"generando-tablas-en-formato-html\">Generando Tablas en formato HTML<\/h3>\n\n\n<p>Con la finalidad de ir visualizando nuestros resultados tabulares, vamos a generarlos en un formato m\u00e1s amigable como el <em>html<\/em>, para ello empleamos el paquete <em><a rel=\"noreferrer noopener\" href=\"https:\/\/ronisbr.github.io\/PrettyTables.jl\/stable\/\" target=\"_blank\">PrettyTables<\/a><\/em>. Para automatizar la generaci\u00f3n y posterior guardado de nuestras tablas usaremos una funci\u00f3n espec\u00edfica, aunque en su documentaci\u00f3n mencionan el procedimiento para guardar las tablas, para la funci\u00f3n debo reconocer que segu\u00ed las indicaciones mostradas por el canal <em><a rel=\"noreferrer noopener\" href=\"https:\/\/www.youtube.com\/watch?v=5pX1PrM-RvI&amp;list=PLhQ2JMBcfAsjZTA8_jGhz3BVqYgOeyyeu&amp;index=6\" target=\"_blank\">julia for talented amateurs<\/a><\/em>.<\/p>\n\n\n\n<script src=\"https:\/\/gist.github.com\/ccarbajal16\/bbb56c733653067d872a8cd6b15c0f22.js\"><\/script>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"533\" height=\"425\" src=\"http:\/\/www.educagis.com\/wpcarlos\/wp-content\/uploads\/2021\/08\/salida_3.png\" alt=\"\" class=\"wp-image-452\" srcset=\"https:\/\/www.educagis.com\/wpcarlos\/wp-content\/uploads\/2021\/08\/salida_3.png 533w, https:\/\/www.educagis.com\/wpcarlos\/wp-content\/uploads\/2021\/08\/salida_3-300x239.png 300w\" sizes=\"auto, (max-width: 533px) 85vw, 533px\" \/><\/figure>\n\n\n<h3 class=\"wp-block-heading\" id=\"ordenar-los-datos\">Ordenar los datos<\/h3>\n\n\n<p>En Julia podemos ordenar r\u00e1pidamente nuestros datos empleando la funci\u00f3n <strong><em>sort<\/em><\/strong>, el uso de \u00ab<em><strong>!<\/strong><\/em>\u00bb seguido de la funci\u00f3n indica una solicitud para cambiar los datos originales de manera permanente, en otras palabras, es considerado como la versi\u00f3n \u00ab<em>in-place<\/em>\u00ab. De la misma manera vamos a emplear la funci\u00f3n <strong><em>dropmissing<\/em><\/strong> para eliminar los datos faltantes a nuestro <em>Dataframe<\/em>. Ambos resultados ser\u00e1n guardados en <em>html<\/em>.<\/p>\n\n\n\n<script src=\"https:\/\/gist.github.com\/ccarbajal16\/4c5f8a399be802ac34cbe4719a9944a9.js\"><\/script>\n\n\n<h3 class=\"wp-block-heading\" id=\"transformar-los-datos\">Transformar los datos<\/h3>\n\n\n<p>En Julia para realizar una operaci\u00f3n de agrupamiento, primero se debe crear un objeto <em>GroupedDataFrame<\/em> a partir del <em>DataFrame<\/em> empleando la funci\u00f3n <strong><em>groupby<\/em><\/strong>. La funci\u00f3n toma dos argumentos, el mismo <em>DataFrame<\/em> y un conjunto de columnas para agrupar. Luego se puede aplicar a cada grupo las funciones <strong><em>Combine<\/em><\/strong>, <em><strong>Select<\/strong><\/em> y <em><strong>Transform<\/strong><\/em>. En nuestro caso vamos a usar el primero, siendo muy \u00fatil para calcular estad\u00edsticas resumidas por grupo. Mayor detalle sobre la opciones de dichas funciones lo pueden encontrar <a rel=\"noreferrer noopener\" href=\"https:\/\/dataframes.juliadata.org\/stable\/lib\/functions\/#Grouping\" target=\"_blank\">aqu\u00ed<\/a>.<\/p>\n\n\n\n<script src=\"https:\/\/gist.github.com\/ccarbajal16\/8a1011d6c7f90da6bd3444315fe35191.js\"><\/script>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"512\" height=\"403\" src=\"http:\/\/www.educagis.com\/wpcarlos\/wp-content\/uploads\/2021\/08\/salida_4.png\" alt=\"\" class=\"wp-image-455\" srcset=\"https:\/\/www.educagis.com\/wpcarlos\/wp-content\/uploads\/2021\/08\/salida_4.png 512w, https:\/\/www.educagis.com\/wpcarlos\/wp-content\/uploads\/2021\/08\/salida_4-300x236.png 300w\" sizes=\"auto, (max-width: 512px) 85vw, 512px\" \/><\/figure>\n\n\n\n<p>Como podemos apreciar en nuestro \u00faltimo resultado, no existe una columna que enumere las filas, por lo tanto, vamos a crear una columna \u00edndice, de la misma manera, al crear la columna en donde se sumaron los valores de poblaci\u00f3n por distrito (<em>name<\/em>) y se identificaron los valores \u00fanicos (<em>pe_ubigeo<\/em>), por defecto se nombraron dichas columnas, en nuestro caso vamos a modificar los encabezados empleando la funci\u00f3n <em><strong>rename<\/strong><\/em>. Tambi\u00e9n vamos a convertir  la \u00faltima columna para que represente un valor de tipo <em>String<\/em> y finalmente el resultado lo guardaremos en un archivo con formato <em>CSV<\/em>.<\/p>\n\n\n\n<script src=\"https:\/\/gist.github.com\/ccarbajal16\/5c7a4659ced0d6013fbd3c2f87813437.js\"><\/script>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"416\" height=\"348\" src=\"http:\/\/www.educagis.com\/wpcarlos\/wp-content\/uploads\/2021\/08\/salida_5.png\" alt=\"\" class=\"wp-image-458\" srcset=\"https:\/\/www.educagis.com\/wpcarlos\/wp-content\/uploads\/2021\/08\/salida_5.png 416w, https:\/\/www.educagis.com\/wpcarlos\/wp-content\/uploads\/2021\/08\/salida_5-300x251.png 300w\" sizes=\"auto, (max-width: 416px) 85vw, 416px\" \/><\/figure>\n\n\n<h3 class=\"wp-block-heading\" id=\"uso-de-macros\">Uso de Macros<\/h3>\n\n\n<p>Sobre herramientas de metaprogramaci\u00f3n para DataFrames, Julia a trav\u00e9s de los denominados macros presentes gracias al paquete <em><a rel=\"noreferrer noopener\" href=\"https:\/\/juliadata.github.io\/DataFramesMeta.jl\/stable\/\" target=\"_blank\">DataFramesMeta<\/a><\/em>, nos brinda la oportunidad de contar con una sintaxis m\u00e1s conveniente. En esta oportunidad exploraremos una de sus bondades como por ejemplo el uso de filtros y tambi\u00e9n opciones que tenemos para encadenar procesos (uso de operadores \u00ab<em>Pipe<\/em>\u00ab). En posteriores entradas profundizar\u00e9 estos temas con otros paquetes, por ahora solo es un ejemplo b\u00e1sico pero muy \u00fatil.<\/p>\n\n\n\n<script src=\"https:\/\/gist.github.com\/ccarbajal16\/07927f9d6f8a1f8ddde08372c0381146.js\"><\/script>\n\n\n<h3 class=\"wp-block-heading\" id=\"incorporando-tablas-a-nuestro-mapa\">Incorporando tablas a nuestro mapa<\/h3>\n\n\n<p>Como punto adicional, quisiera mostrarles la ventaja que tenemos ante la posibilidad de incorporar tablas en formato <em>html<\/em> a nuestro compositor de mapas en el QGIS. A continuaci\u00f3n se muestra una imagen como ejemplo.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-resized\"><a href=\"http:\/\/www.educagis.com\/wpcarlos\/wp-content\/uploads\/2021\/08\/map2_qgis.png\" target=\"_blank\" rel=\"noopener noreferrer\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.educagis.com\/wpcarlos\/wp-content\/uploads\/2021\/08\/map2_qgis-1024x724.png\" alt=\"\" class=\"wp-image-460\" width=\"512\" height=\"362\" srcset=\"https:\/\/www.educagis.com\/wpcarlos\/wp-content\/uploads\/2021\/08\/map2_qgis-1024x724.png 1024w, https:\/\/www.educagis.com\/wpcarlos\/wp-content\/uploads\/2021\/08\/map2_qgis-300x212.png 300w, https:\/\/www.educagis.com\/wpcarlos\/wp-content\/uploads\/2021\/08\/map2_qgis-768x543.png 768w, https:\/\/www.educagis.com\/wpcarlos\/wp-content\/uploads\/2021\/08\/map2_qgis-1200x848.png 1200w, https:\/\/www.educagis.com\/wpcarlos\/wp-content\/uploads\/2021\/08\/map2_qgis.png 1280w\" sizes=\"auto, (max-width: 512px) 85vw, 512px\" \/><\/a><\/figure>\n\n\n<h2 class=\"wp-block-heading\" id=\"reflexion-final\">Reflexi\u00f3n Final<\/h2>\n\n\n<p>Considero que lo presentado hasta el momento nos puede dar una idea del gran potencial que tenemos al manejar nuestros datos empleando algunos paquetes de Julia. Para quienes ya tienen conocimiento de Python y R, se habr\u00e1n fijado cierta similitud, incluso al leer la documentaci\u00f3n de los paquetes de Julia, algunos de ellos fueron inspirados en dichos lenguajes. Si llegaron hasta aqu\u00ed espero que haya despertado el inter\u00e9s en el uso de Julia, porque como dije, esto solo es el inicio de un grupo de entradas en donde me dedicar\u00e9 a explorar otros paquetes que nos permitan realizar otro de los procesos importantes como la visualizaci\u00f3n.<\/p>\n\n\n\n<p>Para quienes deseen probar todo lo visto hasta el momento, se ha generado un repositorio en donde se comparte todo el c\u00f3digo y el proyecto de QGIS para visualizar el mapa. <a href=\"https:\/\/github.com\/ccarbajal16\/IntroDataScience\" target=\"_blank\" rel=\"noreferrer noopener\">https:\/\/github.com\/ccarbajal16\/IntroDataScience<\/a>. <\/p>\n\n\n\n<p>Tambi\u00e9n comparto un video elaborado sobre el procedimiento seguido.<\/p>\n\n\n\n<figure class=\"wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio\"><div class=\"wp-block-embed__wrapper\">\n<iframe loading=\"lazy\" title=\"Ciencia de datos con Julia - Parte 1\" width=\"840\" height=\"473\" src=\"https:\/\/www.youtube.com\/embed\/GFEmkUBQZxU?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen><\/iframe>\n<\/div><\/figure>\n","protected":false},"excerpt":{"rendered":"<p>Introducci\u00f3n En esta oportunidad iniciare una serie de entradas ligadas a la ciencia de datos empleando el lenguaje Julia, siendo una importante motivaci\u00f3n la posibilidad de explorar una alternativa que me permite analizar distintos tipos de datos, siendo mi especial inter\u00e9s aquellos que tienen el componente espacial. En los \u00faltimos meses le estuve dedicando tiempo &hellip; <a href=\"https:\/\/www.educagis.com\/wpcarlos\/2021\/08\/02\/introduccion-a-la-ciencia-de-datos-con-julia-parte-1\/\" class=\"more-link\">Continuar leyendo<span class=\"screen-reader-text\"> \u00abIntroducci\u00f3n a la ciencia de datos con Julia-Parte 1\u00bb<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_bbp_topic_count":0,"_bbp_reply_count":0,"_bbp_total_topic_count":0,"_bbp_total_reply_count":0,"_bbp_voice_count":0,"_bbp_anonymous_reply_count":0,"_bbp_topic_count_hidden":0,"_bbp_reply_count_hidden":0,"_bbp_forum_subforum_count":0,"footnotes":""},"categories":[5],"tags":[18,7],"class_list":["post-415","post","type-post","status-publish","format-standard","hentry","category-development_gis","tag-julia","tag-qgis"],"_links":{"self":[{"href":"https:\/\/www.educagis.com\/wpcarlos\/wp-json\/wp\/v2\/posts\/415","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.educagis.com\/wpcarlos\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.educagis.com\/wpcarlos\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.educagis.com\/wpcarlos\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.educagis.com\/wpcarlos\/wp-json\/wp\/v2\/comments?post=415"}],"version-history":[{"count":36,"href":"https:\/\/www.educagis.com\/wpcarlos\/wp-json\/wp\/v2\/posts\/415\/revisions"}],"predecessor-version":[{"id":492,"href":"https:\/\/www.educagis.com\/wpcarlos\/wp-json\/wp\/v2\/posts\/415\/revisions\/492"}],"wp:attachment":[{"href":"https:\/\/www.educagis.com\/wpcarlos\/wp-json\/wp\/v2\/media?parent=415"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.educagis.com\/wpcarlos\/wp-json\/wp\/v2\/categories?post=415"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.educagis.com\/wpcarlos\/wp-json\/wp\/v2\/tags?post=415"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}