Lösungen Pandas & Seaborn¶
Aufgabe - Erstellen eines Dataframes¶
5 Punkte
Erstellen Sie einen Pandas Data Frame mit dem namen uni_addr
, nachdem Schema folgender Tabelle:
Address | plz |
---|---|
Johannes-Selenka-Platz 1 | 38118 Braunschweig |
Universitätspl. 2 | 38106 Braunschweig |
Harburger Str. 6 | 21614 Buxtehude |
Adolph-Roemer-StraĂźe 2A | 38678 Clausthal-Zellerfeld |
Constantiapl. 4 | 26723 Emden |
Weender Landstraße 3-7 | 37073 Göttingen |
Wilhelmsplatz 1 | 37073 Göttingen |
uni_addr = pd.DataFrame({
"Address": [
"Johannes-Selenka-Platz 1", "Universitätspl. 2",
"Harburger Str. 6", "Adolph-Roemer-StraĂźe 2A",
"Constantiapl. 4", "Weender LandstraĂźe 3-7",
"Wilhelmsplatz 1"
],
"plz": [
"38118 Braunschweig", "38106 Braunschweig",
"21614 Buxtehude", "38678 Clausthal-Zellerfeld",
"26723 Emden", "37073 Göttingen", "37073 Göttingen",
]
})
uni_addr
Address | plz | |
---|---|---|
0 | Johannes-Selenka-Platz 1 | 38118 Braunschweig |
1 | Universitätspl. 2 | 38106 Braunschweig |
2 | Harburger Str. 6 | 21614 Buxtehude |
3 | Adolph-Roemer-StraĂźe 2A | 38678 Clausthal-Zellerfeld |
4 | Constantiapl. 4 | 26723 Emden |
5 | Weender Landstraße 3-7 | 37073 Göttingen |
6 | Wilhelmsplatz 1 | 37073 Göttingen |
Aufgabe - Extrahieren einer Series¶
1 Punkte
Exthahieren Sie die Series plz
aus dem zuvor erstelltem Data Frame uni_addr
und speichern Sie ihr Ergebnis in uni_plz
.
uni_plz = uni_addr["plz"]
uni_plz
0 38118 Braunschweig 1 38106 Braunschweig 2 21614 Buxtehude 3 38678 Clausthal-Zellerfeld 4 26723 Emden 5 37073 Göttingen 6 37073 Göttingen Name: plz, dtype: object
Aufgabe - Read CSV¶
1 Punkt
Nutzen sie die Funktion pd.read_csv
um das Datenset unis_nd.csv
in die Variable unis_nd
einzulesen.
Falls Sie hilfe benötigen lesen Sie gerne die Dokumentation im Getting Started Guide.
Hinweis: Die Datei liegt in keinem Ordner, sondern im selben wie dieses Notebook!
unis_nd = pd.read_csv("unis_nd.csv")
unis_nd.head(1)
University name | Type of university | Sponsorship | Right of promotion | Founding year | Number of students | Address | lat | lon | plz | pic | |
---|---|---|---|---|---|---|---|---|---|---|---|
0 | Hochschule fĂĽr Bildende KĂĽnste Braunschweig | Artistic university | public | yes | 1963 | 976.0 | Johannes-Selenka-Platz 1 | 52.257738 | 10.502315 | 38118 Braunschweig | https://www.hbk-bs.de/fileadmin/_processed_/5/... |
Aufgabe¶
2 Punkte
Selektieren Sie die Spalten University name, Founding year & Number of students, speichern sie ihr Ergebnis in der Variablen select
.
Geben Sie danach die ersten 5 Werte von Oben der Selektion aus.
select = unis_nd[
["University name", "Founding year", "Number of students"]
]
select.head(5)
University name | Founding year | Number of students | |
---|---|---|---|
0 | Hochschule fĂĽr Bildende KĂĽnste Braunschweig | 1963 | 976.0 |
1 | Technische Universität Carolo-Wilhelmina zu Br... | 1745 | 17709.0 |
2 | Hochschule 21 | 2005 | 1084.0 |
3 | Technische Universität Clausthal | 1775 | 3446.0 |
4 | Hochschule Emden/Leer | 2009 | 4481.0 |
Aufgabe¶
2 Punkte
Nutzen Sie die Funktion value_counts
und erstellen Sie ein Balkendiagramm, mittels matplotlib, ĂĽber die Anzahl an Staatlichen und Privaten Hochschulen Niedersachsen.
Die dazugehörige Spalte im Datenset ist Sponsorship. Finden Sie eine geeignete Darstellung.
c = unis_nd["Sponsorship"].value_counts()
plt.style.use('https://github.com/dhaitz/matplotlib-stylesheets/raw/master/pitayasmoothie-dark.mplstyle')
plt.bar(c.keys(), c, color=["black", "white"])
plt.title("Universitäten nach Finanzierungstatus")
plt.ylabel("Anzahl")
plt.show()
Aufgabe¶
8 Punkte
Erstelle das Dataset people_in_germany
.
Folgendes Szenario:
Du bist Part einer Massenhaft angelegten Studie um die bereits bekannten Zahlen des Statistischen Bundesamtes zu ĂĽberprĂĽfen.
Dazu sind 4 Größen bekannt aus den Angaben des Statistischen Bundesamt für die männliche Population & die weibliche Population:
Körpergröße (in cm) | Gewicht (in Kg) | |
---|---|---|
Männlich | 178.9 | 85.8 |
Weiblich | 165.8 | 69.2 |
Gehe dabei wie folgt vor:
- Treffe annahmen über die Verteilung und finde geeignete Werte für $\mu$ & $\sigma$. Erkläre deine Annahmen mit einem kurzen Text.
- Die Samplegröße beträgt 1000. Sample dementsprechend aus den gegebenen Werten.
- Speichere die gesampleten Personen nach dem Schema: |gender|height|weight| in der File
people_in_germany.csv
als csv. -> Nutze fĂĽr dasgender
Attribut den Datentypbool
mit der Kodierung:True = female
&False = male
. - Stelle dein Ergebnis angemessen dar. Das theme
darkgrid
darf nicht verwendet werden. - Beschreibe & Interpretiere den Plot. Gehe dabei von der Hypothese aus das es keine Unterschiede zwischen den Geschlechtern beim samplen geben sollte.
Tipp: Dataclasses erleichtern die Aufgabe ungemein!
# define dataclass
import numpy as np
from dataclasses import dataclass
@dataclass
class Individual:
gender: bool
height: np.float64
weight: np.float64
# fixed values
samples = 1000
rng = np.random.default_rng()
individuals = list()
# Simulation part
for i in range(samples):
if i % 2 == 0:
gender = False
height = rng.normal(178.9, 10)
weight = rng.normal(85.8, 26)
else:
gender = True
height = rng.normal(165.8, 11)
weight = rng.normal(69.2, 19)
height = np.round(height, decimals=1)
weight = np.round(weight, decimals=1)
individual = Individual(gender=gender,height=height,weight=weight)
individuals.append(individual)
individuals = pd.DataFrame(individuals)
individuals.to_csv('people_in_germany.csv', index=False)
sns.set_style('white')
sns.jointplot(data=individuals, x="height", y="weight", hue="gender")
plt.show()