Statistical analysis is a process of understanding how variables in a dataset relate to each other and how those relationships depend on other variables. Visualization can be a core component of this process because, when data are visualized properly, the human visual system can see trends and patterns that indicate a relationship. https://seaborn.pydata.org/tutorial/relational.html
Die zahlreichen Funktionen, die seaborn
bietet basieren immer auf dem gleichen Prinzip. Visualisiert werden (nominale, ordinale, metrische) Variablen eines Datensatzes, die in Form eines DataFrame
s vorliegen. Das Skalenniveau der Variablen bestimmt dabei die Art der Visualisierung. Variablen können verschiedenen Eigenschaften des Diagramms zugeordnet werden (z.B. die Punktgröße oder Farbe der Balken). Am besten lässt sich das Prinzip an einem Beispiel erkennen.
Zuerst werden die benötigten Bibliotheken importiert und der Datensatz eingelesen. Panadas und numpy dienen zur Verarbeitung der Daten. Seaborn baut auf matplotlib, der Standard-Bibliothek für wissenschaftliche Grafiken, auf und bietet einige Verbesserungen und Vereinfachungen. Der Kommentar % matplotlib inline
ist ein Magic Command für den Python Kernel in Jupyter Notebooks. Mit diesem Befehl werden Plots direkt im Notebook angezeigt.
Mit sns.set()
wird das grundlegende Design der Plots dem Design von Seaborn angepasst. Die Funktion DataFrame.sample()
wird verwendet, um eine Zufalsstichprobe der Größe $n=1000$ aus dem Datenstatz zu erstellen. Dies dient zur besseren Lesbarkeit des Plots in diesem Tutorial.
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
import numpy as np
%matplotlib inline
sns.set()
# use sample to generate a random subsample
df = pd.read_csv("../data/Library_Usage.csv").sample(n=1000)
sns.relplot(x='Total Checkouts', y='Total Renewals', data=df)
Die Funktion relplot()
erzeugt ein Streudiagram zur Visualisierung einer bivariaten Verteilung mit metrischen Variablen. Jedes Wertepaar $(x_i,y_i)$ der Verteilung wird im Koordinatensystem als Punkt dargestellt. Die Variablen des Datensatzes werden über ihre Spaltennamen mit den Axen x und y des Plots verlinkt.
Die Größe des Plots kann über die beiden Argumente height
(Höhe in inches und aspect
(Breite des Plots ergibt sich aus aspect * height
) konfiguriert werden:
sns.relplot(x='Total Checkouts', y='Total Renewals', data=df
height=5, aspect=3)
Um den Plot als Bilddatei abzuspeichern wird die Funktion savefig()
aus der matplotlib Bibliothek verwendet:
plt.savefig('../tutorial.png', dpi=150)
Mit den zusätzlichen Argumenten hue
(Farbe der Punkte/ Linien/ Balken …), size
(Größe der Punkte/ Linien/ Balken …), style
können weitere Eigenschaften des Plots angepasst werden:
sns.relplot(x='Total Checkouts', y='Total Renewals',
hue='Provided Email Address', style='Outside of County',
size='Year Patron Registered', data=df)
Die vollständige Liste aller Optionen kann hier eingesehen werden.
Plots können mit dem row
und/ oder col
Argument auch anhand einer oder mehrerer Variablen in Form von Spalten und/ oder Zeilen angeordnet werden:
sns.relplot(x='Total Checkouts', y='Total Renewals',
size='Year Patron Registered',
row='Provided Email Address', col='Outside of County', data=df)
Diese Form der Visualisierung ist in der Regel einem einzelnen Plot mit einer langen Legende vorzuziehen.
Mit dem Argument palette
können verschiedene Farbpaletten für den hue
Parameter ausgewählt werden. Zu empfehlen sind die Paletten von ColorBrewer:
sns.relplot(x='Total Checkouts', y='Total Renewals',
hue='Provided Email Address',
col='Outside of County',
palette=sns.color_palette('Accent', 2),
data=df)
Mit der Funktion sns.color_palette
können verschiedene Paletten anhand ihres Namens ausgewählt werden. Wichtig ist hierbei, die Anzahl der benötigten Farben mit anzugeben.