Source

A team of researchers from Spain presented an interactive map: deim.urv.cat/~alephsys/COVID-19/spain/en/. And since their numerical data is freely available to everyone as an excel file I decided to take it a look in a Mathematica notebook. The following is the exploration I made with GeoGraphics using their estimated propagation risk of COVID-19 by local contact in Spain (14 - 18 March).

Importing the raw data

In[]:=
path=NotebookDirectory[];
In[]:=
rawdata14t18=Import["https://deim.urv.cat/~alephsys/COVID-19/spain/resources/Risk_Municipio_2020_03_14-18.xlsx"]
Out[]=
{{{,% Riesgo SARS-CoV-2,,,,},
⋯7156⋯
,{Zucaina,1.×
-7
10
,1.×
-7
10
,1.×
-7
10
,1.×
-7
10
,1.×
-7
10
}}}
large output
show less
show more
show all
set size limit...
In[]:=
dates=rawdata14t18[[1,2,2;;]]
Out[]=

Sat 14 Mar 2020 00:00:00GMT+1.
,
Sun 15 Mar 2020 00:00:00GMT+1.
,
Mon 16 Mar 2020 00:00:00GMT+1.
,
Tue 17 Mar 2020 00:00:00GMT+1.
,
Wed 18 Mar 2020 00:00:00GMT+1.


Data Curation

