Vem är din nummer 1-supporter på Strava?

Utforska Strava API och ta reda på det med Python

Under de senaste åren har Strava blivit min favoritapp för att spåra mina cykel- och löpaktiviteter. En av de många coola funktionerna i appen är möjligheten för dina vänner att ge dig beröm för dina aktiviteter. Och ibland är dessa beröm bara den moraliska boosten du behöver för att fortsätta.

2022 när jag förberedde mig för en klättring i Alperna och använde Strava mer regelbundet än tidigare, märkte jag att vissa människor var mer generösa än andra med sina beröm. Men jag hade ingen exakt aning om vem det var och det här fick mig att fundera. Finns det något sätt att ta en djupare titt på min statistik än vad appen erbjuder? Det finns det.

I den här artikeln använde jag en mycket vanlig "Extract Transform Load"-metod för att strukturera projektet. Jag visar hur jag lyckades få mina aktivitetsdata från Strava (Extrahera), beräkna nya insikter (Transform) och bygga "Kudos Graph" och andra visualiseringar för att veta vem jag skulle tacka för stödet (Load).

Jag upptäckte med tiden att detta tillvägagångssätt var ett bra sätt att organisera liknande dataprojekt. En sista notering innan du hoppar in, allt som visas här är reproducerbart och koden är tillgänglig på Github (länk i slutet av artikeln) så att du kan bygga din egen.

Låt oss börja koda!

Det första vi behöver göra är att autentisera — dvs få åtkomsttoken från Strava. Följande funktion kommer att göra just det med en POST-begäran, som innehåller informationen vi fick i föregående avsnitt (klient-id, klienthemlighet, uppdateringstoken och auktoriseringskod) till slutpunkten https://www.strava.com/oauth/token.

I det här avsnittet skapar vi två funktioner för att:

  1. Få listan över alla aktiviteter i profilen.
    Genom att använda den åtkomsttoken vi tidigare fick och ange två datum som definierar omfattningen av aktiviteter vi är intresserade av, får vi listan över alla aktiviteter mellan dessa två datum och deras huvudsakliga egenskaper.
  2. Få listan med beröm för en specifik aktivitet.
    Tyvärr finns inte listan över aktiviteternas beröm i resultatet av den tidigare förfrågan. Vi måste bygga funktionen get_kudos som returnerar listan med kudoers för en enskild aktivitet, identifierad av dess aktivitets_id.

Nu när vi fick den data vi ville ha, är tanken att bara behålla det vi behöver och lägga detta i en Pandas Dataframe.

Transformeringsfunktionen nedan extraherar följande data från listan över aktiviteter:

  1. Aktivitets-id som används som en unik identifierare för en aktivitet.
  2. Antalet beröm för varje aktivitet.
  3. Listan över alla beröm för en aktivitet genom att utnyttja funktionen get_kudos() i en loop.
  4. Avståndet för varje aktivitet.
  5. Tiden varje aktivitet tog.
  6. Typen av aktivitet.

⚠️ Det finns en begränsning i användningen av Strava API. Vi är begränsade till 100 samtal var 15:e minut och 1000 samtal per dag.

I det här projektet anropar vi API en gång för att få listan över aktiviteter, och sedan en gång per aktivitet för att få listan med beröm i var och en.

Detta innebär att om du har fler än 100 aktiviteter i det aktuella fönstret, kommer koden som den är inte att fungera och du måste ändra den något för att överensstämma med API-användningsgränsen.

Det enda som återstår att göra är att dra nytta av de funktioner vi just byggt och börja rita några intressanta saker!

I mitt fall överväger jag mina aktiviteter under 2022, fram till detta datum — 24-10-2022.

Från vår datastruktur är det superenkelt att få några KPI:er på hög nivå under den givna perioden:

KPI:er på hög nivå — Bild av författare

Eftersom vi fick sporttypen för varje aktivitet i föregående avsnitt kan vi också enkelt undersöka om vissa typer av aktiviteter är mer benägna att få beröm än andra. Här är det genomsnittliga antalet beröm per typ av aktiviteter:

Genomsnittligt antal beröm per typ av aktiviteter — Bild av författare

Även om det inte ska vara den mest populära typen av aktiviteter, så var löpning den sport där jag hade flest datapunkter och så det var här jag försökte gräva lite mer. Vi kan försöka förstå varför en aktivitet skulle få mer beröm än en annan. Låt oss titta på det möjliga sambandet mellan löpsträckan och antalet beröm aktiviteten skulle få.

Det visar sig att det verkar finnas en positiv korrelation, det vill säga ju längre löptiden är desto fler beröm, som visas i grafen nedan.
Visst är den statistiska signifikansen av detta resultat diskutabel med tanke på det lilla antalet datapunkter vi övervägde. Den enda säkra slutsatsen här är att jag måste springa mer.

Vi skulle kunna gå längre i analysen och titta på påverkan av andra variabler, men jag lämnar det till en annan artikel.

Positiv korrelation mellan avståndet för en löptur och antalet beröm den får — Graf efter författare

Äntligen kan vi rita "Kudos-grafen" där vi kan se vilka våra bästa supportrar är och ge dem ett shout out.
Naturligtvis är vissa människor mer beroende av Strava än andra och kommer att ge beröm när de scrollar ner i sitt aktivitetsflöde, medan andra bara kommer att öppna appen då och då och bara ge beröm till de senaste aktiviteterna de råkar se.
Den här grafen handlar inte på något sätt om att döma människor för att de ger beröm eller inte, det handlar helt enkelt om att illustrera nya insikter som du inte skulle se någon annanstans - inte ens i premiumversionen av appen.

"Kudos-grafen" som visar de bästa supportrarna - Diagram av författare

Utan tvekan finns det mycket mer vi kan göra med all data vi kan få från Strava API. Detta var helt enkelt en första chans att svara på en ovanlig fråga och en bra övning för att få saker att gå.

Om du vill analysera dina Strava-aktiviteter och ta reda på vilka dina bästa supportrar är, kan du hitta hela koden här:
https://github.com/Guigs11/strava_kudos

Tack för att du läste hela vägen till slutet av artikeln!
Lämna gärna ett meddelande nedan, eller kontakta mig via
LinkedIn om du har några frågor/anmärkningar!
Det kommer mera!

Vem är din nummer 1-supporter på Strava? Återpublicerad från källa https://towardsdatascience.com/whos-your-number-1-supporter-on-strava-5a888230f361?source=rss—-7f60cf5620c9—4 via https://towardsdatascience.com/feed

<!–

->

Tidsstämpel:

Mer från Blockchain-konsulter