Skip to content

iterrows() in ratio.py vervangen door vectorized operaties #67

@Muhammet369

Description

@Muhammet369

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.

Metadata

Metadata

Assignees

Labels

needs-shapingPitch die nog gevormd moet wordentechTechnische verbeteringen

Type

No type
No fields configured for issues without a type.

Projects

Status

Todo

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions