Probleem
src/models/ratio.py:98-100 gebruikt row-by-row iteratie:
for i, row in data.iterrows():
if row["Average_Ratio"] != 0:
data.at[i, "Prognose_ratio"] = row["Aanmelding"] / row["Average_Ratio"]
Daarnaast itereert de triple nested loop (regel 103-121) over alle jaren × weken × numerus-fixus-opleidingen.
Impact
iterrows() is de traagste manier om pandas DataFrames te verwerken
- Bij groeiende datasets wordt dit een bottleneck
- De numerus fixus cap-logica (103-121) dupliceert wat ook in
postprocessor._numerus_fixus_cap zit
Voorstel
Vectorized variant:
mask = data["Average_Ratio"] != 0
data.loc[mask, "Prognose_ratio"] = data.loc[mask, "Aanmelding"] / data.loc[mask, "Average_Ratio"]
En de NF-cap logica consolideren met postprocessor._numerus_fixus_cap.
Prioriteit
MIDDEL — performance verbetering, relatief kleine effort.
Probleem
src/models/ratio.py:98-100gebruikt row-by-row iteratie:Daarnaast itereert de triple nested loop (regel 103-121) over alle jaren × weken × numerus-fixus-opleidingen.
Impact
iterrows()is de traagste manier om pandas DataFrames te verwerkenpostprocessor._numerus_fixus_capzitVoorstel
Vectorized variant:
En de NF-cap logica consolideren met
postprocessor._numerus_fixus_cap.Prioriteit
MIDDEL — performance verbetering, relatief kleine effort.