Eduardo's rowing data — from the Amstel to the erg
📊 Descriptive StatisticsAggregation functions (mean, sum, min/max) compute KPIs from raw data.
Last Workout
04 Nov 2026
Days Since Last Workout
2 days
Current Streak
0 days
Total Workouts
87
Total Distance
648.57 km
Avg Distance
7.45 km
Longest Row
20.02 km
Last 30 Days
35.0 km
Total Time
59.46 hrs
Avg Pace /500m
2:41.7
Avg Stroke Rate
28.8 spm
Avg Calories
391.0 cal
🔔 Workout Distribution
📐 Kernel Density Estimation & PercentilesA Gaussian-kernel density curve shows how sessions are distributed, with the median and upper percentiles marked. For pace, the markers highlight the fastest 25/10/5% instead of the slow tail.
Where does a typical session sit — and how far out are my big days?
🔍 Latest Workout Detail
5000m
in 25:31.8
on 2026-11-04
— pace and stroke rate over time.
📉 High-Resolution Time SeriesPer-stroke telemetry from the PM5 monitor reveals pacing strategy, fatigue patterns, and stroke rate consistency within a single workout.
Personal Bests
Distance
Time
Pace /500m
Date
2000m
9:19.8
2:19.9
2026-08-22
5000m
24:37.9
2:27.8
2026-10-03
6000m
33:13.2
2:46.1
2025-04-01
10000m
50:22.2
2:31.1
2026-02-14
📈 Time Series AnalysisTemporal aggregation groups data into weekly/monthly buckets using Pandas groupby to reveal volume trends and seasonality.
📅 Training Heatmap
A GitHub-style calendar showing my daily rowing volume. Violet = light days, through sky and green up to amber = biggest days.
🗓️ Matrix Transposition & Heatmap VisualizationDaily distances aggregated with Pandas groupby are mapped onto a calendar coordinate grid. Custom colorscale encodes intensity.
📈 Pace Trend Analysis
📉 Linear & Polynomial RegressionOLS linear regression and degree-3 polynomial fit model trends over time. R² measures goodness of fit. Rolling average smooths noise.
Regression analysis reveals whether my pace is improving over time.
Improving
0.35s /500m per month
· Linear R² = 0.035· Poly R² = 0.057
🎯 Workout Clusters (K-Means)
🎯 K-Means Clustering (Unsupervised ML)K-Means algorithm with StandardScaler feature normalization discovers natural workout groupings from distance, pace, and duration. Elbow method evaluates optimal K.
Machine learning groups my workouts into 5 categories based on distance, pace, and duration.
Sprint
6 workouts
Avg 1817m · 2:20.8 /500m · 9 min
5K Steady-State
40 workouts
Avg 5038m · 2:38.6 /500m · 27 min
Mid-Distance (5-10K)
2 workouts
Avg 7500m · 2:42.4 /500m · 40 min
10K Steady-State
33 workouts
Avg 10000m · 2:46.7 /500m · 56 min
Endurance 10K+
6 workouts
Avg 15188m · 2:55.0 /500m · 89 min
📊 Training Balance
🥧 Distribution AnalysisProportional analysis of cluster assignments reveals how training effort is allocated across categories.
What percentage of my workouts fall into each category?