top of page
Search

La evolución de la COVID-19 en España día a día - Dashboard en Power BI

  • Writer: Antonio Romero Camacho
    Antonio Romero Camacho
  • Apr 26, 2021
  • 10 min read

En este nuevo post se muestran las capacidades de la herramienta de visualización Microsoft Power BI a través de la generación de un dashboard similar al que utilizan en los diferentes medios de comunicación digitales para comunicar datos sobre la pandemia.

Si necesitas mostrar las métricas claves de tu negocio en tiempo real, mediante informes que vayan más allá de lo que puede dar Excel y que te permitan hacer cuadros de mando a tu medida entonces, Power BI puede ser la herramienta para conseguirlo, por lo que te invito a continuar leyendo el post.


Esta entrada no se centrará sólo en Power BI. Ya que en el último post comenzamos a introducir nociones sobre SQL, en esta nueva publicación continuaremos adentrándonos en el lenguaje SQL mediante la introducción del concepto de JOIN, que será necesario en este caso para complementar los datos principales de este estudio.


Los datos están al alcance de todos, ¡qué no te lo cuenten, hazlo tu mismo y saca tus propias conclusiones!.


1. ¿Qué es Power BI?


Actualmente existen muchas herramientas de Business Intelligence (BI) en el mercado pero hay una que destaca por encima del resto.


Así lo recoge el Cuadrante Mágico de Gartner, el informe más prestigioso del sector en el que, a fecha de Febrero de 2021, Power BI se ha consolidado como el líder del mercado por décimo cuarto año consecutivo.

Figura 1. Cuadrante Mágico de Gartner (Fuente: Gartner)

Power BI es una herramienta de análisis empresarial desarrollada por Microsoft que permite al usuario conectar, analizar y visualizar los datos de su negocio aportándole información relevante que no está disponible a simple vista.

¿Por qué esta plataforma de Business Intelligence de Microsoft se ha convertido en una gran referencia en el mercado del Big Data?. En general por su eficiencia en el trabajo con altos volúmenes de datos, sus posibilidades de personalización y su gran abanico de opciones de visualización.


Microsoft Power BI permite crear visualizaciones de manera completamente intuitiva, ofreciendo una usabilidad excelente para los usuarios de negocio que se complementa con un completo entorno de desarrollo para que los administradores de BI y programadores puedan personalizar la solución a medida del cliente.


El primer tramo de Power BI (Power BI Desktop) es completamente gratuito y permite contactarse a cientos de orígenes de datos, prepararlos, crear informes y, finalmente, publicarlos en la app de Power BI a la se tiene acceso desde cualquier dispositivo con conexión a internet.


Si la versión Desktop se te queda corta puedes hacer un upgrade a Power BI Pro, que incluye mejoras como mayor frecuencia de refresco de datos, creación de espacios colaborativos, mejores medidas de seguridad y mayor almacenamiento de información. Un sistema de información ágil y actualizado a precio razonable por usuario y mes.


2. Fuentes de datos


Para este trabajo se han utilizado dos fuentes de datos principales:

  • Ministerios de Sanidad, Consumo y Bienestar Social del Gobierno de España: Dentro del apartado dedicado a "enfermedad por nuevo coronavirus, COVID 19" están accesibles los datos diarios de nuevos contagios detectados mediante los distintos test a nivel de provincia. Estos datos se vienen reportando desde Enero de 2020 hasta el momento actual. El nombre de este dataset es casos_tecnica_provincia.csv. Las columnas de interés para el dashboard que queremos generar son: provincia_iso (que contiene el código ISO de la provincia en cuestión), num_casos (que contiene el número de casos totales registrados por provincia para una fecha concreta) y la fecha.

Figura 2. Tabla de datos dataset casos_tecncia_provincia.csv
  • Wikipedia: Contiene un Anexo sobre Provincias y Ciudades de España que resulta de gran utilidad en este caso para extraer información sobre la población de cada una de las provincias presentes en el dataset de casos por COVID-19. El nombre de este dataset es prov.csv. De este dataset nos interesan las tres columnas: ISO (código ISO de la provincia en cuestión), Provincia (nombre de la provincia) y Población (número de habitantes por provincia).

Figura 3. Tabla de datos dataset prov.csv

3. Preparación de los datos


