Strava API را کاوش کنید و با پایتون پیدا کنید
در چند سال گذشته Strava به برنامه کاربردی من برای ردیابی فعالیت های دوچرخه سواری و دویدن من تبدیل شد. یکی از بسیاری از ویژگی های جالب در برنامه این است که دوستان شما از فعالیت های شما تشکر کنند. و گاهی اوقات، این تمجیدها فقط تقویت روحیه ای است که برای ادامه دادن به آن نیاز دارید.
در سال 2022 هنگامی که برای صعود در کوه های آلپ آماده می شدم و از Strava به طور منظم تر از قبل استفاده می کردم، متوجه شدم که برخی افراد با ستایش خود سخاوتمندتر از دیگران هستند. اما من هیچ ایده دقیقی از این موضوع نداشتم و این مرا به فکر فرو برد. آیا راهی وجود دارد که نگاه عمیق تری به آمار من نسبت به آنچه برنامه ارائه می دهد داشته باشیم؟ خوب، وجود دارد.
در این مقاله، من از یک رویکرد بسیار رایج "Extract Transform Load" برای ساختار پروژه استفاده کردم. من نشان میدهم که چگونه توانستم دادههای فعالیتهایم را از Strava (Extract) دریافت کنم، بینشهای جدید را محاسبه کنم (Transform) و "Kudos Graph" و سایر تجسمها را بسازم تا بدانم از چه کسی برای پشتیبانی تشکر کنم (Load).
با گذشت زمان متوجه شدم که این رویکرد راهی عالی برای سازماندهی پروژه های داده مشابه است. آخرین نکته قبل از پرش، همه چیزهایی که در اینجا نشان داده شده قابل تولید هستند و کد در Github موجود است (لینک در انتهای مقاله) بنابراین شما می توانید کد خود را بسازید.
بیایید کدنویسی کنیم!
اولین کاری که باید انجام دهیم احراز هویت است - یعنی دریافت رمز دسترسی از Strava. تابع زیر دقیقاً این کار را با یک درخواست POST انجام می دهد که حاوی جزئیاتی است که در بخش قبلی دریافت کردیم (شناسه مشتری، رمز مشتری، نشانه تازه سازی و کد مجوز) تا نقطه پایانی. https://www.strava.com/oauth/token.
در این بخش دو تابع ایجاد می کنیم تا:
- لیست تمام فعالیت های پروفایل را دریافت کنید.
با استفاده از نشانه دسترسی که قبلاً دریافت کردیم و مشخص کردن دو تاریخ که محدوده فعالیت های مورد علاقه ما را مشخص می کند، لیستی از تمام فعالیت های بین این دو تاریخ و ویژگی های اصلی آنها را دریافت می کنیم. - لیست ستایشگران یک فعالیت خاص را دریافت کنید.
متأسفانه فهرست ستایشهای فعالیتها در نتیجه درخواست قبلی موجود نیست. ما باید تابع get_kudos را بسازیم که لیستی از قدردانیها را برای یک اکتیویتی که با activity_id آن مشخص میشود، برمیگرداند.
اکنون که دادههایی را که میخواستیم به دست آوردیم، ایده این است که فقط آنچه را که نیاز داریم نگه داریم و آن را در یک Pandas Dataframe قرار دهیم.
تابع تبدیل زیر داده های زیر را از لیست فعالیت ها استخراج می کند:
- شناسه فعالیت که به عنوان یک شناسه منحصر به فرد برای یک فعالیت استفاده می شود.
- تعداد تقدیر از هر فعالیت.
- لیستی از همه ادای احترام برای یک فعالیت با استفاده از تابع get_kudos() در یک حلقه.
- فاصله هر فعالیت
- مدت زمان هر فعالیت
- نوع فعالیت.
⚠️ محدودیتی در استفاده از Strava API وجود دارد. ما محدود به 100 تماس در هر 15 دقیقه و 1000 تماس در روز هستیم.
در این پروژه، یک بار API را فراخوانی می کنیم تا لیستی از فعالیت ها را دریافت کنیم و سپس یک بار در هر فعالیتی برای دریافت لیست ستایشگران در هر یک.
این بدان معناست که اگر بیش از 100 فعالیت در پنجره در نظر گرفته شده داشته باشید، کد به شکلی که هست کار نخواهد کرد و باید کمی آن را تغییر دهید تا با محدودیت استفاده از API مطابقت داشته باشد.
تنها کاری که باید انجام دهید این است که از توابعی که به تازگی ساخته ایم استفاده کنید و شروع به ترسیم چیزهای جالب کنید!
در مورد من، من فعالیت های خود را در سال 2022، تا این تاریخ - 24/10/2022 در نظر دارم.
از ساختار داده ما، به دست آوردن چند KPI سطح بالا در دوره معین بسیار آسان است:
از آنجایی که در بخش قبل نوع ورزش را برای هر فعالیت دریافت کردیم، همچنین میتوانیم به راحتی بررسی کنیم که آیا انواع خاصی از فعالیتها بیشتر از سایرین مستعد دریافت تجلیل هستند یا خیر. در اینجا میانگین تعداد ستایش برای هر نوع فعالیت آمده است:
حتی اگر قرار باشد محبوبترین نوع فعالیت نباشد، دویدن ورزشی بود که بیشترین دادهها را در آن داشتم و بنابراین اینجاست که سعی کردم کمی بیشتر کنکاش کنم. ما میتوانیم سعی کنیم بفهمیم چرا یک فعالیت بیشتر از دیگری تحسین میکند. بیایید به همبستگی احتمالی بین فاصله دویدن و تعداد تمجیدهایی که فعالیت کسب می کند نگاه کنیم.
به نظر می رسد که یک همبستگی مثبت وجود دارد، یعنی هر چه مدت زمان طولانی تر باشد، همانطور که در نمودار زیر نشان داده شده است، تعداد ستایش ها بیشتر می شود.
مسلماً، اهمیت آماری این نتیجه با توجه به تعداد کمی از نقاط داده ای که در نظر گرفتیم قابل بحث است. تنها نتیجه قطعی در اینجا این است که باید بیشتر بدوم.
ما میتوانیم در تحلیل بیشتر پیش برویم و به تأثیر متغیرهای دیگر نگاه کنیم، اما من آن را برای مقاله دیگری رها میکنم.
در نهایت، میتوانیم «گراف تجلیل» را ترسیم کنیم که در آن میتوانیم حامیان برتر ما را ببینیم و آنها را فریاد بزنیم.
البته، برخی از افراد بیشتر از دیگران به Strava معتاد هستند و با اسکرول کردن فید فعالیت خود به آن ستایش می کنند، در حالی که برخی دیگر فقط هر چند وقت یکبار برنامه را باز می کنند و فقط به آخرین فعالیت هایی که اتفاقاً می بینند ستایش می کنند.
این نمودار به هیچ وجه درباره قضاوت افراد به خاطر ستایش یا عدم تمجید نیست، بلکه صرفاً در مورد نشان دادن بینشهای جدیدی است که در هیچ جای دیگری نمیبینید - حتی در نسخه پریمیوم برنامه.
بدون شک میتوانیم با تمام دادههایی که از Strava API دریافت میکنیم، کارهای بیشتری انجام دهیم. این به سادگی اولین شات برای پاسخ به یک سوال غیرمعمول و یک تمرین خوب برای پیشبرد کارها بود.
اگر می خواهید فعالیت های Strava خود را تجزیه و تحلیل کنید و بفهمید که حامیان برتر شما چه کسانی هستند، کل کد را می توانید در اینجا پیدا کنید:
https://github.com/Guigs11/strava_kudos
با تشکر از خواندن تمام راه تا پایان مقاله!
در زیر پیام بگذارید یا از طریق با من تماس بگیرید لینک اگر سوالی / نکته ای دارید!
بیشتر برای آمدن!
حامی شماره 1 شما در Strava کیست؟ بازنشر شده از منبع https://towardsdatascience.com/whos-your-number-1-supporter-on-strava-5a888230f361?source=rss—-7f60cf5620c9—4 از طریق https://towardsdatascience.com/feed
<!–
->
- بیت کوین
- bizbuildermike
- بلاکچین
- انطباق با بلاک چین
- کنفرانس بلاکچین
- مشاوران بلاک چین
- coinbase
- coingenius
- اجماع
- کنفرانس رمزنگاری
- معدنکاری رمز گشایی
- کریپتو کارنسی (رمز ارزها )
- غیر متمرکز
- DEFI
- دارایی های دیجیتال
- ethereum
- فراگیری ماشین
- رمز غیر قابل شستشو
- افلاطون
- افلاطون آی
- هوش داده افلاطون
- پلاتوبلاک چین
- PlatoData
- بازی پلاتو
- چند ضلعی
- اثبات سهام
- W3
- زفیرنت