Ai là người hỗ trợ số 1 của bạn trên Strava?

Khám phá API Strava và tìm hiểu với Python

Trong vài năm qua, Strava đã trở thành ứng dụng tôi sử dụng để theo dõi hoạt động đạp xe và chạy bộ của mình. Một trong nhiều tính năng thú vị trên ứng dụng là khả năng bạn bè khen ngợi các hoạt động của bạn. Và đôi khi, những lời khen ngợi này chỉ là động lực tinh thần mà bạn cần để tiếp tục.

Vào năm 2022, khi tôi đang chuẩn bị cho chuyến leo núi Alps và sử dụng Strava thường xuyên hơn trước, tôi nhận thấy rằng một số người hào phóng hơn những người khác về danh tiếng của họ. Nhưng tôi không biết chính xác đó là ai và điều này khiến tôi phải suy nghĩ. Có cách nào để có cái nhìn sâu hơn về số liệu thống kê của tôi so với những gì ứng dụng cung cấp không? Vâng, có.

Trong bài viết này, tôi đã sử dụng cách tiếp cận “Extract Transform Load” rất phổ biến để cấu trúc dự án. Tôi đang trình bày cách tôi quản lý để lấy dữ liệu hoạt động của mình từ Strava (Trích xuất), tính toán thông tin chi tiết mới (Chuyển đổi) và xây dựng “Biểu đồ Kudos” cũng như các hình ảnh trực quan khác để biết ai cần cảm ơn vì đã hỗ trợ (Tải).

Theo thời gian, tôi nhận thấy rằng phương pháp này là một cách tuyệt vời để tổ chức các dự án dữ liệu tương tự. Một lưu ý cuối cùng trước khi bắt đầu, mọi thứ hiển thị ở đây đều có thể sao chép được và mã có sẵn trên Github (liên kết ở cuối bài viết) để bạn có thể tự xây dựng.

Hãy bắt đầu viết mã!

Điều đầu tiên chúng ta cần làm là xác thực - tức là nhận mã thông báo truy cập từ Strava. Hàm sau sẽ thực hiện điều đó với yêu cầu POST, chứa các chi tiết chúng ta có trong phần trước (id khách hàng, bí mật khách hàng, mã thông báo làm mới và mã ủy quyền) cho điểm cuối https://www.strava.com/oauth/token.

Trong phần này, chúng ta tạo hai hàm để:

  1. Lấy danh sách tất cả các hoạt động của hồ sơ.
    Sử dụng mã thông báo truy cập mà chúng tôi đã nhận trước đó và chỉ định hai ngày xác định phạm vi hoạt động mà chúng tôi quan tâm, chúng tôi nhận được danh sách tất cả các hoạt động giữa hai ngày này và các đặc điểm chính của chúng.
  2. Lấy danh sách kudoers của một hoạt động cụ thể.
    Rất tiếc, danh sách người ủng hộ hoạt động không có trong kết quả của yêu cầu trước đó. Chúng ta cần xây dựng hàm get_kudos để trả về danh sách kudoer cho một hoạt động, được xác định bởi active_id của hoạt động đó.

Bây giờ chúng tôi đã có được dữ liệu mình muốn, ý tưởng là chỉ giữ lại những gì chúng tôi cần và đặt dữ liệu này vào Pandas Dataframe.

Hàm biến đổi bên dưới trích xuất từ ​​danh sách các hoạt động dữ liệu sau:

  1. Id hoạt động được sử dụng làm mã định danh duy nhất cho một hoạt động.
  2. Số lượng lời khen của mỗi hoạt động.
  3. Danh sách tất cả người kudo cho một hoạt động bằng cách tận dụng hàm get_kudos() trong một vòng lặp.
  4. Khoảng cách của mỗi hoạt động.
  5. Thời gian mỗi hoạt động diễn ra.
  6. Loại hoạt động.

⚠️ Có hạn chế trong việc sử dụng API Strava. Chúng tôi bị giới hạn 100 cuộc gọi cứ sau 15 phút và 1000 cuộc gọi mỗi ngày.

Trong dự án này, chúng tôi gọi API một lần để nhận danh sách các hoạt động và sau đó gọi API một lần cho mỗi hoạt động để nhận danh sách kudoers trong mỗi hoạt động.

Điều này có nghĩa là, nếu bạn có hơn 100 hoạt động trong cửa sổ được xem xét, thì mã sẽ không hoạt động và bạn sẽ cần sửa đổi một chút để tuân thủ giới hạn sử dụng API.