Antes de introducir los datos en Power BI vamos a juntar ambas tablas haciendo uso del lenguaje SQL. Podríamos hacerlo con Python pero como hace unas semanas comenzamos a introducir nociones sobre SQL he considerado interesante potenciar esa opción.


En este caso vamos realizar una reunión interna por la izquierda o lo que es lo mismo, un LEFT JOIN. De este modo expresamos el deseo de considerar todos los registros (filas) de la tabla izquierda (que será la del dataset casos_técnica_provincia.csv) aunque no se hallaran coincidencias con la otra tabla (la del dataset prov.csv).


Las coincidencias se harán a través de los campos provincias_iso de la tabla izquierda y el campo ISO de la tabla derecha.


A continuación se muestra la consulta SQL que hemos formulado al Gestor de Bases de Datos:


SELECT D.provincia_iso AS ISO, C.Provincia , C.Poblacion , D.fecha , D.num_casos

FROM casos_tecnica_provincia_csv D LEFT JOIN prov_csv C

ON D.provincia_ISO = C.ISO



En ella le solicitamos que:

  • Seleccione y muestre los campos provincia_iso, fecha y num_casos de la tabla casos_tecnica_prov_csv (a la que llamaremos C) siempre (por estar a la izquierda del LEFT JOIN)

  • Y los campos Provincia y Poblacion de la tabla prov_csv cuando haya coincidencia de las columnas provincia_iso e ISO

  • En los casos en los que no haya coincidencia se mostraran los campos seleccionados de la tabla izquierda (casos_tecnica_prov_csv) mientras que los campos referentes a la tabla derecha (prov_csv) aparecerán vacíos (no se va a dar el caso en esta ocasión)

El resultado de la consulta es el siguiente. Vemos que ahora tenemos toda la información: El código de la provincia, su nombre, la población, la fecha y el número de casos. Ahora estamos listos para comenzar a trabajar en la visualización de los datos.

Figura 4. casos_tecnica_prov_csv LEFT JOIN prov_csv (SQL)

Los resultados de la consulta se exportaron a un nuevo archivo CSV para su importación en Power BI.


4. Visualización en Power BI


En la imagen se muestra el dashboard generado con la herramienta Power BI. El reporte muestra información sobre la evolución del coronavirus en España en base al principal indicador presente en el dataset: número de casos positivos registrados mediante cualquiera de los tests homologados. Añadimos algunas cifras para reflejar mejor la situación actual (a lo largo de esta sección se explicarán más en detalle). El mapa compara los datos entre provincias y los gráficos de líneas representan la evolución en el número de casos diarios en cada una de las provincias. Se incluye una tabla para recoger de forma ordenada los valores con los que se está trabajando y un medidor radial para representar gráficamente el número de personas afectadas por la COVID-19 en el periodo de tiempo seleccionado por el usuario.

Figura 5. Dashboard COVID-19 en Power BI

Como consejo, si intentáis hacer un gráfico como el del mapa con datos geolocalizados y no tenéis la información de latitud y longitud es recomendable que os creéis una nueva columna que incluya el nombre del país seguido de una coma y el nombre de la provincia (por ejemplo: España,Ciudad Real). De esta manera os evitáis que ponga la información de Zaragoza en Colombia. Esa nueva columna podéis crearla directamente en Power Bi de la siguiente forma:

Figura 6. Columna localización para evitar problemas de geolocalización en el mapa

A continuación se describen en detalle los distintos elementos que componen el dashboard:

  • Slicer Provincia: Es un selector que permite elegir una o varias provincias para filtrar sus datos del dataset conjunto. Para generarlo sería necesario seleccionar un Slicer como visualización y seleccionar el campo Provincia como Field. Este filtro estará activo para todas las gráficas que aparezcan en la misma página de informe. Para seleccionar varias provincias simultáneamente mantendremos pulsada la tecla CONTROL al mismo tiempo que hacemos la selección con el ratón.

Figura 7. Slicer selector de provincia
  • Slicer periodo de monitorización: Es un filtro que permite seleccionar el rango de datos temporal de interés para el usuario. Para generarlo sería necesario seleccionar un Slicer como visualización y fijar el campo fecha como Field. La selección se puede hacer pinchando en los cuadros de fecha y marcando los días con el ratón o moviendo las bolas de la barra que aparece en la parte inferior (bola izquierda para comienzo y derecha para el fin del periodo de monitorización).Este filtro estará activo para todas las gráficas que aparezcan en la misma página de informe.

