What actually predicts workout performance — duration, workout type, or something else?
This project runs a full exploratory data analysis on a fitness/exercise dataset (body metrics, workout type, session duration, heart rate, calories burned, experience level) using nothing but statistical plots. The goal isn't modeling — it's building fast, fluent visual intuition for a dataset using Seaborn's statistical plotting toolkit.
- Does workout duration actually correlate with calories burned, or does workout type matter more?
- How does heart rate vary across workout types — any clear outliers?
- Does session duration differ meaningfully by experience level (beginner/intermediate/advanced)?
- Which numeric variables are most correlated with each other overall?
- Session duration vs Calories burned with workout type: workout type doesn't matter that much but there is a strong correlation(0.91) between duration and calories burned.
- Heart rate distribution according to workout type: strength workout type has the highest range of heart rate variation, but overall fairly similar across workout types.
- Session duration according to experience level session duration is fairly similar across beginner and intermediate experience levels, but advanced users have a higher average session duration.
- Correlation matrix: the highest correlation is between session duration and calories burned (0.91), followed by Calories_Burned and Fat_Percentage (-0.60).
gym-class-heroes/
├── data/
│ ├── raw/ # Untouched source dataset(s)
│ └── processed/ # Cleaned, analysis-ready DataFrame
│
├── notebooks/ # Exploratory analysis, step-by-step, one notebook per phase
│ ├── 01_load_explore.ipynb
│ ├── 02_distributions_box_violin.ipynb
│ ├── 03_pairplot_heatmap.ipynb
│ └── 04_categorical_styling.ipynb
│
├── src/ # Reusable code, imported by notebooks/scripts (not copy-pasted)
│ ├── __init__.py
│ ├── analysis.py # Analysis for project questions
│ └── plots.py # Reusable theme setup
│
├── tests/ # Unit tests for src/ functions
│ ├── __init__.py
│ └── test_clean.py
│
├── outputs/ # Final saved PNGs — the actual EDA report
│ └── quesions/
│
├── .gitignore
├── requirements.txt
└── README.md
git clone https://github.com/hexsyro/gym-class-heroes.git
cd gym-class-heroes
python -m venv venv
source venv/bin/activate # Windows: venv\Scripts\activate
pip install -r requirements.txt- Analysis (fills
outputs/questions/)python -m src.analysis
- Explore in notebooks, in order, starting with
notebooks/01_load_explore.ipynb - Final charts get saved to
outputs/as the polished EDA report
| Skill | Where |
|---|---|
| Statistical plots (histplot, boxplot, violinplot) | notebooks/03 |
| Pairplots and correlation heatmaps | notebooks/04 |
| Categorical plots (barplot, countplot) | notebooks/05 |
| Styling and themes for faster EDA | src/plots.py, notebooks/05 |
"Workout session duration explains more variance in calories burned than workout type does — HIIT sessions burn nearly as much in 2 hours as strength session does in same time (1800 Calories)."
- Fitness/exercise dataset: Gym Members Exercise Dataset : with body metrics, workout type, heart rate, and calories already included
- Facet the pairplot by gender or experience level using
hue= - Add a
sns.jointplot()for the single strongest correlation found - Build a one-page "EDA report" combining the best 4-5 charts with consistent styling
