Noten berechnen mit python
Als Hilfestellung bei der Berechnung der Noten wird im Rahmen der Notentransparenz ein python-Modul zur Verfügung gestellt. Dieses kann über die "launch binder"-Buttons im Browser und ohne lokale Installation genutzt werden.
Installation
pip install git+https://github.com/tna76874/notentransparenz.git@fd59e5a922dc92b74e947b7fdf44eb4182f23c79
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Beispiel
"""
from notenbildung.notenbildung import *
noten = Notenberechnung(w_s0=1, w_sm=3, system = SystemN, v_enabled=True, w_th = 0.4)
noten.note_hinzufuegen(art='KA', date = '2024-04-10', note=2, status='fertig')
noten.note_hinzufuegen(art='KA', date = '2024-04-15', note=2.5, status='fertig')
noten.note_hinzufuegen(art='KA', date = '2024-03-01', note=3, status='fertig')
noten.note_hinzufuegen(art='KA', date = '2024-03-15', note=5, status='fertig')
noten.note_hinzufuegen(art='KT', date = '2024-02-01', note=4, status='fertig')
noten.note_hinzufuegen(art='KT', date = '2024-01-01', note=2.75, status='fertig')
noten.note_hinzufuegen(art='m', date = '2023-09-01', note=3.0)
noten.note_hinzufuegen(art='m', date = '2023-10-01', note=3.25)
noten.note_hinzufuegen(art='m', date = '2023-11-01', note=3.5)
gesamtnote = noten.berechne_gesamtnote()
print(gesamtnote)
noten.plot_time_series()
Excel Import
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Beispiel Excel
"""
from notenbildung.notenbildung import *
noten = Notenberechnung(w_s0=1, w_sm=3, system = SystemN, v_enabled=True)
noten.add_from_excel('data.xlsx')
gesamtnote = noten.berechne_gesamtnote()
print(gesamtnote)
noten.plot_time_series()
Lerngruppe verwalten
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Beispiel: Noten mit Lerngruppen
"""
from notenbildung.models import *
# es gibt die Fächer FachM, FachPH und FachINF
# eine fachpraktische Leistung P wird als Kurztest gezählt, zählt jedoch nicht in die Anzahl der schriftlichen Leistungen mit hinein.
meinfach = FachM
note = Notenberechnung(w_s0=1, w_sm=3, system = SystemN, v_enabled=True, w_th = 0.4, fach=meinfach)
# note = NotenberechnungSimple(w_s0=1, w_sm=3, system = SystemN, v_enabled=True, w_th = 0.4, fach=meinfach)
note.note_hinzufuegen(art='KA', date = '2024-04-10', note=3, status='---')
note.note_hinzufuegen(art='KA', date = '2024-04-15', note=2.5, status='uv')
note.note_hinzufuegen(art='KA', date = '2024-03-01', note=4, status='fertig')
note.note_hinzufuegen(art='P', date = '2024-03-15', note=5)
note.note_hinzufuegen(art='KT', date = '2024-02-01', note=4, status='offen', due = '2024-05-05')
note.note_hinzufuegen(art='S', date = '2024-01-01', note=2.75)
note.note_hinzufuegen(art='m', date = '2023-09-01', note=3.0)
note.note_hinzufuegen(art='m', date = '2023-10-01', note=3.25)
note.note_hinzufuegen(art='m', date = '2023-11-01', note=3.5)
gesamtnote = note.berechne_gesamtnote()
print(gesamtnote)
schueler1 = SchuelerEntity(sid=1, vorname='Max', nachname='Mustermann')
schueler1.setze_note(note)
schueler2 = SchuelerEntity(sid='abc', vorname='Mini', nachname='Musterfrau')
schueler2.setze_note(note)
lerngruppe1 = LerngruppeEntity(stufe=7, fach=meinfach, zug='A')
lerngruppe1.update_sid(schueler1)
lerngruppe1.update_sid(schueler2)
lerngruppe1.plot_sid(1)
lerngruppe1.plot_sid('abc')
print(lerngruppe1.get_dataframe())
print(schueler1.get_dataframe())
Lerngruppe aus Excel importieren und Ergebnisse exportieren
Bei dem Import werden zuerst verschiedene Randbedingungen validiert. Wenn alle Angaben in der richtigen Form sind, dann wird gemäß den Parametern die Note berechnet und in einen Unterordner exportiert.
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Beispiel Excel Export
"""
from notenbildung.excel import *
ExcelFileLoader("meine_notenliste.xlsx").export()
Unter der Kommandozeile lässt sich dieser Export mit z.B. notenbildung meine_excelliste.xlsx durchführen.
Notebooks
Noten berechnen in einem Notebook
!pip uninstall notenbildung -y > /dev/null 2>&1
!pip install git+https://github.com/tna76874/notentransparenz.git@92def6cf4d986082cd5a4e82dbdba007e2f7fcd9 > /dev/null 2>&1
from notenbildung.models import *
Noten zwischen den Notensystemen N und NP umgerechnet werden.
eine_note = NoteEntity(15,system = SystemNP)
print(eine_note)
eine_note.to(SystemNPS)
print(eine_note)
eine_note.to(SystemN)
print(eine_note)
eine_note.to(SystemNORM)
eine_note.to(SystemNP)
print(eine_note)
15.0
0.666666666666667
WARNING: Inkonsistent System conversion
1.0
15.0
Das Verrechnen von Noten wird direkt über das '+'-Zeichen erledigt. Dabei wird die Gewichtung mitgerechnet.
ka = Weight(NoteEntity(3), NoteEntity(4), NoteEntity(3.5)).normalize()
kt = Weight(NoteEntity(3), NoteEntity(1), NoteEntity(2.5)).set_weight(1)
mündlich = Weight(NoteEntity(2), NoteEntity(1), NoteEntity(3)).set_weight(1)
print(f'KA: {ka}, KT: {kt}, mündlich: {mündlich}')
schriftlich = ka + kt
gesamt = schriftlich.set_weight(3) + mündlich
print(f'schriftlich: {schriftlich}, gesamt: {gesamt}')
KA: 3*3.5, KT: 1*2.1666666666666665, mündlich: 1*2.0
schriftlich: 3*3.1666666666666665, gesamt: 4*2.875
Die Gesamtnote lässt sich auch im zeitlichen Verlauf visualisieren.
noten = Notenberechnung(w_s0=1, w_sm=3, system = SystemN)
noten.note_hinzufuegen(art='KA', date = '2024-04-10', note=2, status='fertig')
noten.note_hinzufuegen(art='KA', date = '2024-04-15', note=2.5, status='fertig')
noten.note_hinzufuegen(art='KA', date = '2024-03-01', note=4.5, status='fertig')
noten.note_hinzufuegen(art='KA', date = '2024-03-15', note=5, status='fertig')
noten.note_hinzufuegen(art='KT', date = '2024-02-01', note=4, status='fehlt')
noten.note_hinzufuegen(art='KT', date = '2024-01-01', note=2.75, status='fehlt')
noten.note_hinzufuegen(art='m', date = '2023-09-01', note=3.0)
noten.note_hinzufuegen(art='m', date = '2023-10-01', note=3.25)
noten.note_hinzufuegen(art='m', date = '2023-11-01', note=3.5)
gesamtnote = noten.berechne_gesamtnote()
print(gesamtnote)
noten.plot_time_series()
m_s1=3.4821428571428568, m_s=3.4290540540540535, m_m=3.25, gesamtnote=3.3842905405405403, datum=15.04.2024
Es können alle Noten angezeigt werden, die erteilt wurden.
noten._get_full_dataframe()
| date | art | status | note | nr | von | bis | due | |
|---|---|---|---|---|---|---|---|---|
| 0 | 2023-09-01 | m | --- | 3.0 | 1.0 | 2023-09-01 | 2023-09-01 | None |
| 1 | 2023-10-01 | m | --- | 3.25 | 2.0 | 2023-10-01 | 2023-10-01 | None |
| 2 | 2023-11-01 | m | --- | 3.5 | 3.0 | 2023-11-01 | 2023-11-01 | None |
| 3 | 2024-01-01 | KT | fehlt | 2.75 | 1.0 | NaT | NaT | None |
| 4 | NaT | V | --- | 3.75 | NaN | NaT | NaT | None |
| 5 | 2024-02-01 | KT | fehlt | 4.0 | 2.0 | NaT | NaT | None |
| 6 | NaT | V | --- | 3.75 | NaN | NaT | NaT | None |
| 7 | 2024-03-01 | KA | fertig | 4.5 | 1.0 | NaT | NaT | None |
| 8 | NaT | V | --- | 3.25 | NaN | NaT | NaT | None |
| 9 | 2024-03-15 | KA | fertig | 5.0 | 2.0 | NaT | NaT | None |
| 10 | NaT | V | --- | 3.25 | NaN | NaT | NaT | None |
| 11 | 2024-04-10 | KA | fertig | 2.0 | 3.0 | NaT | NaT | None |
| 12 | NaT | V | --- | 3.25 | NaN | NaT | NaT | None |
| 13 | 2024-04-15 | KA | fertig | 2.5 | 4.0 | NaT | NaT | None |
| 14 | NaT | V | --- | 3.25 | NaN | NaT | NaT | None |
Noten berechnen aus einer Excel-Tabelle
!pip uninstall notenbildung -y > /dev/null 2>&1
!pip install git+https://github.com/tna76874/notentransparenz.git@92def6cf4d986082cd5a4e82dbdba007e2f7fcd9 > /dev/null 2>&1
from notenbildung.excel import *
ExcelFileLoader("meine_notenliste.xlsx").export()
sid: 1
vorname: Max
nachname: Mustermann
Warnung: Zu wenige Leistungen: [<class 'notenbildung.nvo.LeistungKA'>]: Anzahl der Leistungen 1<4
sid: 2
vorname: Mini
nachname: Musterfrau
Warnung: Zu wenige Leistungen: [<class 'notenbildung.nvo.LeistungKA'>]: Anzahl der Leistungen 1<4
sid: 3
vorname: Peter
nachname: Pan
Warnung: Zu wenige Leistungen: [<class 'notenbildung.nvo.LeistungKA'>]: Anzahl der Leistungen 1<4
