Datenvisualisierung in Python: Tipps und Tricks

Eine gut aufgearbeitete grafische Darstellung von Daten ist nicht nur im Datenanalyseprozess, sondern auch in Data Science unabdingbar.


Am Anfang der Datenarbeit ermöglicht eine Visualisierung der Rohdaten die Struktur und Zusammensetzung des Datensatzes zu erkennen. Wie viele Daten fehlen (missing data)? Welche Variablen gibt es doppelt? Zudem werden hier bereits die ersten Trends und Zusammenhänge erkennbar. Mit Hilfe der Rohdatenvisualisierung lässt sich weitere Datenarbeit spezifizieren.


Eine Datenvisualisierung kann aber auch das Ergebnis der Datenarbeit sein. Die grafische Darstellung der Ergebnisse erlaubt die Zusammenhänge zwischen verschieden Variablen, Trends usw. anschaulich zu übermitteln (Stichwort Data Storytelling) und somit zum Entscheidungsprozess im Unternehmen beizutragen.


Auf dem Markt gibt es unzählige kostenfreie und kostenpflichtige Tools, die eine grafische Aufarbeitung der Daten ermöglichen. Python verfügt über eine breite Auswahl an Bibliotheken, die eine kostenfreie Datenvisualisierung ermöglichen. Im Vergleich zu gängigen Visualisierungstools wie Excel oder Tableau bietet Python aber deutlich mehr Flexibilität in der Ausgestaltung der Visualisierungen. Die grafische Datenaufbereitung ist sehr vielseitig möglich. Dies kann aber auch schnell zum Nachteil werden, denn im Gegensatz zu beispielsweise Excel sind die Grafiken aufwändiger in der Erstellung und benötigen oft spezifische Programmierkenntnisse. In Tools wie Tableau oder Excel sind auf der anderen Seite gewisse Visualisierungsformate als Muster vorgegeben. Die Lernkurve ist somit im Fall von Visualisierungen mit Python um einiges steiler als in Excel. Hat man allerdings ein gewisses Lernniveau erreicht, stehen dafür in Python deutlich mehr Visualisierungsmöglichkeiten offen

.

Jupyter Umgebung