Propagation risk time series:
In[]:=
ts1418=ParallelMap[#[[1]]->TimeSeries[#[[2;;6]],{dates}]&,rawdata14t18[[1,3;;]]];

Interpreter[Restricted[“City”,Entity[“Country”,”Spain”]]][“municipality”]

In order to get Wolfram’s city interpreter working properly I removed diacritics and other language variants:
In[]:=
cleanNames1=RemoveDiacritics/@​​Map[StringRiffle@Reverse[StringSplit[#,", "]]&,​​Map[StringSplit[#,"/"][[-1]]&,​​Map[StringReplace[#,"-"" "]&,rawdata14t18[[1,3;;,1]]]]];
In[]:=
cleanNames1
In[]:=
cleanNames2=RemoveDiacritics/@​​Map[StringRiffle@Reverse[StringSplit[#,", "]]&,​​Map[StringSplit[#,"/"][[-1]]&,​​Map[StringSplit[#,"-"][[-1]]&,rawdata14t18[[1,3;;,1]]]]];
In[]:=
cleanNames2
In[]:=
cleanNames3=RemoveDiacritics/@​​Map[StringSplit[#,"/"][[-1]]&,​​Map[StringReplace[​​StringDelete[#,{"O ","Los ","El "," el","La ","L ","Las "," al"," las"," la"," l"," de"," d"," y"," i"}],"-"" "]&,​​Map[StringRiffle@Reverse[StringSplit[#,", "]]&,rawdata14t18[[1,3;;,1]]]]];
In[]:=
cleanNames3
In[]:=
municipalities=ParallelMap[{#[[1]],​​interpreted=DeleteDuplicates[​​Interpreter[Restricted["City",Entity["Country","Spain"]]][DeleteDuplicates[#[[2;;]]]]];​​Select[interpreted,FailureQ[#]==False&]}&,​​Transpose[{rawdata14t18[[1,3;;,1]],cleanNames1,cleanNames2,cleanNames3}]]
Out[]=
Ollauri,
Ollauri
,{Haro,{}},Gimileo,
Gimileo
,Briñas,
Brinas
,Casalarreina,
Casalarreina
,Anguciana,
Anguciana
,Labastida/Bastida,
La Bastida
,
⋯7142⋯
,Yunta, La,
La Yunta
,Zamarra,
Zamarra
,Zaorejas,
Zaorejas
,Zapardiel de la Cañada,
Zapardiel de la Canada
,Zarza de Pumareda, La,
La Zarza de Pumareda
,Zorita del Maestrazgo,
Zorita del Maestrazgo
,Zucaina,
Zucaina

large output
show less
show more
show all
set size limit...
There is 6551 municipalities with non-ambiguous interpretations:
In[]:=
municipalities1=Flatten/@Select[municipalities,Length[#[[-1]]]1&]
And 43 municipalities with more than one possible interpretation that need hand curation:
In[]:=
Select[municipalities,Length[#[[-1]]]>1&]
In[]:=
municipalities2="Rozas de Madrid, Las",
Las Rozas de Madrid
CITY
,"Valencia de las Torres",
Valencia de las Torres
CITY
,"Arcos, Los",
Los Arcos
CITY
,"Uharte-Arakil",
Uharte-Arakil
CITY
,"Herrera, La",
La Herrera
CITY
,"Fuente-Álamo",
Fuente Alamo de Murcia
CITY
,"Corral-Rubio",
Corral-Rubio
CITY
,"Santos, Los",
Los Santos
CITY
,"Granada, La",
La Granada
CITY
,"Font-rubí",
Font-rubi
CITY
,"Serrada, La",
La Serrada
CITY
,"Cerro, El",
El Cerro
CITY
,"Zarza, La",
La Zarza
CITY
,"Vélez-Málaga",
Velez-Malaga
CITY
,"Peñarroya-Pueblonuevo",
Penarroya-Pueblonuevo
CITY
,"Valls dAguilar, Les",
Les Valls d'Aguilar
CITY
,"Serna, La",
La Serna
CITY
,"Fuente-Olmedo",
Fuente-Olmedo
CITY
,"Majadas, Las",
Las Majadas
CITY
,"Antigua, La",
La Antigua
CITY
,"San Pedro de la Nave-Almendra",
San Pedro de la Nave-Almendra
CITY
,"Calahorra, La",
La Calahorra
CITY
,"Oliva, La",
Oliva
CITY
,"Foz-Calanda",
Foz-Calanda
CITY
,"Alamedilla, La",
La Alamedilla
CITY
,"Galera, La",
La Galera
CITY
,"Grado, El",
El Grado
CITY
,"Vélez-Rubio",
Velez-Rubio
CITY
,"Robleda-Cervantes",
Robleda-Cervantes
CITY
,"Zarza, La",
La Zarza
CITY
,"Zarza-Capilla",
Zarza-Capilla
CITY
,"Marines, Los",
Los Marines
CITY
,"Valde-Ucieza",
Valde-Ucieza
CITY
,"Torre, La",
La Torre
CITY
,"Cuervo, El",
El Cuervo
CITY
,"Saceda-Trasierra",
Saceda-Trasierra
CITY
,"Atalaya, La",
La Atalaya
CITY
,"Azanuy-Alins",
Azanuy-Alins
CITY
,"Figuera, La",
La Figuera
CITY
,"Frontera, La",
Frontera
CITY
,"Garganta, La",
La Garganta
CITY
,"Olmos, Los",
Los Olmos
CITY
,"Villa del Campo",
Villa del Campo
CITY

Despite this effort about 12% of these municipalities were not interpreted at all :
In[]:=
Length@Select[municipalities,Length[#[[-1]]]==0&]
Out[]=
562
In[]:=
Select[municipalities,Length[#[[-1]]]==0&][[All,1]]

Curated Dataset

In[]:=
dataset14t18=Dataset[Map[​​<|"Municipality"->#[[-1]],"Propagation"->#[[1]]/.ts1418|>&,​​Join[municipalities1,municipalities2]]]
In[]:=
dataset14t18=Import[path<>"dataset14t18.m"]
Out[]=
Municipality
Propagation
Ollauri
TimeSeries
Time: 14 Mar 2020 to 18 Mar 2020
Data points: 5

Gimileo
TimeSeries
Time: 14 Mar 2020 to 18 Mar 2020
Data points: 5

Brinas
TimeSeries
Time: 14 Mar 2020 to 18 Mar 2020
Data points: 5

Casalarreina
TimeSeries
Time: 14 Mar 2020 to 18 Mar 2020
Data points: 5

Anguciana
TimeSeries
Time: 14 Mar 2020 to 18 Mar 2020
Data points: 5

La Bastida
TimeSeries
Time: 14 Mar 2020 to 18 Mar 2020
Data points: 5

Zarraton
TimeSeries
Time: 14 Mar 2020 to 18 Mar 2020
Data points: 5

Villalba de Rioja
TimeSeries
Time: 14 Mar 2020 to 18 Mar 2020
Data points: 5

San Asensio
TimeSeries
Time: 14 Mar 2020 to 18 Mar 2020
Data points: 5

Castanares de Rioja
TimeSeries
Time: 14 Mar 2020 to 18 Mar 2020
Data points: 5

Briones
TimeSeries
Time: 14 Mar 2020 to 18 Mar 2020
Data points: 5

Cuzcurrita de Rio Tiron
TimeSeries
Time: 14 Mar 2020 to 18 Mar 2020
Data points: 5

San Sebastian de la Gomera
TimeSeries
Time: 14 Mar 2020 to 18 Mar 2020
Data points: 5

Arjonilla
TimeSeries
Time: 14 Mar 2020 to 18 Mar 2020
Data points: 5

Santo Domingo de la Calzada
TimeSeries
Time: 14 Mar 2020 to 18 Mar 2020
Data points: 5

San Vicente de la Sonsierra
TimeSeries
Time: 14 Mar 2020 to 18 Mar 2020
Data points: 5

Leiva
TimeSeries
Time: 14 Mar 2020 to 18 Mar 2020
Data points: 5

Miranda de Ebro
TimeSeries
Time: 14 Mar 2020 to 18 Mar 2020
Data points: 5

Rodezno
TimeSeries
Time: 14 Mar 2020 to 18 Mar 2020
Data points: 5

Banares
TimeSeries
Time: 14 Mar 2020 to 18 Mar 2020
Data points: 5

showing 1–20 of 6594

Data Visualization

Iberian Peninsula

Estimated propagation risk of COVID-19 by local contact in Spain for Wed 18:

Evolution for the past four days:

Canary Islands