Điều duy nhất còn lại phải làm là tận dụng các chức năng chúng ta vừa xây dựng và bắt đầu vẽ ra một số điều thú vị!

Trong trường hợp của tôi, tôi đang xem xét các hoạt động của mình vào năm 2022, tính đến ngày này - 24/10/2022.

Từ cấu trúc dữ liệu của chúng tôi, thật dễ dàng để có được một vài KPI cấp cao trong khoảng thời gian nhất định:

KPI cấp cao - Hình ảnh của tác giả

Bởi vì chúng tôi đã có loại thể thao cho từng hoạt động trong phần trước nên chúng tôi cũng có thể dễ dàng điều tra xem liệu một số loại hoạt động nhất định có dễ nhận được danh tiếng hơn những loại hoạt động khác hay không. Dưới đây là số lượng danh tiếng trung bình cho mỗi loại hoạt động:

Số lượng danh tiếng trung bình cho mỗi loại hoạt động — Hình ảnh của tác giả

Ngay cả khi nó không phải là loại hoạt động phổ biến nhất, thì chạy vẫn là môn thể thao mà tôi có nhiều điểm dữ liệu nhất và vì vậy đây là lúc tôi cố gắng tìm hiểu thêm một chút. Chúng ta có thể cố gắng hiểu tại sao một hoạt động lại nhận được nhiều lời khen ngợi hơn một hoạt động khác. Hãy xem xét mối tương quan có thể có giữa quãng đường chạy và số lượng lời khen mà hoạt động đó nhận được.

Hóa ra dường như có một mối tương quan tích cực, tức là thời gian chạy càng lâu thì số lượng kudo càng cao, như thể hiện trong biểu đồ bên dưới.
Đúng là ý nghĩa thống kê của kết quả này còn gây tranh cãi do số lượng điểm dữ liệu nhỏ mà chúng tôi đã xem xét. Kết luận chắc chắn duy nhất ở đây là tôi cần phải chạy nhiều hơn.

Chúng ta có thể tiến xa hơn trong phân tích, xem xét ảnh hưởng của các biến số khác, nhưng tôi sẽ dành phần đó cho một bài viết khác.

Mối tương quan tích cực giữa khoảng cách của một lần chạy và số lượng danh tiếng mà nó nhận được - Biểu đồ của tác giả

Cuối cùng, chúng ta có thể vẽ “Biểu đồ Kudos” trong đó chúng ta có thể biết những người ủng hộ hàng đầu của chúng ta là ai và cảm ơn họ.
Tất nhiên, một số người nghiện Strava hơn những người khác và sẽ khen ngợi khi họ cuộn xuống nguồn cấp dữ liệu hoạt động của mình, trong khi những người khác sẽ chỉ thỉnh thoảng mở ứng dụng và chỉ khen ngợi những hoạt động gần đây nhất mà họ tình cờ thấy.
Biểu đồ này không nhằm mục đích đánh giá mọi người có khen ngợi hay không mà chỉ đơn giản là minh họa những hiểu biết mới mà bạn sẽ không thấy ở bất kỳ nơi nào khác — ngay cả trong phiên bản cao cấp của ứng dụng.

“Biểu đồ Kudos” hiển thị những người ủng hộ hàng đầu — Biểu đồ của tác giả

Không còn nghi ngờ gì nữa, chúng tôi có thể làm được nhiều việc hơn nữa với tất cả dữ liệu chúng tôi có thể lấy từ API Strava. Đây chỉ đơn giản là bước đầu tiên để trả lời một câu hỏi bất thường và là một bài tập tốt để mọi việc diễn ra suôn sẻ.

Nếu bạn muốn phân tích các hoạt động Strava của mình và tìm ra ai là người ủng hộ bạn nhiều nhất, bạn có thể tìm thấy toàn bộ mã ở đây:
https://github.com/Guigs11/strava_kudos

Cảm ơn bạn đã đọc đến cuối bài viết!
Vui lòng để lại tin nhắn bên dưới hoặc liên hệ với tôi qua
LinkedIn nếu bạn có bất kỳ câu hỏi / nhận xét nào!
Nhiều hơn nữa

Ai là người hỗ trợ số 1 của bạn trên Strava? Được xuất bản lại từ Nguồn https://towardsdatascience.com/whos-your-number-1-supporter-on-strava-5a888230f361?source=rss—-7f60cf5620c9—4 qua https://towardsdatascience.com/feed

<!–

->

Dấu thời gian:

Thêm từ Tư vấn chuỗi khối