ProfessorLeVesseur commited on
Commit
f1dbea8
·
verified ·
1 Parent(s): 25cd278

Update data_processor.py

Browse files
Files changed (1) hide show
  1. data_processor.py +13 -5
data_processor.py CHANGED
@@ -369,6 +369,12 @@ class DataProcessor:
369
  for col in student_columns:
370
  student_name = col.replace('Student Attendance [', '').replace(']', '').strip()
371
  student_data = intervention_df[[col]].copy()
 
 
 
 
 
 
372
  student_data[col] = student_data[col].fillna('Absent')
373
 
374
  # Classify each entry
@@ -452,17 +458,19 @@ class DataProcessor:
452
  return student_metrics_df
453
 
454
  def compute_average_metrics(self, student_metrics_df):
455
- # Calculate the attendance and engagement average percentages across students
456
- attendance_avg_stats = student_metrics_df['Attendance (%)'].mean() # Average attendance percentage
457
- # engagement_avg_stats = student_metrics_df['Engagement (%)'].mean() # Average engagement percentage REMOVED REMOVED
458
- engagement_avg_stats = student_metrics_df[f'{self.ENGAGED_STR} (%)'].mean() # Average engagement percentage
 
 
459
 
460
  # Round the averages to whole numbers
461
  attendance_avg_stats = round(attendance_avg_stats)
462
  engagement_avg_stats = round(engagement_avg_stats)
463
 
464
  return attendance_avg_stats, engagement_avg_stats
465
-
466
  def evaluate_student(self, row, attendance_threshold=90, engagement_threshold=80):
467
  if row["Attended ≥ 90%"] == "No":
468
  return "Address Attendance"
 
369
  for col in student_columns:
370
  student_name = col.replace('Student Attendance [', '').replace(']', '').strip()
371
  student_data = intervention_df[[col]].copy()
372
+
373
+ # Check if the student is still active (has non-empty cells in recent sessions)
374
+ is_active = student_data[col].notna().any()
375
+ if not is_active:
376
+ continue # Skip inactive students
377
+
378
  student_data[col] = student_data[col].fillna('Absent')
379
 
380
  # Classify each entry
 
458
  return student_metrics_df
459
 
460
  def compute_average_metrics(self, student_metrics_df):
461
+ # Filter out rows with NaN values (inactive students)
462
+ active_students_df = student_metrics_df.dropna()
463
+
464
+ # Calculate the attendance and engagement average percentages across active students
465
+ attendance_avg_stats = active_students_df['Attendance (%)'].mean()
466
+ engagement_avg_stats = active_students_df[f'{self.ENGAGED_STR} (%)'].mean()
467
 
468
  # Round the averages to whole numbers
469
  attendance_avg_stats = round(attendance_avg_stats)
470
  engagement_avg_stats = round(engagement_avg_stats)
471
 
472
  return attendance_avg_stats, engagement_avg_stats
473
+
474
  def evaluate_student(self, row, attendance_threshold=90, engagement_threshold=80):
475
  if row["Attended ≥ 90%"] == "No":
476
  return "Address Attendance"