A comprehensive data preprocessing and exploratory analysis pipeline for the Open University Learning Analytics (OULAD) dataset.
This project provides a complete preprocessing pipeline for analyzing student learning behavior, engagement patterns, and performance outcomes using the OULAD dataset. The pipeline includes data loading, cleaning, feature engineering, and statistical analysis.
anonymisedData/
├── cells/ # Preprocessing modules
│ ├── load_data.py # Load all CSV files
│ ├── handle_missing.py # Handle missing values
│ ├── fix_datatypes.py # Fix data types
│ ├── sample_vle.py # Sample large VLE data
│ ├── summary_stats.py # Generate statistics
│ ├── merge_datasets.py # Merge datasets
│ ├── feature_engineering.py # Create derived features
│ └── save_data.py # Save processed data
├── notebook.ipynb # Main analysis notebook
├── documentation.md # Dataset schema documentation
├── requirements.txt # Python dependencies
└── README.md # This file
- Python 3.8 or higher
- Jupyter Notebook or JupyterLab
git clone https://github.com/chucknuris/LTaLA-Exercises.git
cd LTaLA-ExercisesDownload the Open University Learning Analytics Dataset and place the following CSV files in the project root directory:
Required files:
courses.csvassessments.csvvle.csvstudentInfo.csvstudentRegistration.csvstudentAssessment.csvstudentVle.csv
Note: The dataset is not included in this repository due to its size. You can obtain it from the Open University Learning Analytics Dataset page.
pip install -r requirements.txtOpen the Jupyter notebook:
jupyter notebook notebook.ipynbExecute cells step by step:
The notebook is organized into sequential steps:
- Load Data - Import all CSV files
- Handle Missing Values - Clean and analyze missing data
- Fix Data Types - Convert to appropriate types
- Sample VLE Data - Create stratified sample of large VLE file
- Summary Statistics - Generate descriptive statistics
- Merge Datasets - Create combined datasets
- Feature Engineering - Create derived features
- Save Results - Export processed data
The pipeline automatically creates 60+ features including:
- Click intensity and engagement levels
- VLE interaction patterns
- Assessment activity
- Performance levels and risk scores
- Score consistency and improvement
- Submission behavior
- Registration timing
- Activity patterns
- Engagement duration
- Experience levels
- Study load categories
- Education groupings
- Success predictions
- Completion status
- Risk assessment
The pipeline generates:
- Enriched Dataset:
processed_data/student_profile_enriched.csv- Contains all original data plus engineered features
- Data Dictionary:
processed_data/data_dictionary.csv- Descriptions of all columns
- Summary Report:
processed_data/data_summary_report.txt- Statistical overview
- Merged Datasets: Various combined datasets for analysis
- Dataset Schema: See
documentation.mdfor detailed description of all data files - Data Dictionary: Generated automatically with feature descriptions
- Code Documentation: All functions include docstrings
Each module in the cells/ folder can be imported independently:
from cells import load_data, handle_missing, fix_datatypes
from cells import sample_vle, merge_datasets, feature_engineering
# Load and preprocess data
datasets, _ = load_data.run()
datasets, _, _ = handle_missing.run(datasets)
datasets = fix_datatypes.run(datasets)- The studentVle.csv file is very large (>200MB). The pipeline automatically creates a 10% stratified sample
- All preprocessing steps preserve data quality and relationships
- Missing values are handled intelligently based on data semantics
- Feature engineering is based on educational research best practices
This project was created for learning analytics research and educational data mining exercises.
This project is for educational purposes. Please refer to the OULAD dataset license for data usage terms.
- Open University for providing the Learning Analytics Dataset
- Built for Learning Through Analytics exercises (LTaLA)
For questions or issues, please open an issue on GitHub.
Happy Analyzing! 📊🎓