ProfessorLeVesseur commited on
Commit
4586bfa
·
verified ·
1 Parent(s): a280495

Update data_processor.py

Browse files
Files changed (1) hide show
  1. data_processor.py +11 -12
data_processor.py CHANGED
@@ -188,9 +188,6 @@
188
 
189
 
190
 
191
-
192
-
193
-
194
  import re
195
  import pandas as pd
196
  import os
@@ -277,7 +274,7 @@ class DataProcessor:
277
  return self.intervention_column
278
 
279
  def compute_intervention_statistics(self, df):
280
- intervention_column = self.find_intervention_column(df)
281
  total_days = len(df)
282
  sessions_held = df[intervention_column].str.strip().str.lower().eq('yes').sum()
283
  intervention_frequency = (sessions_held / total_days) * 100 if total_days > 0 else 0
@@ -337,9 +334,6 @@ class DataProcessor:
337
 
338
  total_sessions = sum(engagement_counts.values())
339
 
340
- engagement_pct = (engagement_counts[self.ENGAGED_STR] / total_sessions * 100) if total_sessions > 0 else 0
341
- engagement_pct = round(engagement_pct)
342
-
343
  engaged_pct = (engagement_counts[self.ENGAGED_STR] / total_sessions * 100) if total_sessions > 0 else 0
344
  engaged_pct = round(engaged_pct)
345
 
@@ -352,11 +346,15 @@ class DataProcessor:
352
  absent_pct = (engagement_counts['Absent'] / total_sessions * 100) if total_sessions > 0 else 0
353
  absent_pct = round(absent_pct)
354
 
 
 
 
 
355
  # Determine if the student attended ≥ 90% of sessions
356
  attended_90 = "Yes" if attendance_pct >= 90 else "No"
357
 
358
  # Determine if the student was engaged ≥ 80% of the time
359
- engaged_80 = "Yes" if engaged_pct >= 80 else "No"
360
 
361
  # Store metrics in the required order
362
  student_metrics[student_name] = {
@@ -377,10 +375,10 @@ class DataProcessor:
377
 
378
  def compute_average_metrics(self, student_metrics_df):
379
  # Calculate the attendance and engagement average percentages across students
380
- attendance_avg_stats = student_metrics_df['Attendance (%)'].mean() # Calculate the average attendance percentage
381
- engagement_avg_stats = student_metrics_df['Engagement (%)'].mean() # Calculate the average engagement percentage
382
 
383
- # Round the averages to make them whole numbers
384
  attendance_avg_stats = round(attendance_avg_stats)
385
  engagement_avg_stats = round(engagement_avg_stats)
386
 
@@ -391,4 +389,5 @@ class DataProcessor:
391
  return "Address Attendance"
392
  elif row["Engagement ≥ 80%"] == "No":
393
  return "Address Engagement"
394
- return "Consider barriers, fidelity, and progress monitoring"
 
 
188
 
189
 
190
 
 
 
 
191
  import re
192
  import pandas as pd
193
  import os
 
274
  return self.intervention_column
275
 
276
  def compute_intervention_statistics(self, df):
277
+ intervention_column = self.get_intervention_column(df)
278
  total_days = len(df)
279
  sessions_held = df[intervention_column].str.strip().str.lower().eq('yes').sum()
280
  intervention_frequency = (sessions_held / total_days) * 100 if total_days > 0 else 0
 
334
 
335
  total_sessions = sum(engagement_counts.values())
336
 
 
 
 
337
  engaged_pct = (engagement_counts[self.ENGAGED_STR] / total_sessions * 100) if total_sessions > 0 else 0
338
  engaged_pct = round(engaged_pct)
339
 
 
346
  absent_pct = (engagement_counts['Absent'] / total_sessions * 100) if total_sessions > 0 else 0
347
  absent_pct = round(absent_pct)
348
 
349
+ # Engagement percentage is based on Engaged and Partially Engaged sessions
350
+ engagement_pct = ((engagement_counts[self.ENGAGED_STR] + engagement_counts[self.PARTIALLY_ENGAGED_STR]) / total_sessions * 100) if total_sessions > 0 else 0
351
+ engagement_pct = round(engagement_pct)
352
+
353
  # Determine if the student attended ≥ 90% of sessions
354
  attended_90 = "Yes" if attendance_pct >= 90 else "No"
355
 
356
  # Determine if the student was engaged ≥ 80% of the time
357
+ engaged_80 = "Yes" if engagement_pct >= 80 else "No"
358
 
359
  # Store metrics in the required order
360
  student_metrics[student_name] = {
 
375
 
376
  def compute_average_metrics(self, student_metrics_df):
377
  # Calculate the attendance and engagement average percentages across students
378
+ attendance_avg_stats = student_metrics_df['Attendance (%)'].mean() # Average attendance percentage
379
+ engagement_avg_stats = student_metrics_df['Engagement (%)'].mean() # Average engagement percentage
380
 
381
+ # Round the averages to whole numbers
382
  attendance_avg_stats = round(attendance_avg_stats)
383
  engagement_avg_stats = round(engagement_avg_stats)
384
 
 
389
  return "Address Attendance"
390
  elif row["Engagement ≥ 80%"] == "No":
391
  return "Address Engagement"
392
+ else:
393
+ return "Consider barriers, fidelity, and progress monitoring"