This project explores Student Examination Performance using Python and Exploratory Data Analysis (EDA).
The analysis investigates patterns in mathematics, reading, and writing scores and examines how student performance varies across factors such as test preparation, gender, parental level of education, race/ethnicity, and lunch type.
The project demonstrates a complete beginner data-analysis workflow, including data inspection, feature engineering, exploratory analysis, visualization, correlation analysis, and interpretation of results.
The objectives of this project are to:
- Understand the structure of the dataset.
- Check for missing values and review data types.
- Calculate total and average student scores.
- Compare academic performance across different student groups.
- Create visualizations to identify key trends.
- Analyse correlations between mathematics, reading, and writing scores.
- Summarize key findings from the analysis.
- Python
- Pandas
- Matplotlib
- Seaborn
- Jupyter Notebook
- Git & GitHub
The dataset contains 1,000 student records and includes the following original variables:
- Gender.
- Race/Ethnicity.
- Parental Level of Education.
- Lunch Type.
- Test Preparation Course.
- Mathematics Score..
- Reading Score
- Writing Score.
Two additional features were created during the analysis:
total_score— sum of mathematics, reading, and writing scores.average_score— overall average across the three subjects.
The project includes:
- Data loading and inspection.
- Missing-value analysis.
- Data-type inspection.
- Descriptive statistics.
- Feature engineering.
- Exploratory Data Analysis (EDA).
- Group comparisons.
- Data visualization.
- Correlation analysis.
- Reading vs. writing scatter-plot analysis.
Students who completed the test preparation course achieved an average score of approximately 72.7, compared with approximately 65.0 among students who did not complete the course.
Female students recorded an overall average score of approximately 69.6, compared with approximately 65.8 for male students.
Student performance varied across parental education categories. The master's degree category recorded one of the highest average scores at approximately 73.6, while the high-school category averaged approximately 63.1.
Average performance varied across the dataset's race/ethnicity groups. Group E recorded the highest average at approximately 72.8, while Group A recorded approximately 63.0.
These results are descriptive and should not be interpreted as evidence that race/ethnicity causes differences in academic performance.
Students receiving a standard lunch recorded an average score of approximately 70.8, compared with approximately 62.2 among students receiving free/reduced lunch.
Mathematics, reading, and writing scores showed positive correlations.
| Subjects | Correlation |
|---|---|
| Mathematics & Reading | 0.82 |
| Mathematics & Writing | 0.80 |
| Reading & Writing | 0.95 |
The strongest relationship was observed between reading and writing scores, with a correlation of approximately 0.95.
The analysis suggests that academic performance is associated with several factors in this dataset, including test preparation, lunch type, and parental education.
Reading and writing performance also show a particularly strong positive relationship.
These findings demonstrate associations rather than direct cause-and-effect relationships.
This project demonstrates practical experience with:
- Data manipulation using Pandas.
- Data inspection and cleaning.
- Feature engineering.
- Descriptive statistics.
groupby()operations.- Exploratory Data Analysis.
- Matplotlib visualizations.
- Seaborn heatmaps.
- Correlation analysis.
- Data interpretation.
- Communicating analytical findings.
To run the analysis:
-
Download or clone this repository.
-
Ensure Python and Jupyter Notebook/JupyterLab are installed.
-
Install the required libraries:
pip install pandas matplotlib seaborn -
Open
StudentsPerformanceAnalysis.ipynb. -
Run all notebook cells from top to bottom.
The analysis is exploratory and observational. Differences between groups represent patterns within this dataset and should not be interpreted as proof of causal relationships.
Mapula Mokoma
Data Science Portfolio Project