Hỗ trợ đồ án, khóa luận Web, App, AI - Uy tín, chất lượng!
Hỗ trợ đồ án, khóa luận Web, App, AI - Uy tín, chất lượng!
Trang Chủ Hướng Dẫn Đồ Án Phân tích dữ liệu điểm danh sinh viên theo thời gian
Hướng Dẫn Đồ ÁnLập Trình AI

Phân tích dữ liệu điểm danh sinh viên theo thời gian

Chia sẻ
Chia sẻ

Phân tích dữ liệu điểm danh giúp giáo viên và nhà trường phát hiện xu hướng chuyên cần theo ngày, tuần hoặc tháng, từ đó đưa ra chiến lược hỗ trợ sinh viên hiệu quả. Khi dữ liệu được ghi nhận theo thời gian, chúng ta có thể truy xuất các hành vi quan trọng như tỷ lệ vắng, giờ cao điểm vắng mặt, hoặc lớp nào cần chú ý hơn.

Nếu bạn mới bắt đầu, hãy tham khảo Giải thích các bước xây dựng pipeline học máy, bài Hướng dẫn xử lý thiếu dữ liệu trong Pandas để hiểu cách làm sạch dữ liệu, và bài Hướng dẫn xây dựng mô hình dự đoán điểm thi bằng Machine Learning để hình dung quy trình từ dữ liệu đến mô hình.

Mô tả bài toán

Bài toán đặt ra là: từ dữ liệu điểm danh hàng ngày của sinh viên, phân tích và trực quan hóa để tìm ra xu hướng chuyên cần theo thời gian (ngày, tuần, tháng), theo từng trường học và phát hiện các trường, nhóm sinh viên cần quan tâm.

Chúng ta sẽ sử dụng dataset School Student Daily Attendance từ Kaggle, mục tiêu cuối cùng là tạo một báo cáo phân tích với đồ thị, heatmap và các chỉ số hỗ trợ ra quyết định quản lý.

Dataset và link tải

Dataset School Student Daily Attendance có cấu trúc:

  • date – ngày điểm danh

  • school_name – tên trường

  • student_count – tổng số sinh viên

  • present_count – số sinh viên có mặt

  • absent_count – số sinh viên vắng mặt

📥 Link tải CSV từ Kaggle (menu Download):
https://www.kaggle.com/datasets/sahirmaharajj/school-student-daily-attendance

Sau khi đăng nhập, bạn click Download để có file school_daily_attendance.csv.

Cài đặt và đọc dữ liệu

!pip install pandas matplotlib seaborn

import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns

# Đọc dữ liệu
df = pd.read_csv('/content/school_daily_attendance.csv')
print(df.shape)
print(df.columns)
print(df.head())
print(df.info())

– Xem cấu trúc dữ liệu: cột, kiểu dữ liệu, độ dài
info() giúp xác định nếu có giá trị null
head() cung cấp cái nhìn đầu tiên về nội dung

Tiền xử lý dữ liệu

Chúng ta sẽ chuẩn hóa các cột để dễ phân tích hơn:

df['date'] = pd.to_datetime(df['date'])
df['attendance_rate'] = df['present_count'] / df['student_count'] * 100
df['week'] = df['date'].dt.isocalendar().week
df['month'] = df['date'].dt.month
  • Chuyển date sang datetime

  • Tính attendance_rate (tỷ lệ chuyên cần)

  • Tạo cột weekmonth để phân tích theo khoảng thời gian

Thống kê cơ bản

Tổng quan theo ngày

daily = df.groupby('date')['attendance_rate'].mean().reset_index()
plt.figure(figsize=(14,6))
sns.lineplot(data=daily, x='date', y='attendance_rate')
plt.title('Tỷ lệ chuyên cần trung bình theo ngày')
plt.ylabel('Attendance Rate (%)')
plt.xlabel('Ngày')
plt.xticks(rotation=45)
plt.show()

Cho thấy chất lượng chuyên cần theo từng ngày, dễ định vị những ngày đột biến.

Xu hướng theo tuần

weekly = df.groupby('week')['attendance_rate'].mean().reset_index()
sns.lineplot(data=weekly, x='week', y='attendance_rate')
plt.title('Chuyên cần theo tuần')
plt.xlabel('Tuần trong năm')
plt.ylabel('Attendance Rate (%)')
plt.show()

Xu hướng theo tháng

monthly = df.groupby('month')['attendance_rate'].mean().reset_index()
sns.barplot(data=monthly, x='month', y='attendance_rate', palette='Blues')
plt.title('Chuyên cần theo tháng')
plt.xlabel('Tháng')
plt.ylabel('Attendance Rate (%)')
plt.show()

Phân tích theo địa điểm (trường)

Xem top/bottom trường

