Aufgabensammlung-2020-11-11

allgemein Python

Gegeben:

  • verschiedene Datums- und Zeitangaben, z.B. “02/11/2020”, “2020-11-02” etc.

Gesucht:

  • Datum als Datum erkennen, in Epoch Unix Time Stamp umwandeln

Gegeben:

  • Datum im Epoch Unix Time Stamp

Gesucht: Datum mit print() menschenlesbar drucken

  • basic, auch mit Parameter sep=’separator’ und end=’end’

  • “old school”: %-formatting (auch anschlussfähig für C-Umsteiger)

  • f-Strings

Tutorial: siehe https://realpython.com/python-f-strings/

Gegeben:

  • ein Satz, z.B. “to be or not to be”

Gesucht:

  • Häufigkeit jedes Buchstabens.

  • Welche Buchstaben kommen vor?

  • Welche Buchstaben kommen - bezogen auf die Klein- und Großbuchstaben des deutschen Alphabets - nicht vor?

Gegeben: ein String.

Gesucht:

  • Funktion: Ist der String ein Palindrom?

Gegeben:

  • ein Satz, z.B. “to be or not to be”

  • Liste Y mit sog. Stop-Wörtern, z.B. [ “der”, “die”, “das”, “und”]

Gesucht:

  • der Satz als Liste von Wörtern

  • der Satz als Liste von Wörtern ohne Stopwörter

Gegeben:

  • Ein Text mit mehreren Sätzen, z.B. Viel_o_Sophie_Korpus

      Viel_o_Sophie_Korpus = [  "Viel o", "vieh sophie", "o so", "so viel", "viel o", "vieh sophie", "so o", "o so", "so viel", "vieh vieh", "sophie o", "o sophie", "sophie so", "so viel", "solo o", "sophie sophie" ]
    

(Quelle: https://www.life-science-lab.org/cms/index.php/ernst-jandl.html)

Gesucht:

  • Welche Wörter kommen überhaupt vor?

  • Wie oft kommen die Wörter insgesamt vor?

  • Häufigkeit der einzelnen Wörter getrennt für jeden Satz.

Dicts und Listen

Gegeben:

  • ein Dictionary mit Häufigkeitszählungen von Wörtern, z.B. { “so”: 3, “viel”: 2, “vieh”: 3 … }

Gesucht:

  • das häufigste und das seltenste Wort dieses Dictionaries

  • dieses Dictionary ohne Wörter, die nur einmal vorkommen

  • alle Wörter dieses Dictionaries als Liste

  • alle Häufigkeiten dieses Dictionaries als Liste

Gegeben:

  • Ein Dictionary, das Buchstaben auf Zahlen abbildet, z.B. {‘a’: 1, ‘b’: 3, ‘c’: 2, ‘d’: 1}

Gesucht:

  • Ein Dictionary, das diese Zahlen auf Buchstaben abbildet (sozusagen die Invers-Funktion). Falls mehrere Buchstaben auf dieselbe Zahl zeigen, zeigt umgekehrt diese Zahl auf einen String, der alle zugehörigen Buchstaben enthält, also z.B. { 1: ‘ad’, 3: ‘b’, 2: ‘c’ }

Gegeben: Liste von Strings.

Gesucht:

  • Welche Strings sind Palindrome?

  • Ergebnis: Liste von True oder False

Gegeben:

  • eine Liste von Integern, z.B. [ 1, 3, 2, 42, -100]

Gesucht:

  • eine Liste der Quadrate dieser Integers

  • eine Liste der aggregierten Summen dieser Integers, z.B. [ 1, 4, 6, 48, -52]

  • eine Liste von Paaren dieser Listen, z.B. [ (1,1), (3,4), … (-100,52) ]

Gegeben:

  • Eine Liste von als String dargestellten Datensätzen, in denen einzelne Uhrzeiten und Temperatur-Messungen durch Strichpunkte getrennt sind (CSV-Datei), z.B. [ “09:00; 16”, “10:00; 18”, “11:00; 21.5”, … “21:00; 19.2”, “22:00; 18.0” ]

Gesucht:

  • die Liste als Dictionary von Uhrzeit und Wert

  • der Mittelwert aller Temperaturen an diesem Tag

  • ab welchem Zeitpunkt wurden 20 Grad Celsius überschritten?

Gegeben: Ein Datensatz als Liste von Messungen (“row-wise matrix”, “Reihe-Spalte-Matrix” ), z.B. Alter des Kindes, Gewicht, Größe (Quelle: http://www.gbe-bund.de/oowa921-install/servlet/oowa/aw92/dboowasys921.xwdevkit/xwd_init?gbe.isgbetol/xs_start_neu/&p_aid=3&p_aid=49508598&nummer=223&p_sprache=D&p_indsp=-&p_aid=97056998)

[
#[ Alter, Größe, Gewicht ]
  [ 1, 0.67, 7.6 ],
  [ 2, 0.83, 11.6 ],
  [ 3, 0.93, 14.1 ],
  [ 4, 1.01, 16.2 ],
  [ 5, 1.08, 18.5 ],
  [ 6, 1.15, 20.8 ],
  [ 7, 1.22, 23.6 ],
]

Gesucht: Datensatz als als “column-wise matrix” (“Spalte-Reihe-Matrix”). Mathematisch wäre das die Transposition der Ausgans-Matrix, z.B.

[
# Alter
[ 1, 2, 3 ... ],
# Größe
[ 0.67, 0.83, 0.93, ...],
# Gewicht
[ 7.6, 11.6, 14.1, ...],
]

https://www.programiz.com/python-programming/list-comprehension : matrix = [[1, 2], [3,4], [5,6], [7,8]] transpose = [[row[i] for row in matrix] for i in range(2)] print (transpose)

Gegeben:

  • Spalte einer Matrix, gegeben als Liste vom Zahlen

Gesucht:

Gegeben:

  • ein dict d

gesucht:

  • iteriere durch das dict

2 Lösunen:

  • for k, v in d.items() # preferred

  • for k in d.keys() # antipattern!

Gegeben: zwei dicts, z.B.

x = {'a': 1, 'b': 2}
y = {'b': 10, 'c': 21}

Gesucht:

  • ein neues dict z als Vereinigung von x und y; redundante Werte von y überschreiben x, z.B. {'a': 1, 'b': 10, 'c': 21}

Lösung: https://stackoverflow.com/questions/38987/how-do-i-merge-two-dictionaries-in-a-single-expression-in-python-taking-union-o?rq=1

Daten laden

Gegeben:

  • eine gezippte CSV-Datei in einem Schwester-Verzeichnis

gesucht:

  • als DataFrame mit relativem Pfad einlesen

  • ohne sie vorher zu entzippen

  • erzeuge Train-Test-Split

Gegeben:

  • 4 CSV-Dateien, nämlich X_train, y_train, X_test, \y_test

  • zusammenfügen zu einem kompletten df

Exploration

  • Welche Attribute gibt es?

  • Von welchem Typ sind die Attribute?

  • describe() ohne / mit kategorialen Attributen

Missing values:

  • in welchen Spalten?

  • selten, häufig?

Beschreibe möglichst viele Methoden, um mit missing values zu arbeiten!

graphische Exploration mit Seaborn

  • einzelne Variablen: line, bar u.A.

  • je 2-3 Variablen gegeneinander: scatter, heatmap u.A.

  • komplexere Plots

Feature Engineering

  • Normalisierung

  • Standardisierung (Unterschied zu Normalisierung?)

  • erzeuge neue Features