Skip to content

Repository files navigation

Student Performance Analytics System

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.

Features

  • 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

Technologies Used

  • Python 3

Libraries Used

  • pandas — data loading, cleaning, and aggregation
  • numpy — normalization and matrix-based score calculations
  • scipy — hypothesis testing (Pearson correlation, t-test)
  • matplotlib — data visualization

Folder Structure

Student-Performance-Analytics-System/
│── student_performance_analysis.ipynb
│── student_data.csv
│── student_data_processed.csv
│── README.md
│── requirements.txt
│── LICENSE
│── .gitignore

Installation

  1. Clone the repository:
git clone https://github.com/<your-username>/Student-Performance-Analytics-System.git
cd Student-Performance-Analytics-System
  1. Install the required libraries:
pip install -r requirements.txt

How to Run

  1. Open the notebook in Jupyter Notebook, JupyterLab, or Google Colab:
jupyter notebook student_performance_analysis.ipynb
  1. Run the cells in order from top to bottom.
  2. The notebook generates student_data.csv on first run and saves the cleaned, feature-engineered dataset to student_data_processed.csv at the end.

Dataset Information

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.

Analysis Performed

  • 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)

Visualizations Generated

  • Attendance distribution across students
  • Department-wise performance comparison
  • Semester-wise average marks
  • Attendance vs. final marks scatter relationship
  • Performance category breakdown (pie chart)

Skills Demonstrated

  • 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

Future Improvements

  • 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

Author

Farhan Khizar

License

This project is licensed under the MIT License. See the LICENSE file for details.

About

A beginner-friendly data analysis project using NumPy, Pandas, Matplotlib, and SciPy to analyze student performance and visualize insights.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages