Pinguine Plotten¶
In der folgenden Übung kannst du einige typische pandas-Befehle ausprobieren.
Aufgabe 1: Jupyter Notebooks¶
Installiere einige Bibliotheken:
pip install polars seaborn
pip install fastexcel xlsxwriter
pip install pyarrow
Jupyter starten¶
Starte nun die interaktive Jupyter-Umgebung. Diese eignet sich für die Datenanalyse deutlich besser als .py-Dateien.
Gib dazu im Terminal ein:
jupyter notebook
Es sollte ein Browser-Fenster aufgehen. Erstelle ein neues Notebook mit dem Knopf New -> Python3
Aufgabe 2: Der Pinguin-Datensatz¶
Lade nun einen Datensatz über Pinguine aus der CSV-Datei penguins.csv.
Füge folgenden Code in die oberste Zelle ein. Verwende den Ausführen-Knopf oder Umschalt+Enter:
import seaborn as sns
import polars as pl
df = pl.read_csv("penguins.csv")
df
Du solltest einen Auszug aus der Tabelle sehen.
Aufgabe 3: Dateninspektion¶
Probiere folgende Befehle einzeln:
df.head()
df.shape
Aufgabe 4: Speichern¶
Speichere die Daten wieder ab:
df.write_csv("pingus.csv")
df.write_excel("pingus.xlsx")
Aufgabe 5: Kategorien auszählen¶
Eine Spalte enthält die Spezies der Pinguine, eine kategorische Variable:
df["species"]
Schaue nach wie viele Pinguine jeder Art es im Datensatz gibt:
df["species"].value_counts()
Solche kurzen Daten lassen sich gut als Balkendiagramm darstellen:
count = df["species"].value_counts()
sns.barplot(data=count, x="species", y="count")
Aufgabe 6: Pivot-Tabellen¶
Du kannst auch nach einer Kategorie aggregieren:
df.group_by(by="species").mean()
Eine Aggregation nach zwei Kategorien nennt man eine Pivot-Tabelle:
piv = df.pivot(on="species", index="sex", values="bill_length_mm", aggregate_function="mean")
piv
Auch eine Pivot-Tabelle läßt sich plotten. Allerdings müssen wir die Daten dazu umsortieren:
df_long = piv.unpivot(index="sex", variable_name="species", value_name="bill_length")
df_long
und
sns.barplot(data=df_long, x="sex", y="bill_length", hue="species")
Aufgabe 7: Weitere Diagramme¶
Hier sind zwei weitere typische Darstellungsformen:
sns.scatterplot(data=df, x="bill_length_mm", y="bill_depth_mm", hue="species")
sns.boxplot(data=df, y="body_mass_g", hue="species", gap=0.1)