Việc phân tích dữ liệu ngành học và điểm số là một bước quan trọng trong việc đánh giá hiệu suất đào tạo của các trường đại học, cao đẳng hoặc tổ chức giáo dục. Dữ liệu này giúp bạn nhìn thấy xu hướng học tập theo từng chuyên ngành, so sánh giới tính, phân tích theo tín chỉ, và đưa ra nhận định hỗ trợ công tác tư vấn sinh viên hoặc cải thiện chương trình đào tạo.
Trong bài viết này, bạn sẽ học cách sử dụng Python để trực quan hóa và phân tích mối liên hệ giữa ngành học và điểm trung bình của sinh viên. Nếu bạn chưa quen với phân tích dữ liệu hoặc mô hình hóa, hãy xem lại bài Hướng dẫn sử dụng AutoML để tạo mô hình học máy nhanh chóng để làm quen với luồng xử lý dữ liệu.
Chuẩn bị dữ liệu từ Kaggle
Để đảm bảo sử dụng dataset thực tế, bài viết dùng tập “Students Performance in Exams” từ Kaggle – chứa dữ liệu điểm toán, đọc hiểu, viết, cùng thông tin giới tính, chủng tộc và nền tảng giáo dục của học sinh.
Trước khi load dữ liệu, bạn cần cài đặt pandas, seaborn, matplotlib để xử lý và trực quan hóa.
Mô tả dữ liệu:
| Cột | Mô tả |
|---|---|
gender |
Giới tính (male/female) |
race/ethnicity |
Nhóm chủng tộc từ A đến E |
parental level of education |
Trình độ học vấn của phụ huynh |
lunch |
Loại bữa trưa (standard hoặc free/reduced) |
test preparation course |
Đã hoàn thành khóa ôn thi hay chưa |
math score, reading score, writing score |
Điểm ba môn thi (0–100) |
Phân tích phân bố điểm theo giới tính
Phân tích điểm học theo giới tính giúp phát hiện xu hướng học tập, đồng thời hỗ trợ xây dựng chính sách giáo dục phù hợp cho từng nhóm học sinh. Với ba môn toán, đọc hiểu và viết, ta sẽ sử dụng boxplot để so sánh sự phân bố điểm giữa nam và nữ.
Boxplot không chỉ hiển thị median (trung vị), mà còn cho thấy khoảng biến thiên nội bộ và các outlier giúp đánh giá phân tán điểm số.
plt.figure(figsize=(15,5))
subjects = ['math score', 'reading score', 'writing score']
for i, subj in enumerate(subjects):
plt.subplot(1, 3, i+1)
sns.boxplot(data=df, x='gender', y=subj, palette='pastel')
plt.title(f'Distribution of {subj.capitalize()} by Gender')
plt.tight_layout()
plt.show()
So sánh điểm trung bình toàn môn theo chủng tộc
Sau khi có góc nhìn theo giới tính, ta tiếp tục phân tích theo yếu tố chủng tộc – thường là biến quan trọng trong các nghiên cứu nhân khẩu học giáo dục. Ta sẽ tính điểm trung bình ba môn và so sánh giữa các nhóm race/ethnicity.
Biểu đồ barplot rất thích hợp để so sánh trung bình giữa các nhóm danh mục rời rạc.
df['avg_score'] = df[['math score','reading score','writing score']].mean(axis=1)
plt.figure(figsize=(10,6))
sns.barplot(data=df, x='race/ethnicity', y='avg_score', palette='viridis')
plt.title('Average Score by Race/Ethnicity')
plt.ylabel('Average of All Subjects')
plt.tight_layout()
plt.show()
Ảnh hưởng của khóa ôn thi và loại bữa trưa
Hai yếu tố hành vi và điều kiện xã hội là việc học sinh có hoàn thành khóa ôn thi hay không, và loại bữa trưa mà học sinh được nhận (chuẩn hay miễn phí/giảm giá). Cả hai yếu tố đều có thể ảnh hưởng đến điểm trung bình toàn môn.
Ta sẽ sử dụng barplot để phân tích ảnh hưởng của từng yếu tố đến điểm trung bình, qua đó rút ra khuyến nghị chính sách.
plt.figure(figsize=(12,5))
plt.subplot(1,2,1)
sns.barplot(data=df, x='test preparation course', y='avg_score', palette='coolwarm')
plt.title('Impact of Test Prep Course on Avg Score')
plt.subplot(1,2,2)
sns.barplot(data=df, x='lunch', y='avg_score', palette='coolwarm')
plt.title('Impact of Lunch Type on Avg Score')
plt.tight_layout()
plt.show()
Phân tích đa chiều: test prep, giới tính và chủng tộc
Trong giáo dục, phân tích đơn biến là chưa đủ – bạn cần phân tích mối tương tác giữa nhiều yếu tố. Ví dụ, giới tính và chủng tộc ảnh hưởng thế nào đến hiệu quả của việc tham gia khóa ôn thi?
Với biểu đồ catplot của seaborn, bạn có thể nhanh chóng trực quan hóa dữ liệu phân nhóm theo nhiều chiều.
sns.catplot(data=df,
x='race/ethnicity',
y='avg_score',
hue='gender',
col='test preparation course',
kind='bar',
height=4,
aspect=1.2,
palette='magma')
plt.subplots_adjust(top=0.85)
plt.suptitle('Avg Score by Ethnicity, Gender, and Test Prep Status')
plt.show()
Kết luận
Bạn vừa thực hiện toàn bộ quy trình phân tích dữ liệu ngành học và điểm số học sinh bằng Python với tập dữ liệu thực tế từ Kaggle. Từ phân tích giới tính, chủng tộc, test preparation đến trực quan hóa đa chiều, bạn đã nắm được các kỹ thuật nền tảng trong phân tích dữ liệu giáo dục.
Tiếp theo, bạn có thể mở rộng bằng cách dùng mô hình AutoML để dự đoán học lực như đã trình bày trong bài viết trước, hoặc xây dựng dashboard phân tích bằng Streamlit hoặc Tableau.

