สำรวจ Strava API และค้นหาด้วย Python
ในช่วงไม่กี่ปีที่ผ่านมา Strava กลายเป็นแอพที่ฉันชอบในการติดตามกิจกรรมการปั่นจักรยานและการวิ่งของฉัน หนึ่งในคุณสมบัติเจ๋ง ๆ มากมายในแอพคือความสามารถสำหรับเพื่อนของคุณที่จะให้ความชื่นชมยินดีสำหรับกิจกรรมของคุณ และบางครั้งความรุ่งโรจน์เหล่านี้เป็นเพียงกำลังใจในการทำงานต่อไป
ในปี 2022 ขณะที่ฉันกำลังเตรียมตัวสำหรับการปีนเขาในเทือกเขาแอลป์และใช้ Strava บ่อยกว่าเมื่อก่อน ฉันสังเกตเห็นว่าบางคนมีน้ำใจมากกว่าคนอื่นๆ ด้วยความชื่นชมยินดี แต่ฉันไม่มีความคิดที่แน่ชัดว่าเป็นใคร และสิ่งนี้ทำให้ฉันคิด มีวิธีดูสถิติของฉันให้ลึกซึ้งกว่าที่แอพเสนอหรือไม่? ก็มีนะ
ในบทความนี้ ฉันใช้วิธี "Extract Transform Load" ที่ใช้กันทั่วไปในการจัดโครงสร้างโครงการ ฉันกำลังแสดงวิธีที่ฉันจัดการเพื่อรับข้อมูลกิจกรรมจาก Strava (แยก) คำนวณข้อมูลเชิงลึกใหม่ (แปลง) และสร้าง “กราฟรุ่งโรจน์” และการแสดงภาพอื่นๆ เพื่อให้รู้ว่าใครควรขอบคุณสำหรับการสนับสนุน (โหลด)
ฉันพบว่าวิธีการนี้เป็นวิธีที่ยอดเยี่ยมในการจัดระเบียบโครงการข้อมูลที่คล้ายกัน บันทึกย่อสุดท้ายก่อนที่จะกระโดดเข้ามา ทุกอย่างที่แสดงที่นี่สามารถทำซ้ำได้และรหัสมีอยู่ใน 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
ขอบคุณที่อ่านจนจบบทความ!
ฝากข้อความไว้ด้านล่าง หรือติดต่อผ่าน LinkedIn หากคุณมีคำถาม/ข้อสังเกต!
อื่น ๆ อีกมากมายที่จะมา!
ใครคือผู้สนับสนุนอันดับ 1 ของคุณใน Strava? เผยแพร่ซ้ำจากแหล่งที่มา https://towardsdatascience.com/whos-your-number-1-supporter-on-strava-5a888230f361?source=rss—-7f60cf5620c9-4 via https://towardsdatascience.com/feed
<!–
->
- Bitcoin
- bizbuildermike
- blockchain
- การปฏิบัติตามบล็อคเชน
- การประชุม blockchain
- ที่ปรึกษาบล็อคเชน
- coinbase
- เหรียญอัจฉริยะ
- เอกฉันท์
- การประชุม crypto
- การทำเหมือง crypto
- cryptocurrency
- ซึ่งกระจายอำนาจ
- Defi
- สินทรัพย์ดิจิทัล
- ethereum
- เรียนรู้เครื่อง
- โทเค็นที่ไม่สามารถทำซ้ำได้
- เพลโต
- เพลโตไอ
- เพลโตดาต้าอินเทลลิเจนซ์
- Platoblockchain
- เพลโตดาต้า
- เพลโตเกม
- รูปหลายเหลี่ยม
- หลักฐานการเดิมพัน
- W3
- ลมทะเล