🚣 Laat Lopen

Eduardo's rowing data — from the Amstel to the erg

📊 Descriptive Statistics Aggregation 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 & Percentiles A 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 Series Per-stroke telemetry from the PM5 monitor reveals pacing strategy, fatigue patterns, and stroke rate consistency within a single workout.

Personal Bests

DistanceTimePace /500mDate
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 Analysis Temporal 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 Visualization Daily distances aggregated with Pandas groupby are mapped onto a calendar coordinate grid. Custom colorscale encodes intensity.

📈 Pace Trend Analysis

📉 Linear & Polynomial Regression OLS 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 Analysis Proportional analysis of cluster assignments reveals how training effort is allocated across categories.

What percentage of my workouts fall into each category?