Folium: Visualisieren Sie Daten auf einer Karte mit Python

Folium ist eine Bibliothek, die Daten auf einer Karte visualisiert.

JavaScript Faltblatt Es gibt eine Bibliothek, die die interaktive Kartenverarbeitung unterstützt Man kann sagen, dass Folium diese Bibliothek analysiert und in Python verfügbar gemacht hat.

Umgebung

Ich konnte die entsprechende Version auf der offiziellen Seite nicht finden. Wenn man sich die Kategorien auf pypi ansieht, scheint es, dass sowohl 2 als auch 3 Systeme funktionieren werden.

Führen Sie den folgenden Befehl in einer etwas neuen Python-Umgebung aus. Es ist "am einfachsten".

Folium-Installation


$ pip install folium

Wenn Sie die Umwelt nicht verschmutzen möchten, trennen Sie sie vorab mit venv. Ich habe einen Einwegbehälter aufgestellt.

FROM python:3.5.2-alpine

RUN pip install folium

Container starten


#Erstellen Sie ein Folium-Image mit einer Docker-Datei im aktuellen Verzeichnis
docker build -t folium . 

#Starten Sie den Container über das Folium-Image
docker run -it -v /home/nanakenashi/workspace:/workspace folium /bin/sh

Um auf die HTML-Datei zu verweisen, die aus Folium ausgespuckt wurde Das aktuelle Verzeichnis (Arbeitsbereich) wird im Container bereitgestellt.

Ausprobieren

Vielen Dank an QuickStart. Starten Sie zunächst die interaktive Shell von Python und laden Sie Folium.

Vorbereitung


