Peloton has some basic class-level statistics, but no ability to track any kind of overall totals, or any views of metrics over time. So, I went about using Qlik Sense and John Park’s Qlik’s Rapid Application Gateway API engine (via Python) to fill the void and create a Peloton Analytics App. I will go into the technical details of the how in Part 2 of this blog. Below is the dashboard I've created to analyze my statistics. But, how did I decide what to visualize?
With a treasure trove of metrics available to me via the Peloton API (discussed in Part 2 of this blog), what do I want to see? How does one best capture their efforts and see their overall workout picture? Also, is there anything I need to be aware of in the data that makes analytics complicated?
On the latter, I discovered that Peloton tracks dates as Unix timestamps, which are difficult to work with as a dimension. Using a simple formula in Qlik, we can unspool the Unix timestamp and bucket the workouts by Day. One additional step is that Peloton records classes in GMT, so I use a function to get my workouts into the correct time zone.
date(ConvertToLocalTime(date((created/ 86400 + 25569))))
Using this dimension, I created a chart to trend my performance over time.
The height is kJ of total work, colored by the number of calories burned (red is more). Not surprising, the more kJ generated corresponds directly to calorie consumption. Good news is I’m slightly trending up even with a less than stellar effort over the holidays…
I then wanted to see if I respond better to certain instructors, and who my favorites are… Does my preference equate to better workouts? To do that, I plotted avg kJ output by instructor but colored by the summation of kJ by instructor. I do love myself some Emma Lovewell and Alex Toussaint.
Turns out no, my favorite instructors aren’t my most productive. My best instructors from a production standpoint do not match my personal preferences. Now, this data is a little skewed because it averages across all class times (e.g., 20, 30, 45, 60). Let’s take a look at that comparison…
Well, OK. I’m really favoring the 30-minute classes; that does help normalize the data from the instructors chart a bit. But, exactly how am I spending my time by class duration?
Hmmm, looks like I really am solidly in the 30-minute camp. I really want to capture my overall totals, and this is where, as much I love Peloton, there is no way to track this information directly in any system they provide.
I can now see the overall amount of work I’ve put in on my Peloton Bike and other classes. Interesting, for sure, but what about when I workout. Do I have better days when I work harder?
Sure enough, I put more work in on Friday. My totals are the highest (red) and my avg kJ output is also the highest. I ride harder and get my best results on Friday, while being the laziest on Saturday. One last thing: What about my actual caloric consumption…? Like earlier, I thought it would be interesting to see if I get better calorie production from certain instructors, but does that match kJ output?
That is quite interesting, in that calorie consumption plotted on a distribution plot show how wide a range I can get in caloric consumption by instructor. My max outputs show that Hannah pushes me the hardest, with a wide range by Alex, but Kendall and her metal rides also provide a high level of consumption. However, normalizing by calories/minute I see that I get the best production from Emma, with Hannah a close second. Extrapolating those data points, if I do longer rides with Emma, I’ll outperform all other instructors… Interesting!
In totality, I feel like I can now really start to understand how I’m doing on the Peloton, which instructors push me more, and when I’m at my best and where I need to improve.
I hope you’ve found this interesting. Oh, and my Peloton handle is VermillionDLF. Happy to connect!