Von Daten zur Karte: Visualisierung der Immobilienpreise in Ames mit Python
Geodatenvisualisierung ist zu einem unverzichtbaren Werkzeug für das Verständnis und die Darstellung von Daten in einem geografischen Kontext geworden. Es spielt eine zentrale Rolle in verschiedenen realen Anwendungen, von Stadtplanung und Umweltstudien bis hin zu Immobilien und Transport. Beispielsweise könnten Stadtplaner Geodaten nutzen, um die Routen öffentlicher Verkehrsmittel zu optimieren, während Immobilienfachleute sie nutzen könnten, um Immobilienwerttrends in bestimmten Regionen zu analysieren. Mit Python können Sie die Leistungsfähigkeit von Bibliotheken wie Geopandas, Matplotlib und Contextily nutzen, um überzeugende Visualisierungen zu erstellen. In diesem Kapitel tauchen Sie tief in ein Code-Snippet ein, das die Hausverkaufspreise in Ames, Iowa, visualisiert und jeden Schritt aufschlüsselt, um seinen Zweck und seine Funktionalität zu verstehen.
Fangen wir an.
Überblick
Dieser Beitrag ist in sechs Teile gegliedert; sie sind:
- Installieren wesentlicher Python-Pakete
- Importieren notwendiger Bibliotheken
- Laden und Vorbereiten der Daten
- Festlegen des Koordinatenreferenzsystems (CRS)
- Erstellen einer konvexen Hülle
- Visualisierung der Daten
Installieren wesentlicher Python-Pakete
Bevor wir in die Welt der Geovisualisierung mit Python eintauchen, ist es wichtig, Ihre Entwicklungsumgebung richtig einzurichten. Unter Windows können Sie entweder die Eingabeaufforderung oder PowerShell öffnen. Wenn Sie macOS oder Linux verwenden, ist die Terminal-Anwendung Ihr Tor zur Befehlszeilenwelt. Um sicherzustellen, dass Sie Zugriff auf alle erforderlichen Python-Bibliotheken haben, ist es außerdem wichtig, Zugriff auf den Python Package Index (PyPI) zu haben, das offizielle Software-Repository eines Drittanbieters für Python-Pakete.
Um die wesentlichen Pakete zu installieren, können Sie die folgenden Befehle auf Ihrem Terminal oder Ihrer Befehlszeilenschnittstelle verwenden:
pip install pandas
pip install geopandas
pip install matplotlib
pip install contextily
pip install shapely
Sobald Sie die erforderlichen Pakete erfolgreich installiert haben, können Sie die erforderlichen Bibliotheken importieren und mit der Geodatenvisualisierung beginnen.
Starten Sie Ihr Projekt mit meinem Buch „The Beginner's Guide to Data“. Wissenschaft. Es bietet Tutorials zum Selbststudium mit funktionsfähigem Code.
Importieren notwendiger Bibliotheken
Bevor Sie sich mit der Visualisierung befassen, müssen Sie unbedingt die erforderlichen Bibliotheken importieren, die unsere Visualisierung unterstützen.
import pandas as pd
import geopandas as gpd
import matplotlib.pyplot as plt
import contextily as ctx
from shapely.geometry import Point
Wir werden mehrere Python-Bibliotheken verwenden, darunter:
- Pandas: Zur Datenmanipulation und -analyse.
- Geopandas: Zum Umgang mit Geodaten.
- matplotlib: Zum Erstellen statischer, animierter und interaktiver Visualisierungen.
- kontextuell: Um Grundkarten zu unseren Plots hinzuzufügen.
- formschön: Zur Manipulation und Analyse planarer geometrischer Objekte.
Laden und Vorbereiten der Daten
Der Datensatz Ames.csv
enthält detaillierte Informationen zu Hausverkäufen in Ames, Iowa. Dazu gehören verschiedene Attribute der Häuser wie Größe, Alter und Zustand sowie ihre geografischen Koordinaten (Breiten- und Längengrad). Diese geografischen Koordinaten sind für unsere Geodatenvisualisierung von entscheidender Bedeutung, da sie es uns ermöglichen, jedes Haus auf einer Karte darzustellen und so einen räumlichen Kontext zu den Verkaufspreisen bereitzustellen.
# Load the dataset
Ames = pd.read_csv('Ames.csv')
# Convert the DataFrame to a GeoDataFrame
geometry = [Point(xy) for xy in zip(Ames['Longitude'], Ames['Latitude'])]
geo_df = gpd.GeoDataFrame(Ames, geometry=geometry)
Durch die Konvertierung des Pandas-DataFrames in einen GeoDataFrame können wir Geodatenfunktionen für unseren Datensatz nutzen und die Rohdaten in ein Format umwandeln, das für die Geodatenanalyse und -visualisierung geeignet ist.
Festlegen des Koordinatenreferenzsystems (CRS)
Das Koordinatenreferenzsystem (CRS) ist ein grundlegender Aspekt präziser Geodatenoperationen und Kartografie und bestimmt, wie unsere Daten auf der Erdoberfläche ausgerichtet sind. Der Abstand zwischen zwei Punkten unterscheidet sich unter einem anderen CRS und die Karte sieht anders aus. In unserem Beispiel legen wir das CRS für den GeoDataFrame mit der Notation „EPSG:4326“ fest, die dem weit verbreiteten Breiten-Längen-Koordinatensystem WGS 84 (oder World Geodetic System 1984) entspricht.
# Set the CRS for the GeoDataFrame
geo_df.crs = "EPSG:4326"
WGS 84 ist ein globales Referenzsystem, das 1984 gegründet wurde und der De-facto-Standard für Satellitenortung, GPS und verschiedene Kartenanwendungen ist. Es verwendet ein dreidimensionales Koordinatensystem mit Breiten- und Längengraden, die Positionen auf der Erdoberfläche definieren, und einer Höhe, die die Höhe über oder unter einem Referenzellipsoid angibt.
Über WGS 84 hinaus decken zahlreiche Koordinatenreferenzsysteme unterschiedliche Kartierungsanforderungen ab. Zu den Optionen gehört der Universal Transverse Mercator (UTM), der planare, kartesische Koordinaten bereitstellt, die für die regionale Kartierung geeignet sind; die Optionen der European Petroleum Survey Group (EPSG), z. B. „EPSG:3857“ für webbasierte Kartierung; und das State Plane Coordinate System (SPCS), das landesspezifische Systeme innerhalb der Vereinigten Staaten bietet. Die Auswahl eines geeigneten CRS hängt von Faktoren wie Umfang, Genauigkeit und dem geografischen Umfang Ihrer Daten ab und gewährleistet Präzision bei der Geoanalyse und Visualisierung.
Erstellen einer konvexen Hülle
Eine konvexe Hülle bildet eine Grenze, die alle Datenpunkte umschließt und eine visuelle Darstellung der geografischen Verteilung unserer Daten bietet.
# Create a convex hull around the points
convex_hull = geo_df.unary_union.convex_hull
convex_hull_geo = gpd.GeoSeries(convex_hull, crs="EPSG:4326")
convex_hull_transformed = convex_hull_geo.to_crs(epsg=3857)
buffered_hull = convex_hull_transformed.buffer(500)
Die Umwandlung von „EPSG:4326“ in „EPSG:3857“ ist aus mehreren Gründen von entscheidender Bedeutung:
- Webbasierte Visualisierungen: „EPSG:3857“ ist für webbasierte Kartenanwendungen wie Google Maps und OpenStreetMap optimiert. Durch die Umwandlung unserer Daten in dieses CRS stellen wir sicher, dass sie korrekt auf webbasierten Grundkarten überlagert werden.
- Pufferung in Metern: Die Pufferoperation fügt einen Rand um die konvexe Hülle hinzu. In „EPSG:4326“ werden Koordinaten in Grad angegeben, was die Pufferung in Metern problematisch macht. Durch die Umwandlung in „EPSG:3857“ können wir unseren konvexen Rumpf genau um 500 Meter puffern und so eine klare Grenze um Ames schaffen.
Durch die Pufferung der konvexen Hülle visualisieren wir nicht nur die Ausbreitung unserer Daten, sondern stellen der Visualisierung auch einen geografischen Kontext zur Verfügung, der den interessierenden Bereich hervorhebt.
Visualisierung der Daten
Nachdem wir unsere Daten vorbereitet haben, ist es an der Zeit, sie durch Visualisierung zum Leben zu erwecken. Wir werden die Verkaufspreise einzelner Häuser auf einer Karte darstellen und dabei einen Farbverlauf verwenden, um verschiedene Preisspannen darzustellen.
# Plotting the map with Sale Prices, a basemap, and the buffered convex hull as a border
fig, ax = plt.subplots(figsize=(12, 8))
geo_df.to_crs(epsg=3857).plot(column='SalePrice', cmap='coolwarm', ax=ax, legend=True,
markersize=20)
buffered_hull.boundary.plot(ax=ax, color='black', label='Buffered Boundary of Ames')
ctx.add_basemap(ax, source=ctx.providers.CartoDB.Positron)
ax.set_axis_off()
ax.legend(loc='upper right')
colorbar = ax.get_figure().get_axes()[1]
colorbar.set_ylabel('Sale Price', rotation=270, labelpad=20, fontsize=15)
plt.title('Sale Prices of Individual Houses in Ames, Iowa with Buffered Boundary',
fontsize=18)
plt.show()
Der verwendete Farbverlauf „coolwarm“ ist eine divergierende Farbkarte. Das bedeutet, dass es zwei unterschiedliche Farben hat, die die beiden Enden eines Spektrums darstellen, mit einer neutralen Farbe in der Mitte. In unserer Visualisierung:
- Kühlere Farben (Blautöne) stehen für Häuser mit niedrigeren Verkaufspreisen.
- Wärmere Farben (Rottöne) kennzeichnen Häuser mit höheren Verkaufspreisen.
Diese Farbkartenauswahl ermöglicht es den Lesern, Gebiete mit hohen und niedrigen Immobilienwerten schnell zu identifizieren und bietet Einblicke in die Verteilung der Hausverkaufspreise in Ames. Die gepufferte Grenze hebt den interessierenden Bereich zusätzlich hervor und liefert Kontext für die Visualisierung.
Diese Karte ist eine Kombination aus mehreren Komponenten: Die von contextily aus OpenStreetMap eingebrachte Grundkarte zeigt das Gelände auf einem bestimmten Breiten- und Längengrad. Die farbigen Punkte basieren auf den Daten aus dem Pandas DataFrame, wurden jedoch von Geopandas in ein geografisches CRS konvertiert, das mit der Grundkarte übereinstimmen sollte.
Weiterführende Literatur
In diesem Abschnitt finden Sie weitere Ressourcen zum Thema, wenn Sie tiefer gehen möchten.
Tutorials
- Einführung in GeoPandas
Ressourcen
- Ames-Datensatz
- Ames-Datenwörterbuch
Zusammenfassung
In diesem Beitrag haben wir uns mit den Feinheiten der Geodatenvisualisierung mit Python befasst und uns dabei auf die Visualisierung von Hausverkaufspreisen in Ames, Iowa, konzentriert. Durch eine sorgfältige Schritt-für-Schritt-Aufschlüsselung des Codes haben wir die verschiedenen Phasen enthüllt, die vom ersten Laden und Vorbereiten der Daten bis zur endgültigen Visualisierung erforderlich sind. Geodatenvisualisierungstechniken zu verstehen, ist nicht nur eine akademische Übung; es hat tiefgreifende Auswirkungen auf die reale Welt. Die Beherrschung dieser Techniken kann Fachleuten in einem Spektrum von Bereichen, von der Stadtplanung bis zur Immobilienbranche, die Möglichkeit geben, fundierte, datengesteuerte Entscheidungen zu treffen, die auf geografischen Kontexten basieren. Da Städte wachsen und die Welt zunehmend datenzentriert wird, wird die Überlagerung von Daten auf geografischen Karten für die Gestaltung zukünftiger Strategien und Erkenntnisse unverzichtbar sein.
Konkret haben Sie in diesem Tutorial Folgendes gelernt:
- So nutzen Sie wichtige Python-Bibliotheken für die Geodatenvisualisierung.
- Die zentrale Rolle der Datenaufbereitung und -transformation bei Geodatenoperationen.
- Effektive Techniken zur Visualisierung von Geodaten, einschließlich der Nuancen der Einrichtung eines Farbverlaufs und der Integration einer Grundkarte.
Haben Sie Fragen? Bitte stellen Sie Ihre Fragen in den Kommentaren unten und ich werde mein Bestes tun, um sie zu beantworten.