Figura 8. Slicer selector de fecha
  • Card número de casos confirmados: indicador numérico que muestra el número total de casos confirmados por test en las fechas y las provincias seleccionadas. Simplemente hay que seleccionar una visualización tipo Card y añadir como campo la columna num_casos. Para mostrar el resultado con un decimal hay que dirigirse a la pestaña Format del card y pinchar en Data Label. En el desplegable pondremos el campo Value decimal places a 1. En la imagen se muestran los casos totales para todas las provincias de España a fecha de 22 de Abril de 2021.

Figura 9. Card número de casos confirmados
  • Card número de días monitorizados: indica el número de días que estamos considerando para realizar el estudio. Esta ligado al campo fecha (aunque no lo utiliza directamente) y por tanto cambiará a medida que modifique el slicer del periodo de monitorización. Cuando digo que está ligado con el campo fecha pero no es ese exactamente me refiero a que hemos tenido que calcular un nuevo "campo calculado" o New Measure (nomenclatura de Power BI). Este campo calculado se determinará mediante la siguiente fórmula:

Número de días Monitorizados = DISTINCTCOUNT(Sheet1[Fecha])

Es decir, considerando las fechas seleccionadas con el slicer, cuenta las fechas de la

columna fecha que son distintas. Recordemos que no podemos contar directamente registros

porque una misma fecha se repite tantas veces como provincias tenemos. A continuación se

muestra el valor del card cuando las fechas se seleccionan entre el 1 de Enero de 2020 y el

20 de Abril de 2021.

Figura 10. Entre el 1/1/2020 y el 20/04/2021

Cuando cambiamos la fecha final al 8 de Septiembre de 2020 vemos que el indicador del

card se reduce a 222 días.

Figura 11. Entre el 1/1/2020 y el 8/9/202
  • Card Porcentaje de Población contagiada: Este indicador muestra el valor porcentual de población que ha registrado un positivo en el resultado de alguno de los tests. El card se ha asociado al campo Porcentaje Población Contagiada, que es un nuevo campo calculado a partir de las columnas originales del dataset. En principio, simplemente sería necesario dividir el número total de casos confirmados (num_casos) entre la población total de las provincias seleccionadas en el slicer para obtener el porcentaje. Sin embargo, tenemos que tener en cuenta el número de días de monitorización, porque si hiciéramos el total de población estaríamos sumando la población de cada provincia tantas veces como días dure el periodo. Por ello, hay que dividir entre el campo calculado Número de días de monitorización (véase explicación gráfica de la división del porcentaje entre los días de monitorización). Es importante no perder de vista la forma en la que tenemos los datos en nuestras tablas.

Figura 12. Explicación del campo calculado Porcentaje Población Contagiada

El nuevo campo calculado seguiría la siguiente fórmula:


Porcentaje Población Contagiada = SUM(Sheet1[Número de Casos Confirmados])/SUM(Sheet1[Población])/Sheet1[Número de días Monitorización]


  • Mapa: El mapa representará las localizaciones de los registros presentes en el dataset. Además de indicar las posiciones geográficas refleja la severidad con la que la COVID-19 ha afectado a esa provincia durante el periodo de monitorización seleccionado. La severidad viene dada por el radio de la burbuja (cuanto mayor sea el radio mayor es la severidad). Para realizar una representación de este tipo, seleccionamos la visualización tipo mapa y añadimos la columna localización (país + provincia) al campo Location de la pestaña Fields. En el campo Size, se añade la variable que modificará el tamaño de la burbuja (Número de Casos Confirmados). Tras seguir este proceso se obtienen gráficos similares al que se muestra:

Figura 13. Número de casos confirmados para todas las provincias del dataset

¿Qué ocurre si seleccionamos un par de provincias en el slicer Provincia?. El mapa sólo

mostrará los resultados para esas dos provincias y será más clara la comparación entre el

número de casos confirmados en ambas durante el mismo periodo. En la imagen siguiente

se comparan los resultados de Madrid y Ciudad Real. Como es lógico, las cifras de Madrid

son mucho mayores pues su población es mayor.

Figura 14. Comparación del número de casos total en Madrid y Ciudad Real

Si quisieramos comparar en términos normalizados para ver cúal de las dos provincias se ha

