11import pandas as pd
22
3- file_path = "/content/attendance_reports_attendance-264e4d14-1765-4396-b311-4d927b59566d.csv"
3+ file_path = (
4+ "/content/attendance_reports_attendance-264e4d14-1765-4396-b311-4d927b59566d.csv"
5+ )
46df = pd .read_csv (file_path )
57
68df .columns = df .columns .str .strip ()
7- df = df .rename (columns = {'Course ID' : 'Section Name' , 'Student ID' : 'Student Name' ,
8- 'Class Date' : 'Date' , 'Attendance' : 'Status' })
9+ df = df .rename (
10+ columns = {
11+ "Course ID" : "Section Name" ,
12+ "Student ID" : "Student Name" ,
13+ "Class Date" : "Date" ,
14+ "Attendance" : "Status" ,
15+ }
16+ )
917
10- df = df [[' Section Name' , ' Student Name' , ' Date' , ' Status' ]]
18+ df = df [[" Section Name" , " Student Name" , " Date" , " Status" ]]
1119df = df .apply (lambda x : x .str .strip () if x .dtype == "object" else x )
1220df = df .reset_index (drop = True )
13- df [' Date' ] = pd .to_datetime (df [' Date' ], format = ' %m/%d/%y' , errors = ' coerce' )
21+ df [" Date" ] = pd .to_datetime (df [" Date" ], format = " %m/%d/%y" , errors = " coerce" )
1422df = df .loc [:, ~ df .columns .duplicated ()]
1523
16- total_classes = df [' Date' ].nunique ()
24+ total_classes = df [" Date" ].nunique ()
1725
1826
19- attendance_counts = df .groupby (['Student Name' , 'Date' ])['Status' ].apply (lambda x : (x == 'present' ).sum ()).reset_index ()
27+ attendance_counts = (
28+ df .groupby (["Student Name" , "Date" ])["Status" ]
29+ .apply (lambda x : (x == "present" ).sum ())
30+ .reset_index ()
31+ )
2032
21- total_attended = attendance_counts .groupby (' Student Name' )[ ' Status' ].sum ().reset_index ()
22- total_attended .columns = [' Student Name' , ' Total Attended' ]
33+ total_attended = attendance_counts .groupby (" Student Name" )[ " Status" ].sum ().reset_index ()
34+ total_attended .columns = [" Student Name" , " Total Attended" ]
2335
24- students_all_present = total_attended [total_attended ['Total Attended' ] == total_classes ]['Student Name' ].tolist ()
25- students_missed_one = total_attended [total_attended ['Total Attended' ] == total_classes - 1 ]['Student Name' ].tolist ()
36+ students_all_present = total_attended [
37+ total_attended ["Total Attended" ] == total_classes
38+ ]["Student Name" ].tolist ()
39+ students_missed_one = total_attended [
40+ total_attended ["Total Attended" ] == total_classes - 1
41+ ]["Student Name" ].tolist ()
2642
27- filtered_students = pd .DataFrame ({
28- 'Student Name' : students_all_present + students_missed_one ,
29- 'Attendance Status' : ['All Present' ] * len (students_all_present ) + ['Missed One' ] * len (students_missed_one )
30- })
43+ filtered_students = pd .DataFrame (
44+ {
45+ "Student Name" : students_all_present + students_missed_one ,
46+ "Attendance Status" : ["All Present" ] * len (students_all_present )
47+ + ["Missed One" ] * len (students_missed_one ),
48+ }
49+ )
3150
3251# students who missed more than one class
33- students_missed_more_than_one = total_attended [total_attended ['Total Attended' ] < total_classes - 1 ]['Student Name' ].tolist ()
52+ students_missed_more_than_one = total_attended [
53+ total_attended ["Total Attended" ] < total_classes - 1
54+ ]["Student Name" ].tolist ()
3455
35- missed_more_than_one_df = pd .DataFrame ({
36- 'Student Name' : students_missed_more_than_one ,
37- 'Attendance Status' : ['Missed More Than One' ] * len (students_missed_more_than_one )
38- })
56+ missed_more_than_one_df = pd .DataFrame (
57+ {
58+ "Student Name" : students_missed_more_than_one ,
59+ "Attendance Status" : ["Missed More Than One" ]
60+ * len (students_missed_more_than_one ),
61+ }
62+ )
3963
4064pd .set_option ("display.max_rows" , None )
4165pd .set_option ("display.max_columns" , None )
4468print ("Students who attended all classes or missed only one:" )
4569print (filtered_students )
4670print ("\n Students who missed more than one class:" )
47- print (missed_more_than_one_df )
71+ print (missed_more_than_one_df )
0 commit comments