Schon immer neidisch auf das schönere Layout von R-Graphen gewesen? Python braucht sich nicht mehr vor R verstecken! Der Astrophysiker Jake VanderPlas stellt in diesem Post auf O’Reilly Seaborn vor, das einem eine schönere Visualisierung von Daten als Matplotlib ermöglicht. Hier lernst Du wie Du das mit Seaborn schöne Graphen erstellst und Dataanalytics betreibst.
Matplotlib wurde 1999 zum ersten Mal vorgestellt und hat daher ein etwas altmodisches Layout. Zudem harmonisiert es nicht sehr gut mit neuen Datenverabeitungsmodulen in Python wie Pandas oder Numpy.
Jake VanderPlas ein bekannter Wissenschaftler, der an dem Machinelearning Modul Scikit arbeitet und darüber mehere Lernvideos auf Youtube gepostet hat, stellt in diesem O’Reilly-Artikel das neue Visualierungsmodul Seaborn vor. Er bemängelt an Matplotlib besonderes:
- schlechte Defaultoptionen für Grösse und Farbe der Plots
- Lowleveltechnik im Vergleich zu den heutigen Anforderungen, wodurch sehr spezialiserter Code nötig ist, um ansprechende Plots zu generieren
- keine Entwicklung für Pandas Dataframes
Seaborn hat ein schöneres Layout als Matplotlib
Die Lösung ist Seaborn und lässt sich auf dieser Site herunterladen. Hier ein Beispiel wie zur Zeit ein Matplotlib aussieht:
Und hier das Beispiel für die Implementierung in Seaborn:
Der Plot ist etwas grösser, als Anfänger sehe ich aber noch keinen großen Unterschied. Die Leitidee für Seaborn ist das einfache erstellen von komplizierten Plottypen aus Pandadaten. Laut Seaborn ist das Ziel eine zu dem R-Packet ggplot ebenbürtiges Modul zu schaffen, um schnell, schöne Plots zu erstellen (“Seaborn’s goals are similar to those of R’s ggplot“). In den weiteren Beispielen wird das schön veranschaulicht!
Histogramme mit Seaborn
Zuerst generieren wir Zufallsvariablen, um den Punkt null mit verschiedenen Standardabweichungen!
Die selbe Visualisierung wäre mit Matplotlib weniger schön und der dazugehörige Code nicht so kurz. Anstatt einem Histogramm können wir die Daten auch glätten!
Scatterplots mit Seaborn
Um die Daten in zwei Dimensionen zu ploten mit Höhenprofilen kann man einfach den Befehl jointplot verwenden.
Das Layout kann leicht verändert werden. z.B. als hexagonales Muster.
Visualisierung von mehrdimensionalen Daten
Wenn man Daten hat, die anstatt zwei Dimensionen drei oder mehr Dimensionen enthalten, ist es besser gepaarte Plots (“pair plots”) zu verwenden. Das ist besonders nützlich, um Korrelationen in mehrdimensionalen Daten zu erkennen. Mit dem nächsten Beispiel lernst Du, wie man an echten Daten mit Seaborn Daten verarbeitet, visualisiert und Schlüsse zieht. Ein bekanntes Beispiel ist der Irisdatensatz. Er enthält Daten von verschiedenen Blumen (die Zeilen im nächsten Bild), deren Charakteristika wie Blattlänge, Blütenlänge und Breite in der Natur vermessen wurden (Spalten im Datensatz).
Nachdem der Iris-Datensatz geladen ist, wird er plottetet. Seaborn schafft eine farblich schöne Abbildung, die einem hilft, Korrelationen schnell zu erkennen.
Als nächstes plotten wir das Trinkgeldverhalten von Männern und Frauen bei Mittag- und Abendessen. Geladen wurden die Daten mit dem Befehl tips = sns.load_dataset(‘tips’).
Recht schoen, kann man sofort erkennen, dass Männer bei Abendessen gerne mehr Trinkgeld geben als Frauen. Frauen hingegen, geben fast gleich viel aus.
Eine weitere Visualisierung nach Wochentagen zeigt, dass Männer wie Frauen am meisten Trinkgeld am Wochenende geben¨!
Eine weiterer Plot mit kombinierter Regression erlaubt es den Bedienungen, den wahrs. Trinkgeldbetrag zu berechnen.
Viele weiteren Beispiele lassen sich hier auf Englisch nachlesen!