diff --git a/notes_tools/tools/df_marks_manip.py b/notes_tools/tools/df_marks_manip.py index eb3b193..7dac37c 100644 --- a/notes_tools/tools/df_marks_manip.py +++ b/notes_tools/tools/df_marks_manip.py @@ -7,6 +7,9 @@ from math import ceil, floor import logging logger = logging.getLogger(__name__) +NOANSWER = "na" +NORATED = "" + # Values manipulations def round_half_point(val): @@ -49,7 +52,7 @@ def note_to_rep(x): '\\RepU' """ if x["Niveau"]: - if pd.isnull(x["Note"]): + if x["Note"] == NOANSWER: return latex_caract[0] elif x["Note"] in range(4): return latex_caract[int(x["Note"])+1] @@ -78,7 +81,12 @@ def note_to_mark(x): """ if x["Niveau"]: + if x["Note"] == NOANSWER: + return 0 return x["Note"] * x["Bareme"] / 3 + + if x["Note"] > x["Bareme"]: + logger.warning(f"The note ({x['Note']}) is greated than the rating scale ({x['Bareme']}) at {x}") return x["Note"] def note_to_level(x): @@ -112,8 +120,7 @@ def note_to_level(x): >>> note_to_level(df.loc[10]) 2 """ - - if pd.isnull(x["Note"]): + if x["Note"] == NOANSWER: return "na" if pd.isnull(x["Bareme"]) or x["Bareme"] == 0: @@ -468,8 +475,8 @@ def digest_flat_df(flat_df): 2 0 E1 N2 1 4.0 01/10/2016 3.0 0.75 3 1 E2 N2 1 4.0 01/10/2016 NaN NaN """ - # Remove data with "nn" (non notés) - df = flat_df.copy()[flat_df["Note"].astype("object") != "nn"] + df = flat_df.dropna(subset=["Note"]) + df["Mark"] = compute_marks(df) df["Level"] = compute_level(df) df["Latex_rep"] = compute_latex_rep(df) diff --git a/samples/312.xlsx b/samples/312.xlsx index 7f825bc..b213127 100644 Binary files a/samples/312.xlsx and b/samples/312.xlsx differ