Come Generare Mappe Interattive con Folium

'Generate Interactive Maps with Folium'

Utilizzare questa libreria Python per creare visualizzazioni di mappe

Mappa di Tampa, Florida. Immagine creata utilizzando dati Folium e Open Street Map.

La visualizzazione dei dati è una delle aree più trascurate della scienza dei dati. L’apprendimento automatico e l’analisi statistica sono importanti, ma essere in grado di visualizzare i dati, soprattutto diversi tipi di dati, è un aspetto chiave della narrazione dei dati. Sebbene molti bootcamp e corsi introduttivi di scienza dei dati coprano come creare grafici di base con matplotlib e seaborn, molti di essi non coprono come visualizzare i dati geografici su mappe.

Folium è una libreria Python che utilizza Leaflet.js e dati Open Street Map per creare visualizzazioni di mappe di alta qualità. In questo articolo, dimostrerò come è possibile utilizzare Folium per generare visualizzazioni di mappe interattive.

Installazione

Puoi facilmente installare Folium utilizzando pip, come mostrato di seguito.

pip install folium

Importa le librerie

Come al solito, importerò alcune librerie Folium e alcune altre librerie che potrebbero essere necessarie prima di iniziare. Ricorda che puoi trovare tutto il codice per questo tutorial su GitHub.

import numpy as npimport pandas as pdimport folium

Tracciare una mappa del mondo predefinita

Folium dispone di una funzione Map che possiamo chiamare senza argomenti per generare una mappa del mondo predefinita.

folium.Map()
Proiezione predefinita della mappa del mondo. Immagine creata utilizzando dati Folium e Open Street Map.

Nota come la mappa predefinita sia una proiezione e contenga controlli di zoom nell’angolo in alto a sinistra, in modo da poter interagire con la mappa e concentrarsi su una regione specifica se necessario.

Tracciare posizioni per coordinate

Possiamo creare una mappa centrata attorno a una posizione specifica aggiungendo un elenco di coordinate al parametro location nella funzione Map. Utilizzando il codice qui sotto, possiamo generare una mappa centrata su Tampa, in Florida.

folium.Map(location=[27.950575, -82.457176])
Mappa di Tampa, Florida. Immagine creata utilizzando dati Folium e Open Street Map.

Cambiare le piastrelle della mappa

Possiamo anche cambiare le piastrelle della mappa per creare mappe che sembrano diverse con l’argomento “tiles”. Possiamo utilizzare le piastrelle Stamen Toner descritte in dettaglio qui.

folium.Map(location=[27.950575, -82.457176],  tiles="Stamen Toner")
Mappa con piastrelle Stamen Toner. Immagine creata utilizzando dati Folium e Open Street Map.

Nota come la stessa mappa di Tampa sia ora in bianco e nero. Possiamo anche creare mappe del terreno come mostrato di seguito.

folium.Map(location=[27.950575, -82.457176],  tiles="Stamen Terrain")
Mappa con piastrelle Stamen Terrain. Immagine creata utilizzando dati Folium e Open Street Map.

Possiamo anche creare una bellissima mappa ad acquerello con le piastrelle di Stamen come mostrato nel codice qui di seguito.

folium.Map(location=[27.950575, -82.457176],  tiles="Stamen Watercolor")
Mappa ad acquerello di Tampa. Immagine creata utilizzando dati di Folium e Open Street Map.

Aggiunta di marcatori sulla mappa

Se vogliamo aggiungere marcatori ad una mappa, possiamo utilizzare la classe Marker di Folium per creare oggetti marker e aggiungerli alla mappa come mostrato di seguito. Come ci aspettiamo, possiamo specificare la posizione di un marcatore utilizzando le coordinate.

m = folium.Map(location=[27.950575, -82.457176], tiles="Stamen Terrain")folium.Marker(    location=[27.9658533, -82.8001026],    popup="Clearwater",    icon=folium.Icon(icon="cloud")).add_to(m)folium.Marker(    location=[27.773082733154297, -82.64020538330078],    popup="St. Petersburg",    icon=folium.Icon(color='green')).add_to(m)m
Mappa di Tampa con marcatori. Immagine creata utilizzando dati di Folium e Open Street Map.

