In den bisherigen Tutorials ging es um CSV- und um Excel-Dateien. Jetzt ist JSON an der Reihe. Ziel ist es, JSON-Daten herunterzuladen und zu visualisieren.
Wie auch in den anderen Beispielen zuvor, stammen die Daten von der Stadt Kiel. Diesmal geht es um die Anzahl der in Kiel zugelassenen Autos. Die Originaldaten liegen jedoch nur im CSV-Format vor:
Deswegen haben ich die Zahlen, die lediglich die Autos betreffen, mithilfe von Node.js zum Download bereitgestellt. Die Adresse lautet
https://xern-statistic.de/api/cars
In diesem Tutorial stelle ich hinsichtlich des Herunterladens der Daten zwei Wege vor, zum einen die Verwendung des Moduls requests, zum anderen den Weg über pandas.
Das Modul requests nutzen
import requests
from pprint import pprint
URL = 'https://xern-statistic.de/api/cars'
def fetch_json_data(url):
try:
response = requests.get(url)
except OSError:
print('No connection to the server!')
return None
# check if the request is successful
if response.status_code == 200:
print('Status 200, OK')
return response.json()
else:
print('JSON data request not successful!.')
return None
json_data = fetch_json_data(URL)
pprint(json_data)
Zusätzlich zu requests wird hier pprint importiert, da hierüber (anstelle von print()
) eine übersichtlichere Ausgabe der Daten ermöglicht wird.
Die Funktion fetch_json_data(url)
leistet dann die eigentliche Arbeit. Zunächst wird überprüft, ob überhaupt eine Verbindung zum Server möglich ist:
response = requests.get(url)
Wenn das der Fall ist, wird überprüft, ob der Server den Status-Code 200 (für ‘OK’) übermittelt:
if response.status_code == 200:
print('Status 200, OK')
return response.json()
Trifft auch das zu, dann werden die Daten schließlich ausgegeben:
pprint(json_data)
Pandas nutzen
Die Bibliothek pandas stellt die Methode read_json()
bereit. Als Parameter akzeptiert sie eine URL, so dass folgende Zeile ausreicht, um die Daten herunterzuladen:
df = pd.read_json(URL, orient='columns')
Die ersten zehn Zeilen könnte man sich dann mit head()
anzeigen lassen:
df.head(10)
Den vollständigen Code gibt es – wie bisher auch – als Jupyter Notebook auf Github.
Ein Tipp für macOS-Nutzer: Wenn Ihr den Code ausführt, kann es passieren, dass ein SSL-Fehler auftritt:
urlopen error [SSL: CERTIFICATE_VERIFY_FAILED]
In diesem Fall könnt Ihr folgendes versuchen:
- Wechselt im Finder in das Pyton-Verzeichnis (> Programme > Python 3.x) und
- führt mit einem Doppelklick die Datei „Install Certificates.command“ aus.
Weiterführende Links
- Passagierzahlen des Kieler Hafens mit Python grafisch darstellen
- CSV-Daten mit Python aus dem Internet laden
- Excel-Daten mit Python einlesen
- Python, Pandas und Verkehrsunfälle in Kiel
- Kieler Open-Data-Portal und Python
Zuletzt aktualisiert am 17. Februar 2021