Für die Erstellung von Visualisierungen sowie generell von Datenanalysen in Python ist die Jupyter-Umgebung von Vorteil. Im Jupyter-Notebook können wir Programmiercode inklusive Grafiken direkt anschauen. Jupyter Notebook ist kostenfrei und kann direkt von der Webseite (https://jupyter.org/install) heruntergeladen werden.


Visualisieren mit Matplotlib

Matplotlib (https://matplotlib.org/) ist die populärste Visualisierungsbibliothek in Python. Auf Matplotlib basieren zudem andere häufig genutzte Visualisierungsbibliotheken wie Seaborn oder Pandas. Grundkenntnisse in Matplotlib sind deswegen notwendig, um die Funktionsweise der Visualisierungen in Python zu verstehen.

Matplotlib ist die flexibelste Bibliothek und eignet sich deswegen insbesondere für die Erstellung spezieller auf den spezifischen Datensatz zugeschnittenen Grafiken. Für diese Art der Visualisierung benötigt Matplotlib allerdings oft ziemlich viel Code, was die Anwendung nicht unbedingt einfacher macht.


Um eine einfache Visualisierung mit Matplotlib zu erstellen, importieren wir zunächst die notwendigen Bibliotheken. Zudem (um einen Beispieldatensatz zu generieren) importieren wir NumPy. Mit NumPy erstellen wir einen eindimensionalen Datensatz (Array) mit dem Namen „daten“.



Danach kann ein einfacher Linienplot in Matplotlib erstellt werden:



Weitere Ideen für einige Matplotlib-Visualisierungen gibt es im (kostenfreien) Buch von Jake VanderPlas: "Python Data Science Handbook": (https://jakevdp.github.io/PythonDataScienceHandbook/04.00-introduction-to-matplotlib.html) sowie auch auf der offiziellen Seite von Matplotlib.



Pandas

Eine Visualisierung in Matplotlib benötigt oft aufwändige Anpassungen der Daten, insbesondere, wenn wir mit größeren Datensätzen und/oder sogenannten DataFrames arbeiten. Zudem, wie bereits oben gesagt, benötigt Matplotlib viel Code, um die Grafiken auszugestalten.

Aus diesem Grund wurden auf Matplotlib basierend weitere Visualisierungsbibliotheken entwickelt, mit denen sich die entsprechenden Grafiken schneller und effizienter erstellen lassen.


Pandas (https://pandas.pydata.org/) als Bibliothek dient in erster Linie einer effizienten Datenbearbeitung in Python. Mit Hilfe Pandas lassen sich verschiedene Datentypen (CSV, JSON usw.) in Python einlesen und als sogenannte DataFrames speichern. Mit Hilfe der DataFrames sind wiederum weitere Datentransformationen und Analysen möglich. Pandas als Pythonbibliothek dient im Endeffekt vor allem der Datentransformation und Analyse. Visualisierungen gehören demnach nicht zu den Hauptanwendungen von Pandas – allerdings schafft die Umwandlung der Daten in DataFrames wichtige Grundlage für die weitere grafische Bearbeitung.


Der Vorteil von Pandas im Vergleich zu Matplotlib ist vor allem die Schnelligkeit bei der Erstellung jeweiliger Grafiken. Eine Grafik in Pandas erstellen wir auch am besten mit Hilfe von Jupyter-Notebook. Zuerst wandeln wir den als csv-Datei gespeicherten Datensatz in einen DataFrame um.

Als Beispiel dient hier ein Datensatz von Destatis zum Thema Bauland.



Nach dem Einlesen der Daten kann unser Datensatz sofort visualisiert werden. Zum Beispiel als Linienplot:

Oder auch als ein Bar Plot:


Seaborn

Eine weitere auf Matplotlib basierende Bibliothek ist Seaborn (https://seaborn.pydata.org/). Im Gegensatz zu Pandas wurde Seaborn speziell für bessere und einfachere Visualisierungen entwickelt. Grafiken, die mit Matplotlib ziemlich viel Code benötigen, können mit Seaborn mit einer Zeile ausgeführt werden. Die Notwendigkeit die Datenformate entsprechend anzupassen gibt es mit Seaborn (ähnlich wie in Pandas) nicht in dem Maße, wie es im reinen Matplotlib der Fall ist.

Ein weiterer Vorteil von Seaborn und Pandas ist auch, dass die mit diesen Bibliotheken erstellten Grafiken relativ gut mit DataFrames kompatibel sind.


Zunächst importieren wir Seaborn sowie den dazugehörigen Datensatz als Pandas DataFrame:


Danach können wir bereits mit der Visualisierung beginnen.

Eine Variante mit spezifizierten Variablen:

Ähnlich einfach lassen sich mit Seaborn Box Plots erstellen, die uns die genauere Statistische Verteilung der Variablen offenbaren.

Im Gegensatz zu Matplotlib lassen sich Visualisierungen in Seaborn nicht nach Belieben umgestalten. Bestimmte Formate sind hier bereits vorgegeben. Da aber Seaborn letztendlich ein Interface für Matplotlib ist, kann hier Matplotlib-Code immer integriert werden.


Zusammenfassung

Folgende Vorgehensweise bei Visualisierungen mit Python ist zu empfehlen: Zunächst wandeln wir Daten mit Hilfe von Pandas in einen DataFrame um. Danach können wir bereits erste Visualisierungen mit Hilfe von Pandas selbst oder Seaborn vornehmen. Falls weitere und speziellere Anpassungen notwendig sind, arbeiten wir mit Matplotlib.


Um weitere Möglichkeiten der Visualisierung mit den drei Python Bibliotheken zu erkunden, empfiehlt sich auch der Besuch der jeweiligen Webseite. Dort werden einige weitere Beispiele für die Erstellung verschiedener Grafiken genannt. Am besten ist es, die jeweilige Vorlage an einem eigenen Datensatz auszuprobieren, denn nur so kann man die Vor- und Nachteile der Bibliotheken sehen und erkennen, welche für das spezifische Problem optimal geeignet ist.


Matplotlib, Pandas und Seaborn stellen die Grundlagen der visuellen Datenarbeit in Python dar. Es gibt aber auch weitere Bibliotheken, wie etwa Bokeh (https://bokeh.org/) oder Plotly (https://plotly.com/javascript/), die zudem die Erstellung interaktiver Grafiken ermöglichen.

Ein guter Anfang, um Datenvisualisierung mit Python zu erlernen, bietet auch das Buch „Python Data Science Handbook“ von Jake VanderPlas, welches es auch in der kostenfreien Variante online gibt (https://jakevdp.github.io/PythonDataScienceHandbook/).