visto más afectada por la pandemia, sería más conveniente fijarse en el card individual de

Porcentaje de Población Contagiada. Si le hacemos la consulta al dashboard vemos que en

Madrid un 9.76% de la población se ha contagiado de COVID mientras que en Ciudad

Real el porcentajes es algo menor (8.90%).


Este gráfico incluye un tooltip que se despliega al pasar el ratón sobre cada una de las

burbujas. El tooltip refleja las magnitudes representadas, es decir, localización y número de

contagiados.

Figura 15. Información del tooltip para Ciudad Real
  • Gráfico de Línea: representa la evolución en el número de casos diarios detectados por provincia. Cada línea es una de las provincias presentes en el dataset. De un vistazo identificamos que los mayores casos diarios los reportan Madrid (línea verde oscura) y Barcelona (línea azul turquesa). También se aprecia como Barcelona alcanzó el pico de la segunda ola un mes más tarde que Madrid.

Figura 16. Gráfico de tendencia del número de casos diarios por provincia (todas las provincias)

Para generar el gráfico fiijaremos la columna Fecha como la variable a representar en el eje

de abcisas, la variable Provincia como el campo leyenda y el Número de Casos

Confirmados como Values. Power BI establece una jerarquía automática sobre el campo

fecha que tendremos que desactivar para que los datos se muestren tal y como en la figura

16. Para ello deshabilita la opción Date Hierarchy en el campo Fecha.


Los slicers siguen aplicando sus filtros a este gráfico. Así, si seleccionamos Madrid y

Barcelona como provincias y el periodo de tiempo que ocupó la Primera Ola de la

pandemia (hasta Junio de 2020) obtenemos el siguiente gráfico.

Figura 17. Evolución de la pandemia en Madrid y Barcelona hasta Junio de 2020

El tooltip de este gráfico se activa de la misma forma, pasando el ratón por encima de las

líneas representadas. En este caso nos indicaría, con la leyenda de colores, el número de

casos reportados en el día donde hemos posado el puntero del ratón para Barcelona y

Madrid respectivamente. El máximo número de casos hasta Junio de 2020 lo registró

Madrid el 20 de Marzo, con 3212 casos en un día.

Figura 18. Tooltip del gráfico de líneas
  • Tabla de datos: La tabla muestra los datos del dataset original para la selección de provincias y fechas realizada. Para generarla hay que seleccionar una visualización tipo tabla (Table) e incluir en el campo Values las columnas que queremos mostrar. Para este caso se han seleccionado los campos Fecha, Provincia y Número de Casos Confirmados por día. A continuación, aparecen los resultados para Madrid y Barcelona durante los días 21, 22 y 23 de Abril de 2020.

Figura 19. Visualización de datos en formato tabla
  • Medidor radial: representa con un semicírculo gris el total de población en las provincias seleccionadas. En rojo marca el número de personas confirmadas como positivas en el periodo seleccionado. Para generar este gráfico es necesario seleccionar un gráfico tipo Gauge incluyendo como Value el Número de Casos Confirmados y como Maximum Value un nuevo campo calculado al que hemos llamado Población Máxima. Este campo calculado se determina de la siguiente forma:

Población Máxima = SUM(Sheet1[Poblacion])/Sheet1[Número de días Monitorizados]


Figura 20. Total de habitantes positivos en COVID en España

Si hubieramos seleccionado sólo la provincia de Madrid en el slicer hubiéramos obtenido el

número de positivos en Madrid desde el principio de la pandemia. Fíjese en que el valor

máximo del semicírculo ha pasado de 48 millones a 7 millones (aproximando hacia arriba),

que es la población de la provincia de Madrid. El número de casos se ha actualizado y

concuerda con los valores reportados por otras fuentes.


Figura 21. Total de habitantes positivos en COVID en Madrid

Conclusión


Y hasta el contenido de este post. En este artículo hemos aprendido como unificar datos de dos tablas diferentes para generar un dataset que permita generar visualizaciones como la que aquí hemos comentado. En este caso lo hemos realizado con SQL por seguir con el lenguaje que mostramos en el post anterior. También podríais haberlo hecho con Python pandas y conseguir el mismo resultado. Espero que os haya gustado y como siempre, quedo a vuestra disposición para contestar a cualquier pregunta que os pueda surgir.


































 
 
 

Comments


bottom of page