Skip to content

Commit 7d49c5b

Browse files
committed
format script
1 parent dcbe2de commit 7d49c5b

File tree

1 file changed

+45
-21
lines changed

1 file changed

+45
-21
lines changed

extras/scripts/attendance.py

Lines changed: 45 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,41 +1,65 @@
11
import 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+
)
46
df = pd.read_csv(file_path)
57

68
df.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"]]
1119
df = df.apply(lambda x: x.str.strip() if x.dtype == "object" else x)
1220
df = 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")
1422
df = 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

4064
pd.set_option("display.max_rows", None)
4165
pd.set_option("display.max_columns", None)
@@ -44,4 +68,4 @@
4468
print("Students who attended all classes or missed only one:")
4569
print(filtered_students)
4670
print("\nStudents who missed more than one class:")
47-
print(missed_more_than_one_df)
71+
print(missed_more_than_one_df)

0 commit comments

Comments
 (0)