Rstats + Shiny + Leaftlet -> Mapas interactivos muy sencillos

Entrada en la que os mostraré como hacer un mapa con Leaflet en R que además añadimos a un Shiny para poder filtrar datos de forma interactiva. Ya mostramos en el blog como crear mapas marcando coordenadas con Leaflet y R de forma muy sencilla y hoy damos una vuelta de tuerca a aquella entrada, las coordenadas que deseamos representar tienen además, algún factor por el que hay especial interés en realizar un filtrado del mapa. Para ilustrar el ejemplo nos vamos a ir al Centro de descargas del Centro Nacional de Información Geográfica y nos bajamos del servidor los datos municipales en concreto a Nomenclátor Geográfico de Municipios y Entidades de Población, descargamos el archivo y tenemos un zip que contiene un csv llamado MUNICIPIOS.CSV

Trabajando con R y Julia desde RStudio

Muchas veces pienso que no es R es RStudio. Por eso hoy traigo unas líneas para ilustrar el uso de Julia en R markdown y poder elaborar vuestros documentos y vuestra documentación con RStudio. Todo el trabajo se articula entorno a la librería JuliaCall y se fundamenta en el uso de markdown donde usaremos indistintamente R o Julia. Todo comienza con un chunk de R:

```{r}
#install.packages("JuliaCall")

library(JuliaCall)
julia_setup()


Instalamos el paquete y “suponemos” que hemos instalado Julia, de este modo, nada más cargar JuliaCall pondremos julia_setup() y ya dispondremos de nuestro entorno de Julia. Una vez ejecutados estos pasos en R ya podemos trabajar con algún chunk de Julia y con código conocido:

```r
```{julia}
using CSV
using DataFrames
using HTTP

url=https://raw.githubusercontent.com/mwaskom/seaborn-data/master/penguins.csv
res = HTTP.get(url)
penguins = DataFrame(CSV.File(res.body))


Destacar que no tenemos una integración en RStudio tan chula como la que hay con reticulate donde disponemos del entorno Python y del entorno R para navegar por nuestros objetos. Esta situación hace que el ahora escribiente (por ejemplo) realice el trabajo en Visual Code y posteriormente lleve esos códigos a Markdown. Si visitáis la ayuda de JuliaCall podréis ver todas las posibilidades que tenemos para mover objetos y funciones, para ilustrar este paso de objetos de un entorno a otro os traigo un pase de un data frame de R a Julia:

```r
```{r}
data("iris")
iris <- julia_assign("iris", iris)


La función julia_assign es la que nos permite mover data frames y ya podemos usarlo en Julia:

```r
```{julia}
using StatsPlots
boxplot(iris.Sepal_Width)


Y por supuesto el camino inverso, pasar un data frame de Julia a R:

```r
```{r}
penguins <- julia_eval("penguins")


Aquellos que usamos RStudio para casi todo ya no tenemos escusa para emplear Julia, aunque veremos que pasa con Visual Code.

Obtener las coordenadas de una dirección con R y la API de Google Earth

Obtener coordenadas desde la API de Google Maps a partir de una dirección consiste en realizar la petición a la API y obtener un json pero tenemos la suerte de contar con R y ese proceso le podemos hacer de forma más sencilla e incluso le podemos tabular. En realidad son 4 líneas de código pero es posible que a alguien le sean de utilidad. Lo primero es disponer de un proyecto en la Google Cloud Plattform si ya lo tenemos lo que necesitamos es autorizar a este proyecto a acceder a la API de Google Maps, para ello yo he usado este enlace y he habilitado la Geocoding API, la que vamos a usar para la consulta de la dirección.

Gráficos Básicos con Julia

De forma análoga a otras entradas sobre análisis gráficos básicos empezamos a trabajar con las posibilidades gráficas del lenguaje Julia. A continuación se recogerán el 80% de los gráficos que un científico de datos realizará en su vida profesional, el 20% restante se abordará en otras entradas. Emplearemos el conjunto de datos penguins para ilustrar los ejemplos:

using CSV
using DataFrames
using HTTP

url="https://raw.githubusercontent.com/mwaskom/seaborn-data/master/penguins.csv"
res = HTTP.get(url)
penguins = DataFrame(CSV.File(res.body))

En esta entrada se emplearán las librerías Plots y StatsPlots que podremos instalar con:

Primeros pasos con Julia. Importar un csv y data management básico con un data frame

Empiezo a trabajar con el lenguaje Julia ante la insistencia de JL Cañadas. Lo primero es comentar que este trabajo está hecho en Julia 1.6.2 con una máquina Ubuntu 18, para instalar Julia en Ubuntu:

  • Descarga de Julia
  • tar -xvzf julia-1.6.2-linux-x86_64.tar.gz
  • sudo cp -r julia-1.6.2 /opt/
  • sudo ln -s /opt/julia-1.6.2/bin/julia /usr/local/bin/julia

Una vez instalado he valorado los posibles IDE, parece ser que VS Code es lo más apropiado pero en mi caso particular tengo un problema con él. He optado por usarlo en Jupyter (lo sé) y para ello es necesario abrir julia en el terminal y poner:

Gráficos descriptivos básicos con Seaborn Python

Revisión de los gráficos más habituales que realizaremos en labores descriptivas de variables con Python, se emplea seaborn para ilustrar estos ejemplos. El tipo de gráfico dependerá del tipo de variable que deseamos describir e incluso del número de variables que deseamos describir Como aproximación inicial describiremos variables cuantitativas o variables cualitativas análisis univariables o análisis bivariables. Se trabaja con el conjunto de datos iris:

import seaborn as sns
import pandas as pd
import numpy as np
import io
import requests

url='https://raw.githubusercontent.com/uiuc-cse/data-fa14/gh-pages/data/iris.csv'
s=requests.get(url).content
df=pd.read_csv(io.StringIO(s.decode('utf-8')))
df.head()

Análisis univariables

Variables cuantitativas

Cuando describimos variables cuantitativas lo principal es conocer su forma, sobre que valores se hayan los datos y como son de dispersos y para ello el gráfico estrella es el histograma:

Medidas dinámicas con Power BI

Se abre una nueva categoría en el blog dedicada al uso de herramientas para la elaboración de cuadros de mando y dashboard. En esta primera entrega trabajaremos con Power B I y la creación de medidas dinámicas para ver en un mismo gráfico una medida u otra en función de una segmentación. No es una labor «inmediata» por ello he preferido ilustrar el trabajo con un vídeo donde, de forma velada, se pueden intuir mejoras y trucos a aplicar.

Nueva convocatoria del programa Máster en Big Data y Data Science de la UNED

Está abierta la convocatoria para 2022 del programa modular en Big Data y Data Science aplicados a la economía y a la administración y dirección de empresas:

https://www.masterbigdataonline.com/

Por supuesto, además de recomendar el propio programa os recomiendo el módulo específico de seguros donde trabajamos como un modelo no sólo crea segmentos, explica un problema y sus parámetros nos sirven para crear precios en entornos regulados.

Leaflet con R. Apuntes de mapas de coordenadas

Estoy desarrollando cosas muy interesantes con leaftlet en R y quería poner unos breves apuntes por si a alguien le sirvieran. En Stackoverflow y otras webs al uso tenéis mucha más ayuda y código de mayor interés pero en pocas líneas espero sentar las bases de uso de leaflet. Para ilustrar el ejemplo me he descargado unos datos de datos.gob con las coordenadas de los parques de bomberos de Madrid Capital, la idea es representar estos puntos en un mapa. Lo primero es descargar los datos y ponerlos en una ubicación de nuestro equipo:

Transponer data frames con R. De filas a columnas y de columnas a filas

Entrada para recordar como transponer data frames con R, como pasar de n filas a n columnas manteniendo campos identificativos y como pasar de columnas a filas y crear un campo identificativo. Siento que últimamente más que un blog tengo un cuaderno de apuntes pero si estos apuntes pueden ayudar a alguien mejor. En realidad la entrada es un ejemplo ilustrativo de las funciones de tidy pivot_wider y pivot_longer.

Pasar de filas a columnas

#install.packages("palmerpenguins")

library(palmerpenguins)

agregado_especies <- penguins %>% group_by(species, year) %>% summarise(bill_depth_mm=mean(bill_depth_mm, na.rm=T)) %>% pivot_wider(names_from = year, values_from = bill_depth_mm, names_prefix = “ANIO_”)

Animación de un mapa con Python. Porcentaje de vacunas administradas

Las animaciones con Python que mostramos hoy, al final, son animaciones con Image Magick pero esta entrada es un ejemplo de como podemos usar Python para la creación de gráficos que posteriormente generarán esa animación con las instrucciones concretas de Imagemagick (que tiene que estar instalado). La idea es realizar un mapa animado con el porcentaje de vacunas de COVID administradas.

Obtención de datos

Los datos los descargamos directamente del github de datadista.

Incluir subplot en mapa con ggplot

Se ha trabajado un mapa de España con ggplot al que podemos añadir subplot en función de unas coordenadas, en este caso es un mapa de España que incluye gráficos de líneas para cada Comunidad Autónoma, vamos a representar el exceso de mortalidad que está suponiendo la pandemia por COVID, un dato que se puede seguir con MoMo del ISCIII . Los que seguidores el blog ya conocen una entrada en la que se escribió sobre la inclusión de pie chart en mapas con R esta entrada supone ir un paso más allá.

Truco Excel. Repetir celdas en función de los valores de otra celda

En alguna ocasión me habéis planteado como repetir celdas en Excel en función del valor de una celda, es decir, repetir una celda tantas veces como nos indica otra celda. Disponía de una versión con fórmulas más complejas que programar el proceso en visual basic, si alguien está interesado cuelgo un ejemplo en Excel sin describir el funcionamiento porque es muy complejo, quizá en el futuro retome esas fórmulas e intente simplificar el proceso. Hoy os traigo esta tarea de repetir celdas en Excel en base a otra celda pero insertando y usando fórmulas sencillas. Para el ejemplo partiríamos de esta situación: