Trong thời đại dữ liệu số ngày nay, phân tích dữ liệu đóng vai trò khá quan trọng trong việc chúng ta muốn hiểu rõ hơn về các yếu tố ảnh hưởng đến kết quả học tập của sinh viên. NumPy là một trong những thư viện mạnh mẽ trong Python, cung cấp các công cụ để xử lý dữ liệu, phân tích, khai phá dữ liệu một cách nhanh chóng và hiệu quả. Bài viết này sẽ hướng dẫn các bạn cách sử dụng NumPy để phân tích dữ liệu sinh viên, đặc biệt là thái độ học tập của các bạn sinh viên và tác động của nó đến kết quả cuối kỳ.
1. Giới thiệu về NumPy
NumPy là viết tắt của “Numerical Python” và là một trong những thư viện cốt lõi dành cho khoa học dữ liệu trong Python. NumPy hỗ trợ việc thao tác với các mảng (arrays) và ma trận (matrices) cùng với nhiều hàm toán học hiệu suất cao. Đối với phân tích dữ liệu sinh viên, NumPy giúp ta xử lý nhanh chóng lượng dữ liệu lớn, thực hiện các phép chúng ta tính toán và phân tích số liệu với độ chính xác cao.
2. Tầm quan trọng của phân tích dữ liệu sinh viên
Dữ liệu sinh viên thường bao gồm nhiều yếu tố như điểm thi, số buổi tham gia lớp học, thời gian học tập, và đặc biệt là thái độ học tập của sinh viên. Việc phân tích những dữ liệu này có thể giúp thày cô giáo, nhà trường, giáo viên, và các nhà nghiên cứu giáo dục và đặc biệt là chính bản thân sinh viên muốn đạt ra các mục tiêu học tập tu dưỡng của mình để chúng ta cần xác định những yếu tố ảnh hưởng đến kết quả học tập của sinh viên và từ đó có những phương pháp cải thiện trong thời gian học tập ở trường và ở nhà.
Ưu điểm của thư viện Numpy
- Cốt lõi của Numpy là các mảng của nó. Một trong những ưu điểm chính của việc sử dụng mảng Numpy là chúng chiếm ít không gian bộ nhớ hơn và cung cấp tốc độ thời gian chạy tốt hơn khi so sánh với các cấu trúc dữ liệu tương tự trong python (danh sách và bộ dữ liệu).
- Numpy hỗ trợ một số chức năng khoa học cụ thể như đại số tuyến tính. Chúng giúp chúng ta giải các phương trình tuyến tính.
- Numpy hỗ trợ các hoạt động được vectơ hóa, như phép cộng và phép nhân từng phần tử, sản phẩm Kronecker tính toán, v.v…
- Nó là một sự thay thế rất tốt cho MATLAB, OCTAVE, v.v. vì nó cung cấp các chức năng và hỗ trợ tương tự với sự phát triển nhanh hơn và ít tốn kém tinh thần hơn (vì python rất dễ viết và dễ hiểu)
- NumPy rất tốt để phân tích dữ liệu.
3. Các bước sử dụng NumPy trong phân tích dữ liệu sinh viên
- Chuẩn bị dữ liệu
- Phân tích thống kế mô tả
- Phân tích mối quan hệ
- Dự báo và khuyến cáo
- Trực quan hóa dữ liệu
Kết quả của các công việc trên là một khuyến cáo muốn đạt kết quả học tập đạt loại khá, thì sinh viên cần thực hiện tối thiểu những nhiệm vụ trên.
3.1 Chuẩn bị dữ liệu
Đầu tiên, bạn cần tải dữ liệu từ file CSV hoặc Excel và chuẩn bị các cột dữ liệu. Dữ liệu được thu thập trong bài viết này đã khảo sát 1000 mẫu.
Code mẫu: đọc dữ liệu
import numpy as np import matplotlib.pyplot as plt # Đọc dữ liệu từ file CSV vào NumPy data = np.genfromtxt(‘du_lieu_sinh_vien.csv’, delimiter=’,’, dtype=None, encoding=’utf-8′, names=True) # Chuyển đổi các cột dữ liệu thành kiểu số tuoi = data[‘Tuổi’].astype(int) su_dung_cong_nghe = data[‘Mức độ sử dụng công nghệ (giờ/ngày)’].astype(int) thoi_gian_hoc_tap = data[‘Thời gian học tập chuyên cần trên lớp (%)’].astype(int) thoi_gian_tu_hoc = data[‘Thời gian tự học mỗi tuần (giờ)’].astype(int) thoi_gian_quiz = data[‘Thời gian tham gia làm bài tập Quiz (giờ)’].astype(int)# Chuyển đổi các cột phân loại thành số để phân tích thai_do_hoc_tap_numeric = np.where(data[‘Thái độ học tập’] == ‘Tích cực’, 2, np.where(data[‘Thái độ học tập’] == ‘Trung lập’, 1, 0)) muc_do_tap_trung_numeric = np.where(data[‘Mức độ tập trung khi học’] == ‘Cao’, 2, np.where(data[‘Mức độ tập trung khi học’] == ‘Trung bình’, 1, 0)) |
3.2 Phân tích thống kê mô tả
Tính toán các thống kê mô tả cho các cột dữ liệu và trực quan hóa chúng bằng biểu đồ.
Code mẫu:
def plot_histogram(data, title, xlabel): plt.figure(figsize=(10, 6)) plt.hist(data, bins=20, color=’skyblue’, edgecolor=’black’) plt.title(title) plt.xlabel(xlabel) plt.ylabel(‘Tần suất’) plt.grid(True) plt.show()# Vẽ biểu đồ phân phối plot_histogram(tuoi, ‘Phân phối tuổi của sinh viên’, ‘Tuổi’) plot_histogram(su_dung_cong_nghe, ‘Phân phối mức độ sử dụng công nghệ (giờ/ngày)’, ‘Mức độ sử dụng công nghệ (giờ/ngày)’) plot_histogram(thoi_gian_hoc_tap, ‘Phân phối thời gian học tập chuyên cần trên lớp (%)’, ‘Thời gian học tập chuyên cần (%)’) plot_histogram(thoi_gian_tu_hoc, ‘Phân phối thời gian tự học mỗi tuần (giờ)’, ‘Thời gian tự học mỗi tuần (giờ)’) plot_histogram(thoi_gian_quiz, ‘Phân phối thời gian làm bài tập Quiz (giờ)’, ‘Thời gian tham gia làm bài tập Quiz (giờ)’) |
3.3 Phân tích mối quan hệ
Sử dụng hệ số tương quan và trực quan hóa mối quan hệ giữa các biến.
Code mẫu:
def plot_scatter(x, y, xlabel, ylabel): plt.figure(figsize=(10, 6)) plt.scatter(x, y, alpha=0.5, color=’blue’) plt.title(f’Scatter plot giữa {xlabel} và {ylabel}’) plt.xlabel(xlabel) plt.ylabel(ylabel) plt.grid(True) plt.show()# Tính toán hệ số tương quan correlation_study_time = np.corrcoef(thoi_gian_tu_hoc, thoi_gian_hoc_tap)[0, 1] correlation_quiz_time = np.corrcoef(thoi_gian_quiz, thoi_gian_hoc_tap)[0, 1] correlation_attitude = np.corrcoef(thai_do_hoc_tap_numeric, thoi_gian_hoc_tap)[0, 1] correlation_concentration = np.corrcoef(muc_do_tap_trung_numeric, thoi_gian_hoc_tap)[0, 1]print(“Tương quan giữa thời gian tự học và thời gian học tập chuyên cần:”, correlation_study_time) print(“Tương quan giữa thời gian làm bài tập Quiz và thời gian học tập chuyên cần:”, correlation_quiz_time) print(“Tương quan giữa thái độ học tập và thời gian học tập chuyên cần:”, correlation_attitude) print(“Tương quan giữa mức độ tập trung khi học và thời gian học tập chuyên cần:”, correlation_concentration)# Vẽ biểu đồ phân tán plot_scatter(thoi_gian_tu_hoc, thoi_gian_hoc_tap, ‘Thời gian tự học mỗi tuần (giờ)’, ‘Thời gian học tập chuyên cần (%)’) plot_scatter(thoi_gian_quiz, thoi_gian_hoc_tap, ‘Thời gian tham gia làm bài tập Quiz (giờ)’, ‘Thời gian học tập chuyên cần (%)’) plot_scatter(thai_do_hoc_tap_numeric, thoi_gian_hoc_tap, ‘Thái độ học tập’, ‘Thời gian học tập chuyên cần (%)’) plot_scatter(muc_do_tap_trung_numeric, thoi_gian_hoc_tap, ‘Mức độ tập trung khi học’, ‘Thời gian học tập chuyên cần (%)’) |
3.4 Dự báo và khuyến cáo
Dựa trên các mối quan hệ quan sát được, đưa ra khuyến cáo cụ thể dựa trên việc phân tích mỗi tương quan các trường thông tin khi thực hiện khảo sát.
Code mẫu:
def give_recommendations(correlation, label_x, label_y, threshold=0.5): if correlation > threshold: print(f”Khuyến cáo: Tăng cường {label_x} có thể giúp cải thiện {label_y}.”) elif correlation < -threshold: print(f”Khuyến cáo: Cần xem xét giảm bớt {label_x} nếu có thể ảnh hưởng tiêu cực đến {label_y}.”) else: print(f”Không có ảnh hưởng rõ ràng từ {label_x} đến {label_y}.”)# Đưa ra khuyến cáo dựa trên phân tích tương quan give_recommendations(correlation_study_time, ‘thời gian tự học mỗi tuần’, ‘kết quả học tập chuyên cần’) give_recommendations(correlation_quiz_time, ‘thời gian làm bài tập Quiz’, ‘kết quả học tập chuyên cần’) give_recommendations(correlation_attitude, ‘thái độ học tập’, ‘kết quả học tập chuyên cần’) give_recommendations(correlation_concentration, ‘mức độ tập trung khi học’, ‘kết quả học tập chuyên cần’) |
3.5 Trực quan hóa dữ liệu
Cung cấp các biểu đồ giúp bạn dễ dàng hình dung dữ liệu và mối quan hệ giữa các biến.
Code mẫu:
# Vẽ biểu đồ phân phối cho từng biến plot_histogram(tuoi, ‘Phân phối tuổi của sinh viên’, ‘Tuổi’) plot_histogram(su_dung_cong_nghe, ‘Phân phối mức độ sử dụng công nghệ (giờ/ngày)’, ‘Mức độ sử dụng công nghệ (giờ/ngày)’) plot_histogram(thoi_gian_hoc_tap, ‘Phân phối thời gian học tập chuyên cần trên lớp (%)’, ‘Thời gian học tập chuyên cần (%)’) plot_histogram(thoi_gian_tu_hoc, ‘Phân phối thời gian tự học mỗi tuần (giờ)’, ‘Thời gian tự học mỗi tuần (giờ)’) plot_histogram(thoi_gian_quiz, ‘Phân phối thời gian làm bài tập Quiz (giờ)’, ‘Thời gian tham gia làm bài tập Quiz (giờ)’)# Vẽ biểu đồ phân tán cho mối quan hệ giữa các biến plot_scatter(thoi_gian_tu_hoc, thoi_gian_hoc_tap, ‘Thời gian tự học mỗi tuần (giờ)’, ‘Thời gian học tập chuyên cần (%)’) plot_scatter(thoi_gian_quiz, thoi_gian_hoc_tap, ‘Thời gian tham gia làm bài tập Quiz (giờ)’, ‘Thời gian học tập chuyên cần (%)’) plot_scatter(thai_do_hoc_tap_numeric, thoi_gian_hoc_tap, ‘Thái độ học tập’, ‘Thời gian học tập chuyên cần (%)’) plot_scatter(muc_do_tap_trung_numeric, thoi_gian_hoc_tap, ‘Mức độ tập trung khi học’, ‘Thời gian học tập chuyên cần (%)’) |
4. Kết luận
Trong quá trình phân tích và khai phá dữ liệu sinh viên để dự báo kết quả học tập, việc sử dụng NumPy đã cho thấy hiệu quả mạnh mẽ trong xử lý các phép tính số học, thống kê và mối quan hệ giữa các biến. NumPy cung cấp khả năng xử lý dữ liệu nhanh chóng với các mảng số học và công cụ tính toán hiệu suất cao, đặc biệt hữu ích khi làm việc với tập dữ liệu lớn.
Qua bài toán phân tích dữ liệu sinh viên, chúng ta đã thấy:
- Thống kê mô tả: NumPy hỗ trợ dễ dàng trong việc tính toán các chỉ số thống kê mô tả như trung bình, độ lệch chuẩn, và phân phối của các biến như tuổi, thời gian tự học, mức độ sử dụng công nghệ, v.v. Điều này giúp chúng ta hiểu rõ hơn về đặc điểm chung của tập dữ liệu.
- Phân tích mối quan hệ: NumPy giúp tính toán hệ số tương quan để xác định mối quan hệ giữa các yếu tố như thời gian tự học, thái độ học tập và kết quả học tập chuyên cần. Phân tích này giúp tìm ra các yếu tố quan trọng ảnh hưởng đến kết quả học tập, từ đó đưa ra khuyến cáo cải thiện.
- Trực quan hóa dữ liệu: Sử dụng thư viện Matplotlib cùng với NumPy, chúng ta có thể trực quan hóa các phân phối và mối quan hệ giữa các biến thông qua các biểu đồ histogram và scatter plot. Những biểu đồ này giúp dễ dàng nhận diện các xu hướng và tương quan trong dữ liệu.
- Khuyến cáo: Dựa trên kết quả phân tích, chúng ta có thể đưa ra các khuyến cáo cụ thể cho sinh viên để cải thiện kết quả học tập. Ví dụ, nếu thời gian tự học có mối quan hệ tích cực với kết quả học tập, sinh viên nên tăng cường tự học để đạt được kết quả khá.
Nhìn chung, NumPy là công cụ mạnh mẽ và linh hoạt cho việc phân tích và khai phá dữ liệu học tập của sinh viên. Khả năng xử lý dữ liệu nhanh chóng và tính toán chính xác của NumPy giúp hỗ trợ việc ra quyết định dựa trên dữ liệu, đồng thời cung cấp cơ sở khoa học cho các khuyến cáo trong việc nâng cao kết quả học tập.
Giảng viên Tạ Đăng Chí
Bộ môn Ứng dụng phần mềm
FPT Polytechnic Hà Nội