Im Herz dieses Repositories stehen die Jupyter Notebooks, welche die Daten bereinigen und die Ergebnisse generieren. Man sollte sie in folgender Reihenfolge ausführen:
graph TD
A[cleanup]
B[old-report]
C[pipeline]
A --> B
A --> C
Diese Wikiseite erklärt dir nur Teile des Codes, die dafür da sind verändert oder erweitert zu werden. Falls du mehr Informationen zu dem gesamten Code möchtest, schau dir die Markdown Zellen in den Dateien selbst an.
cleanup.ipynb
Hier werden die Rohdaten aus raw_data
eingelesen und verarbeitet. In dieser Datei werden alle Veränderungen gemacht, die keine zusätzlichen Informationen generieren.
Unnötige Spalten entfernen
Da die Pipeline nicht jede Spalte aus den Rohdaten benötigt, werden hier diese überflüssigen Spalten entfernt. Hierfür wird eine Liste mit den Spaltennamen genommen und mit df.drop(columns=liste, inplace=True, axis=1)
entfernt.
Außerdem können hier auch Duplikate entfernt werden, die auf .NUMMER
enden. Hier wird auch wieder eine Liste genommen, welche diesmal aber für jeden eintrag mit duplikaten erweitert werden, die mit .1
bis .7
enden. Die überarbeitet Liste wird dann in die oben genannte Liste gepackt um die generierten Spalten mit zu entfernen.
Solltest du irgendwo eine Endung größer als sieben sehen, erweiter die range
Funktion in der Datei.
Kurstypen normalisieren
Valide Kurstypen sind entweder VL
, S
, Ü
oder LeKo
. Allerding haben alte Daten ab und an mal Typen wie Vl
, V
, VL+Ü
, etc. Das Skript führt eine Funktion über die Kurstypen Spalte aus, welche mithile eines dictionaries falsche Typen zu den validen vier umbenennt.
Solltest du Typen finden, die du umbenennen willst, dann füge sie zu normalized_identifier
in der normalize_type
Funktion hinzu.
Kurskategorie normalisieren
Mithilfe derselben Strategie wie bei den Kurstypen, werden hier Nomen im Singular zum Plural gemacht. Sollten in der Spalte auch Abkürzungen sein, werden sie automatisch zum Nomen geändert.
Sollten dir weitere falsche werde auffallen, dann erweiter make_plural
oder normalized_categories
old-report.ipynb
Hier wird der aktuelle Evaluationsbericht generiert. Aus clean_data
werden die benötigen werte in den Report für das angegebene Semester umgewandelt und in outputs
gepackt. Um zu ändern welches Semester generiert wird, kann die SEMESTER
Variable mit dem Wunschsemester ersetzt werden. Dafür sollten Semester ausgeschrieben sein, wie z.B. "Sommersemester 2021" oder "Wintersemester 2022/23".
pipeline.ipynb
The Evaluationsbericht Pipeline nimmt saubere Daten aus clean_data
und bereitet sie vor um sie in die API einzufügen. Hierbei werden die Likert Saklen von 1 bis 7 in werte umgewandelt, die den Wert der Antwort darstellen. Neutrale Antworten geben 0 Punkte, negative Antworten Minuspunkte und postive Antworten Pluspunkte.
Die Pipeline berechnet nur die Punktzahl für Spalten, die vom cleanup Skript in eine UUID umgewandelt wurde. Sollten dir Fragen fehle, folge den Schritten in der API Dokumentation um neue Fragen in die Datenbank hinzuzufügen, welche dann automatisch von diesem und dem cleanup Skript berücksichtigt werden.