JSON-Daten mit Python herunterladen

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:

https://www.kiel.de/de/kiel_zukunft/statistik_kieler_zahlen/open_data/index.php?id=de-sh-kiel_transport_verkehr_anzahl_fahrzeuge.

Deswegen haben ich die Zahlen, die lediglich die Autos betreffen, mithilfe von Node.js und Microsofts Cloud-Service Azure zum Download bereitgestellt. Die Adresse lautet

https://kiel-cars.azurewebsites.net/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://kiel-cars.azurewebsites.net/api/cars'

def fetchJsonData(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 = fetchJsonData(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 fetchJsonData(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)

Der übrige Code zur Visualisierung mithilfe von Matplotlib entspricht dem Code meiner bisherigen Beispiele, auf die hiermit verwiesen sei (siehe “Weiterführende Links” weiter unten).

Den vollständigen Code gibt es – wie bisher auch – als Jupyter Notebook auf Github.

Weiterführende Links

Durch Benutzung dieser Website erklären Sie sich mit der Verwendung von Cookies einverstanden. Mehr Informationen

Diese Website speichert Cookies. Die Verwendung von Cookies dient dazu, Inhalte und Anzeigen zu personalisieren, Funktionen für soziale Medien anbieten zu können und die Zugriffe auf diese Website zu analysieren. Außerdem werden Informationen zur Nutzung dieser Webseite an Partner für soziale Medien, Werbung und Analysen weitergegeben. Mit der Verwendung dieser Internetpräsenz stimmen Sie zu, dass diese Seiten Cookies für Analysen, personalisierte Inhalte und Werbung verwenden dürfen. Weitere Informationen hierzu finden Sie in meiner Datenschutzerklärung.

Schließen