Analyse von Open Data mit Pandas

Zahlreiche Organisationen stellen Daten frei zur Verfügung. Die Python-Library Pandas hilft bei der Auswertung.

In Pocket speichern vorlesen Druckansicht 8 Kommentare lesen

(Bild: Itzchaz/Shutterstock.com)

Lesezeit: 7 Min.
Von
  • Christian Lamprecht
Inhaltsverzeichnis

Neben quelloffener Software befindet sich seit einigen Jahren Open Data auf dem Vormarsch. Insbesondere staatliche Organisationen öffnen ihren Datenschatz immer öfter für die Öffentlichkeit. Auch private Unternehmen stellen immer mehr Informationen unter freien Lizenzen zur Verfügung. Immer mehr frei verfügbare Daten haben der Data Science al Disziplin immensen Auftrieb gegeben.

Programmiersprachen wie Python und R profitieren von der Entwicklung. Bei Ersterer hat sich vor allem Pandas als Tool zur Verwaltung, Analyse und Aufbereitung von Daten durchgesetzt. Dazu gilt es, die passenden freien Daten zu finden, um daraus das Wissen zu extrahieren.

Die Arbeit an dem Open-Source-Projekt Meteostat, das historische Wetter- und Klimadaten von Tausenden Wetterstationen weltweit zur Verfügung stellt, begannen im Jahr 2015. Damals waren freie Daten insbesondere in Deutschland wenig verbreitet. Der Deutsche Wetterdienst (DWD) stellte nur die Daten einer Hand voll Wetterstationen im Rahmen seiner Grundversorgung frei zur Verfügung.

Obwohl die Arbeit des Wetterdienstes durch Steuergelder finanziert wurde, waren die Aufzeichnungen des deutschen Messnetzes nur gegen eine Gebühr erhältlich, womit sie für nicht kommerzielle Projekte uninteressant waren. Daher mussten andere Datenquellen die Lücke füllen. Der US-amerikanische Wetterdienst NOAA (National Oceanic and Atmospheric Administration) stellte die Meldungen Tausender Flugplätze weltweit kostenfrei zur Verfügung. Diese Daten waren damals die Basis für den Aufbau von Meteostat.

Seit dem Sommer 2017 steht ein Großteil der DWD-Daten frei zur Verfügung und zwar auch für kommerzielle Zwecke. Viele Projekte, Forschungsvorhaben und Unternehmen haben von der Freigabe der Daten profitiert. Unter anderem konnte Meteostat Forschungsprojekte zur Korrelation zwischen bestimmten Wetterbedingungen und COVID19-Infektionen unterstützen.

Open Data beschränkt sich freilich nicht auf Wetter- und Klimadaten. Öffentliche und gemeinnützige Organisationen aus anderen Bereichen stellen ebenfalls Daten unter freien Lizenzen zur Verfügung, darunter das Datenportal für Deutschland GovData und das offene Datenportal der Europäischen Union. Beide fassen Datenquellen unterschiedlicher öffentlicher Quellen zusammen und eignen sich gut als Recherchewerkzeug.

Die Python-Bibliothek Pandas hilft beim Einlesen und Aufbereiten von Daten. Wer Erfahrung mit R hat, fühlt sich bei Pandas zuhause, wer aber einen SQL-Hintergrund hat, sollte sich zunächst mit den Datenstrukturen von Pandas vertraut machen.

Ein DataFrame ist ein ähnliches Konstrukt wie eine Tabelle, die mehrere Spalten und Zeilen enthält. Die Werte einer einzelnen Spalte heißen Series. Pandas stellt unterschiedliche Methoden bereit, um Daten einzulesen, zu verändern oder in einem bestimmten Datenformat zu speichern. Einzelne Spalten lassen sich unkompliziert selektieren und filtern. Unter der Haube basiert Pandas wie viele wissenschaftliche Python-Pakete auf NumPy, einem Tool zur performanten Verarbeitung von Array-Strukturen.

Sofern zusätzlich Matplotlib installiert ist, lassen sich mit Pandas die Daten bequem visualisieren.

Das folgende Beispiel analysiert Zusammenhänge zwischen der monatlichen Maximaltemperatur in Deutschland und dem Interesse an Klimaanlagen in der deutschsprachigen Wikipedia. Mit wenigen Zeilen Code lässt sich herausfinden, ob die Erwartung zutrifft, dass das Interesse in den heißen Sommermonaten besonders groß ist.

Die Installation der erforderlichen Python-Bibliotheken erfolgt über das Paketrepository PyPI:

pip install pandas matplotlib meteostat

Im Anschluss daran gilt es, die Abhängigkeiten zu importieren:

from datetime import datetime
import pandas as pd
import matplotlib.pyplot as plt
from meteostat import Stations, Daily

Nun können Entwicklerinnen und Entwickler damit beginnen, Daten einzulesen und in einer Form aufzubereiten, die es erlaubt, daraus Erkenntnisse abzuleiten.

Die Zugriffszahlen des Wikipedia-Artikels über Klimaanlagen sind auf der Seite Pageviews Analysis zu finden. Das Einlesen der Seitenaufrufe benötigt mit Pandas lediglich einen Befehl:

pageviews = pd.read_csv('pageviews.csv', 
                        index_col='Date', 
                        parse_dates=['Date'])

Die Library überzeugt mit simplen Parametern, die das Einlesen lokaler und externer Datenquellen, das Setzen des Index sowie das Parsen von Spalten als datetime erlauben. Bei Bedarf lässt sich das resultierende DataFrame zunächst mit print() in der Konsole als Tabelle darstellen. Das kann beispielsweise hilfreich sein, um zu überprüfen, ob die Daten korrekt gelesen und interpretiert werden:

| Date                | Klimaanlage |
|:--------------------|------------:|
| 2019-12-01 00:00:00 |        4866 |
| 2020-01-01 00:00:00 |        7741 |
| 2020-02-01 00:00:00 |        5624 |
| 2020-03-01 00:00:00 |        5662 |
| 2020-04-01 00:00:00 |        6998 |
| 2020-05-01 00:00:00 |       10036 |
| 2020-06-01 00:00:00 |       11320 |
| 2020-07-01 00:00:00 |        9507 |
| 2020-08-01 00:00:00 |       15702 |
| 2020-09-01 00:00:00 |        5238 |
| 2020-10-01 00:00:00 |        4772 |
| 2020-11-01 00:00:00 |        4502 |