$ python
Python 3.5.2 (default, Nov 17 2016, 22:46:45)
[GCC 5.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>>
>>> import folium

Versuche eine Karte zu machen

Erstellen Sie ein "Map" -Objekt mit den Koordinaten und der Zoomstufe in einer Hand, benennen Sie es und speichern Sie es. Je größer die Zoomstufe, desto höher die Zoomstufe.

Karten erstellen und speichern


>>> map1 = folium.Map(location=[-30.159215, 138.955078], zoom_start=4)
>>> map1.save('/workspace/map1.html')

Versuchen Sie, die gespeicherte HTML-Datei in Ihrem Browser zu öffnen.

map_html.png

Ich frage mich, ob die in "Ort" angegebenen Koordinaten das Zentrum waren Ich dachte, ich hätte Australien außermittig gesehen, aber ich werde weitermachen.

Versuchen Sie, einen Marker zu setzen

Marker hinzufügen


>>> map2 = folium.Map(location=[-30.159215, 138.955078], zoom_start=4)
>>> folium.Marker([-31.253218, 146.921099], popup='New South Wales').add_to(map2)
<folium.map.Marker object at 0x7fc1c73bd048>
>>> map2.save('/workspace/map2.html')

Öffnen Sie die gespeicherte map2.html.

map2_html.png

Ein Marker ist erschienen. Übrigens, wenn Sie darauf klicken, wird die durch "Popup" angegebene Zeichenfolge angezeigt.

marker.png

Versuchen Sie so etwas wie Visualisierung

Obwohl verschiedene Visualisierungsoptionen auch innerhalb von Quickstart verwendet werden Dieses Mal werde ich mich auf die kreisförmige Markierung konzentrieren und etwas löschen. Erster Versuch.

Kreismarkierungen anzeigen


>>> map3 = folium.Map(location=[-30.159215, 138.955078], zoom_start=4)                                                                             
>>> folium.CircleMarker([-31.253218, 146.921099],
...                     radius=100000,
...                     popup='New South Wales',
...                     color='#3186cc',
...                     fill_color='#3186cc',
...                    ).add_to(map3)
<folium.features.CircleMarker object at 0x7fc1c7408a20>
>>> map3.save('/workspace/map3.html')

Öffnen Sie map3 in Ihrem Browser.

map3_html.png

Da es den Anschein hat, dass die Menge durch "Radius" ausgedrückt werden kann, lassen Sie uns einen numerischen Wert für jede Stadt widerspiegeln. An diesem Punkt muss ich nicht interaktiv sein, also schreibe ich ein Skript.

Platzieren Sie Markierungen nach Stadt


import folium

map4 = folium.Map(location=[-30.159215, 138.955078], zoom_start=4)

#Speichert Daten für jede Stadt (ursprünglich aus der DB- oder CSV-Datei bezogen)
states = (
    {'lat': -35.473468, 'lon': 149.012368, 'value': 1, 'name': 'Australian Capital Territory'},
    {'lat': -31.253218, 'lon': 146.921099, 'value': 2, 'name': 'New South Wales'},
    {'lat': -19.491411, 'lon': 132.550960, 'value': 3, 'name': 'Northern Territory'},
    {'lat': -20.917574, 'lon': 142.702796, 'value': 4, 'name': 'Queensland'},
    {'lat': -30.000232, 'lon': 136.209155, 'value': 5, 'name': 'South Australia'},
    {'lat': -41.454520, 'lon': 145.970665, 'value': 6, 'name': 'Tasmania'},
    {'lat': -37.471308, 'lon': 144.785153, 'value': 7, 'name': 'Victoria'},
    {'lat': -27.672817, 'lon': 121.628310, 'value': 8, 'name': 'Western Australia'}
)

#Gewichte, um die Größe des Kreises leicht verständlich zu machen
WEIGHT = 100000

#Hinzufügen von Markierungen für jede Stadt (Da es schwierig ist, die Anzahl zu erhöhen, ist das Hinzufügen von Chargen ein zukünftiges Problem.)
for state in states:
    folium.CircleMarker(
            [state['lat'], state['lon']],
            radius=state['value'] * WEIGHT,
            popup=state['name'],
            color='#3186cc',
            fill_color='#3186cc',
    ).add_to(map4)

map4.save('/workspace/map4.html')

Zeigen Sie nach dem Ausführen des obigen Skripts map4.html im Browser an.

map4_html.png

Der Inhalt von QuickStart hat es einfach so gemacht. Wenn Sie es solider verwenden möchten, lesen Sie die Folium-Dokumentation Es scheint gut, auch das Original Faltblattdokument zu überprüfen.

Zusammenfassung

Ich denke, dass Google Maps häufig bei der Bereitstellung als Dienst verwendet wird Solche Bibliotheken sind auch nützlich für Recherchen und interne Angebote. In dem Artikel war es auf die oberflächliche Visualisierung beschränkt, bis der Marker platziert wurde. Sie können verschiedene Ausdrücke erstellen, z. B. die Karte selbst bearbeiten und Polygone anordnen.

Jupyter Notebook scheint eine interaktivere Analyse zu ermöglichen Wenn Sie es benutzt haben, probieren Sie es bitte aus.

Recommended Posts

Folium: Visualisieren Sie Daten auf einer Karte mit Python
Visualisiere grib2 auf einer Karte mit Python (matplotlib)
Ein Memo mit Python2.7 und Python3 in CentOS
Ich habe mit Python eine Hex-Map erstellt
Versuchen Sie, eine Karte mit Python + Cartopy 0.18.0 zu zeichnen
Visualisieren Sie Präfekturen mit vielen Routen nach Präfekturen auf einer Karte von Japan
Holen Sie sich Daten von VPS MySQL mit Python 3 und SQL Alchemy
Datenanalyse mit Python 2
Erstellen Sie eine Python-Umgebung mit ansible auf centos6
Eine Geschichte über den Umgang mit Binärdaten in Python
Entschlüsseln Sie eine unter iOS mit Python verschlüsselte Zeichenfolge
Versuchen Sie, eine Karte mit Pythons Folium-Paket zu zeichnen
Datenanalyse mit Python
Extrahieren Sie mit Python Daten von einer Webseite
Anzeige von Positionsinformationsdaten in Python - Versuchen Sie, mit der Kartenanzeigebibliothek (Folium) zu zeichnen -
[Python] Zeichnen Sie Daten nach Präfektur auf einer Karte (Anzahl der Autos im ganzen Land)
Visualisieren und verstehen Sie Japans regionales Netz auf einer Karte
Holen Sie sich Finanzdaten mit Python (dann ein wenig basteln)
Visualisieren Sie die Ziele und Ziele der B League auf einer Heatmap
Machen Sie mit Python einen Haltepunkt auf der c-Ebene
Ich habe eine Python3-Umgebung unter Ubuntu mit direnv erstellt.
Ein Server, der POST-Daten mit flask / python wiedergibt
Hinweise zur Beschleunigung des Python-Codes mit Numba
Mit Python erstellte Beispieldaten
Holen Sie sich Youtube-Daten mit Python
[Python] Hinweise zur Datenanalyse
Machen Sie eine Lotterie mit Python
Erstellen Sie ein Verzeichnis mit Python
Lesen von JSON-Daten mit Python
Ein Memo, das mit Python & Spark Daten aus dashDB liest
Hinweise zum Importieren von Daten aus MySQL oder CSV mit Python
Hinweise zum Umgang mit großen Datenmengen mit Python + Pandas
[Schatzdaten] [Python] Führen Sie mit dem TD-Client eine Abfrage zu Schatzdaten aus.
Erstellen Sie eine Python-Datenanalyseumgebung auf einem Mac (El Capitan).
Erstellen einer Python-Umgebung auf einem Mac
[Python] Was ist eine with-Anweisung?
Löse ABC163 A ~ C mit Python
Bedienen Sie den Belegdrucker mit Python
Python-Grafikhandbuch mit Matplotlib.
Lassen Sie uns eine GUI mit Python erstellen.
Erstellen einer Python-Umgebung unter Ubuntu
Löse ABC166 A ~ D mit Python
Erstellen Sie eine Python-Umgebung auf dem Mac (2017/4)
[Python] Mit DataReader Wirtschaftsdaten abrufen
Erstellen einer virtuellen Umgebung mit Python 3
Löse ABC168 A ~ C mit Python
Python-Datenstruktur mit Chemoinfomatik gelernt
Visualisieren Sie Python-Paketabhängigkeiten mit graphviz
Erstellen Sie ein Empfehlungssystem mit Python
Erstellen Sie eine Python-Umgebung in Centos
[Python] Generiere ein Passwort mit Slackbot
Löse ABC162 A ~ C mit Python