Notate come ho creato dei marcatori sulla mappa sopra su Clearwater e Saint Petersburg.

Creazione di una mappa coropletica

Mentre la creazione di mappe è una funzionalità utile, essere in grado di rappresentare e visualizzare dati e tendenze sulle mappe è ancora meglio. Folium ci permette anche di creare mappe coropletiche. In questa sezione, illustrerò come creare una mappa coropletica con i dati sulla disoccupazione degli Stati Uniti.

Lettura dei dati

Il dataset che utilizzeremo è disponibile nella directory degli esempi nel repository GitHub di Folium. Leggeremo sia un file CSV con le statistiche sulla disoccupazione per ogni stato nel mese di ottobre 2012, che un file GeoJSON per generare la mappa.

url = (    "https://raw.githubusercontent.com/python-visualization/folium/main/examples/data")state_geo = f"{url}/us-states.json"state_unemployment = f"{url}/US_Unemployment_Oct2012.csv"state_data = pd.read_csv(state_unemployment)state_data.head(10)
Dati sulla disoccupazione per stato.

L’immagine sopra mostra le prime dieci righe dei dati sulla disoccupazione per stato visualizzati utilizzando la funzione head di pandas.

Generazione della mappa

Ora che abbiamo i dati sulla disoccupazione, possiamo generare una mappa coropletica. Forniremo i seguenti argomenti al costruttore Choropleth:

  • geo_data: un percorso per un file con dati GeoJSON per la generazione della mappa.
  • name : il nome della mappa
  • data : i dati effettivi che verranno utilizzati per generare i colori nella mappa coropletica.
  • columns : le colonne dei dati che verranno utilizzate.
  • key_on : la variabile nel file GeoJSON a cui associare i dati (deve iniziare con feature, ovvero feature.id)
  • fill_color : lo schema di colori da utilizzare per la mappa coropletica
  • fill_opacity : l’opacità della riempitura di colore.
  • line_opacity : l’opacità delle linee nella mappa.
  • legend_name : il nome della legenda nella mappa.
m = folium.Map(location=[46, -102], zoom_start=3)folium.Choropleth(    geo_data=state_geo,    name="mappa cloropetica",    data=state_data,    columns=["Stato", "Disoccupazione"],    key_on="feature.id",    fill_color="Reds",    fill_opacity=0.7,    line_opacity=0.2,    legend_name="Tasso di disoccupazione (%)",).add_to(m)folium.LayerControl().add_to(m)m
Mappa cloropetica che mostra la disoccupazione negli Stati Uniti.

Come si può vedere, siamo stati in grado di generare una mappa cloropetica che visualizza il tasso di disoccupazione in ogni stato degli Stati Uniti.

Salvare la Mappa come File HTML

Possiamo anche salvare le mappe come file HTML, il che è utile per incorporare le mappe Folium nelle applicazioni web.

m.save('mappa_cloropetica_disoccupazione.html')

Riassunto

Folium è una utile libreria Python per la visualizzazione di dati geografici. Ci permette di creare visualizzazioni di mappe interattive che possono anche essere salvate come file HTML e incorporate in applicazioni web. In questo articolo ho coperto solo alcune delle funzionalità di base di Folium e potete trovare una lista più dettagliata delle funzionalità sulla pagina di documentazione di Folium . Potete anche trovare tutto il codice utilizzato in questo articolo su GitHub .

Iscriviti alla mia Mailing List

Iscriviti alla mia mailing list per ricevere aggiornamenti sui miei contenuti di data science. Riceverai anche la mia Guida Passo-Passo alla Risoluzione dei Problemi di Machine Learning gratuita quando ti iscrivi ! Puoi anche seguirmi su Twitter per gli aggiornamenti sui contenuti.

E mentre ci sei, considera anche di unirti alla comunità Nisoo per leggere articoli di migliaia di altri scrittori.

Fonti

  1. Rob Story, Folium 0.14.0 documention , (2013), GitHub.