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
In [2]:
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",
    ]
})
In [3]:
uni_addr
Out[3]:
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.

In [4]:
uni_plz = uni_addr["plz"]
uni_plz
Out[4]:
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!

In [7]:
unis_nd = pd.read_csv("unis_nd.csv")
unis_nd.head(1)
Out[7]:
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.

In [8]:
select = unis_nd[
    ["University name", "Founding year", "Number of students"]
]
select.head(5)
Out[8]:
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.

In [12]:
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()
No description has been provided for this image

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 das gender Attribut den Datentyp bool 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!

In [22]:
# define dataclass
import numpy as np
from dataclasses import dataclass
@dataclass
class Individual:
    gender: bool
    height: np.float64
    weight: np.float64
In [23]:
# fixed values
samples = 1000
rng = np.random.default_rng()
individuals = list()
In [24]:
# 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)
In [25]:
sns.set_style('white')
sns.jointplot(data=individuals, x="height", y="weight", hue="gender")
plt.show()
No description has been provided for this image