by_school = df.groupby('school_name')['attendance_rate'].mean().reset_index()
top10 = by_school.sort_values('attendance_rate', ascending=False).head(10)
bottom10 = by_school.sort_values('attendance_rate').head(10)

plt.figure(figsize=(10,6))
sns.barplot(data=top10, y='school_name', x='attendance_rate', palette='viridis')
plt.title('Top10 chuyên cần cao nhất')
plt.xlabel('Attendance Rate (%)')
plt.ylabel('Trường')
plt.show()

Heatmap tỷ lệ theo tháng và trường

pivot = df.pivot_table(index='school_name', columns='month',
                       values='attendance_rate', aggfunc='mean')
plt.figure(figsize=(12,10))
sns.heatmap(pivot, cmap='YlGnBu')
plt.title('Heatmap chuyên cần theo trường và tháng')
plt.xlabel('Tháng')
plt.ylabel('Trường')
plt.show()

Phân tích nâng cao

Biến động thời điểm theo ngày trong tuần

df['weekday'] = df['date'].dt.day_name()
avg_by_weekday = df.groupby('weekday')['attendance_rate'].mean().reindex(
    ['Monday','Tuesday','Wednesday','Thursday','Friday','Saturday','Sunday']).reset_index()

sns.barplot(data=avg_by_weekday, x='weekday', y='attendance_rate', palette='magma')
plt.title('Chuyên cần theo ngày trong tuần')
plt.xlabel('Ngày trong tuần')
plt.ylabel('Attendance Rate (%)')
plt.xticks(rotation=45)
plt.show()

Phân loại trường theo mức tham gia

conditions = [
    df['attendance_rate'] >= 95,
    df['attendance_rate'] >= 90,
    df['attendance_rate'] < 90
]
choices = ['Excellent','Good','Needs Improvement']
df['status'] = np.select(conditions, choices, default='Needs Improvement')

Tỉ lệ theo trạng thái

status_rate = df['status'].value_counts(normalize=True*100)
print(status_rate)

Ứng dụng báo cáo quản lý

  • Cảnh báo theo tuần nếu < 90% chuyên cần

  • Dashboard hiển thị heatmap, xu hướng dòng thời gian

  • Bộ lọc theo sản phẩm/performance/district

Kết luận

Phân tích dữ liệu điểm danh sinh viên theo thời gian cho thấy bức tranh toàn cảnh về chuyên cần tại các trường học. Qua dataset Kaggle, chúng ta đã áp dụng kỹ năng Pandas và Seaborn để khám phá xu hướng theo ngày, tuần, tháng, và địa điểm.

Hướng tiếp theo, bạn có thể triển khai dashboard để giáo viên giám sát tỷ lệ chuyên cần theo thời gian thực, cảnh báo sinh viên vắng nhiều hoặc tích hợp với hệ thống quản lý học tập (LMS).

Tham Gia Nhóm – Hỗ Trợ Lập Trình

Hỗ Trợ Đồ Án – ThueDoAn.vn

Liên quan
Hướng Dẫn Đồ Án

Checklist 10 bước kiểm tra cuối cùng trước khi nhấn nút nộp đồ án

Thời điểm chuẩn bị nhấn nút nộp đồ án luôn mang lại...

Hướng Dẫn Đồ Án

Tuyệt chiêu đối phó với những giảng viên hướng dẫn ‘khó tính’ nhất

Giai đoạn làm đồ án tốt nghiệp luôn đi kèm với vô...

Hướng Dẫn Đồ Án

Tại sao việc quản lý Source Code bằng Git lại quan trọng hơn bạn nghĩ?

Trong thế giới lập trình hiện đại, mã nguồn chính là linh...

Hướng Dẫn Đồ Án

Những chức năng ‘thừa’ khiến bạn tốn thời gian mà không được cộng điểm

Làm đồ án tốt nghiệp là một cuộc đua thực thụ với...

Hướng Dẫn Đồ Án

Cách xử lý khi đề tài bị trùng lặp ý tưởng với các khóa trước quá nhiều

Lựa chọn đề tài đồ án luôn là bước khởi đầu đầy...

Hướng Dẫn Đồ Án

Làm sao để giải trình với giảng viên khi code bị nghi ngờ là đi chép?

Trong quá trình thực hiện đồ án, việc tham khảo mã nguồn...

Hướng Dẫn Đồ Án

Cảnh báo: Những nguồn share code ‘rác’ trên mạng cần tuyệt đối tránh

Trong quá trình làm đồ án, việc tìm kiếm sự hỗ trợ...

Hướng Dẫn Đồ Án

Sai lầm khi chọn công nghệ quá khó so với năng lực thực tế của bản thân

Chọn đề tài và công nghệ cho đồ án luôn là bước...

Liên Hệ
Liên hệ để được tư vấn & hỗ trợ đồ án CNTT nhé bạn!