A Python-based data analysis project that explores the relationship between student engagement (attendance, library visits, LMS logins, lab usage, assignment submissions) and academic outcomes (midterm and final marks). The project cleans a raw dataset, engineers a composite performance score, runs statistical hypothesis tests, and visualizes the results.
- Cleans raw student records by handling missing values and removing duplicate entries
- Generates descriptive statistics (mean, min, max, std) for all numeric columns
- Groups and compares performance by department and by semester
- Identifies top-performing students and flags students who may need academic support
- Answers targeted analytical questions (e.g. which department scores highest, which factor correlates most with final marks)
- Normalizes engagement-related features to a 0–100 scale using NumPy
- Builds an Engagement Score from weighted normalized features using matrix multiplication
- Computes an Academic Score and a final weighted Performance Score for every student
- Runs two hypothesis tests with SciPy:
- Pearson correlation test — attendance percentage vs. final marks
- Independent samples t-test — final marks for high vs. low LMS login frequency groups
- Visualizes attendance distribution, department-wise performance, semester-wise averages, the attendance–final marks relationship, and the breakdown of students into performance categories
- Categorizes students into Top Performer, Average, and At Risk groups
- Exports the fully processed dataset to a new CSV file
- Python 3
- pandas — data loading, cleaning, and aggregation
- numpy — normalization and matrix-based score calculations
- scipy — hypothesis testing (Pearson correlation, t-test)
- matplotlib — data visualization
Student-Performance-Analytics-System/
│── student_performance_analysis.ipynb
│── student_data.csv
│── student_data_processed.csv
│── README.md
│── requirements.txt
│── LICENSE
│── .gitignore
- Clone the repository:
git clone https://github.com/<your-username>/Student-Performance-Analytics-System.git
cd Student-Performance-Analytics-System
- Install the required libraries:
pip install -r requirements.txt
- Open the notebook in Jupyter Notebook, JupyterLab, or Google Colab:
jupyter notebook student_performance_analysis.ipynb
- Run the cells in order from top to bottom.
- The notebook generates
student_data.csvon first run and saves the cleaned, feature-engineered dataset tostudent_data_processed.csvat the end.
The dataset contains 20 unique student records (plus one intentionally duplicated row to demonstrate duplicate handling) across four departments — CS, AI, SE, and DS. Each record includes:
- Student ID, Department, Semester
- Attendance Percentage
- Library Visits per Month
- LMS Login Frequency
- Lab Usage Hours
- Assignment Submission Rate
- Midterm Marks and Final Marks
The dataset is generated directly inside the notebook and also included as a standalone CSV file for reference. It contains two intentionally missing values (Library Visits and Lab Usage Hours) to demonstrate the data-cleaning workflow.
- Missing value detection and imputation using column means
- Duplicate detection and removal
- Descriptive statistics across all numeric features
- Department-wise and semester-wise performance summaries
- Top 5 performer ranking and at-risk student identification (attendance below 70% or final marks below 50)
- Correlation analysis to find which engagement factor relates most strongly to final marks
- Feature normalization (min-max scaling to 0–100)
- Weighted Engagement Score calculation using matrix multiplication
- Academic Score and final Performance Score calculation
- Pearson correlation test: attendance percentage vs. final marks
- Independent samples t-test: final marks by LMS login frequency (high vs. low groups)
- Attendance distribution across students
- Department-wise performance comparison
- Semester-wise average marks
- Attendance vs. final marks scatter relationship
- Performance category breakdown (pie chart)
- Data cleaning and preprocessing with pandas
- Feature engineering and normalization with NumPy
- Statistical hypothesis testing with SciPy
- Data visualization with Matplotlib
- Exploratory data analysis and reporting on a structured dataset
- Expand the dataset with more student records for more robust statistical results
- Add predictive modeling (e.g. regression) to estimate final marks from engagement features
- Turn the analysis into a reusable script or simple dashboard
- Add automated tests for the data-cleaning and scoring functions
Farhan Khizar
This project is licensed under the MIT License. See the LICENSE file for details.