Explore a API Strava e descubra com Python
Nos últimos anos, o Strava se tornou meu aplicativo preferido para monitorar minhas atividades de ciclismo e corrida. Um dos muitos recursos interessantes do aplicativo é a capacidade de seus amigos elogiarem suas atividades. E às vezes, esses elogios são apenas o impulso moral de que você precisa para continuar.
Em 2022, enquanto me preparava para uma escalada nos Alpes e usava o Strava com mais regularidade do que antes, percebi que algumas pessoas eram mais generosas do que outras com seus elogios. Mas eu não tinha ideia precisa de quem era e isso me fez pensar. Existe uma maneira de analisar minhas estatísticas mais profundamente do que o que o aplicativo oferece? Bem, existe.
Neste artigo, usei uma abordagem muito comum “Extract Transform Load” para estruturar o projeto. Estou mostrando como consegui obter dados de minhas atividades no Strava (Extract), calcular novos insights (Transform) e construir o “Kudos Graph” e outras visualizações para saber a quem agradecer pelo suporte (Load).
Com o tempo, descobri que essa abordagem era uma ótima maneira de organizar projetos de dados semelhantes. Uma última observação antes de começar: tudo o que é mostrado aqui é reproduzível e o código está disponível no Github (link no final do artigo) para que você possa construir o seu próprio.
Vamos começar a codificar!
A primeira coisa que precisamos fazer é autenticar – ou seja, obter o token de acesso do Strava. A função a seguir fará exatamente isso com uma solicitação POST, contendo os detalhes que obtivemos na seção anterior (id do cliente, segredo do cliente, token de atualização e código de autorização) para o endpoint https://www.strava.com/oauth/token.
Nesta seção, criamos duas funções para:
- Obtenha a lista de todas as atividades do perfil.
Utilizando o token de acesso que obtivemos anteriormente e especificando duas datas que definem o escopo das atividades que nos interessam, obtemos a lista de todas as atividades entre essas duas datas e suas principais características. - Obtenha a lista de kudoers de uma atividade específica.
Infelizmente a lista dos kudoers das atividades não consta no resultado da solicitação anterior. Precisamos construir a função get_kudos que retorna a lista de kudoers para uma única atividade, identificada por seu Activity_id.
Agora que obtivemos os dados que queríamos, a ideia é manter apenas o que precisamos e colocar isso em um Dataframe do Pandas.
A função de transformação abaixo extrai da lista de atividades os seguintes dados:
- O ID da atividade que é usado como identificador exclusivo para uma atividade.
- O número de elogios de cada atividade.
- A lista de todos os kudoers para uma atividade aproveitando a função get_kudos() em um loop.
- A distância de cada atividade.
- O tempo que cada atividade levou.
- O tipo de atividade.
⚠️ Existe uma limitação no uso da API Strava. Estamos limitados a 100 ligações a cada 15 minutos e 1000 ligações por dia.
Neste projeto, estamos chamando a API uma vez para obter a lista de atividades e, a seguir, uma vez por atividade para obter a lista de kudoers em cada uma.
Isso significa que, se você tiver mais de 100 atividades na janela considerada, o código tal como está não funcionará e você precisará modificá-lo ligeiramente para cumprir o limite de uso da API.
A única coisa que resta a fazer é capitalizar as funções que acabamos de construir e começar a traçar algumas coisas interessantes!
No meu caso, estou considerando minhas atividades em 2022, até esta data — 24/10/2022.
A partir de nossa estrutura de dados, é muito fácil obter alguns KPIs de alto nível em um determinado período:
Como obtivemos o tipo de esporte para cada atividade na seção anterior, também podemos investigar facilmente se certos tipos de atividades são mais propensos a receber elogios do que outros. Aqui está o número médio de elogios por tipo de atividade:
Mesmo que não seja o tipo de atividade mais popular, a corrida foi o esporte onde tive mais dados e foi aqui que tentei me aprofundar um pouco mais. Podemos tentar entender por que uma atividade receberia mais elogios do que outra. Vejamos a possível correlação entre a distância da corrida e o número de elogios que a atividade receberia.
Acontece que parece haver uma correlação positiva, ou seja, quanto mais longa a corrida, maior o número de elogios, conforme mostra o gráfico abaixo.
É verdade que a significância estatística deste resultado é discutível, dado o pequeno número de pontos de dados que consideramos. A única conclusão certa aqui é que preciso correr mais.
Poderíamos ir mais longe na análise, olhando a influência de outras variáveis, mas deixo isso para outro artigo.
Por fim, podemos traçar o “Gráfico de Kudos” no qual podemos ver quem são nossos principais apoiadores e avisá-los.
É claro que algumas pessoas são mais viciadas no Strava do que outras e darão elogios à medida que rolam para baixo no feed de atividades, enquanto outras abrirão o aplicativo apenas de vez em quando e darão elogios apenas às atividades mais recentes que virem.
Este gráfico não tem como objetivo julgar as pessoas por darem elogios ou não, trata-se simplesmente de ilustrar novos insights que você não veria em nenhum outro lugar - nem mesmo na versão premium do aplicativo.
Sem dúvida, podemos fazer muito mais com todos os dados que podemos obter da API do Strava. Esta foi simplesmente uma primeira tentativa de responder a uma pergunta incomum e um bom exercício para fazer as coisas andarem.
Se você quiser analisar suas atividades no Strava e descobrir quem são seus principais apoiadores, o código completo pode ser encontrado aqui:
https://github.com/Guigs11/strava_kudos
Obrigado por ler até o final do artigo!
Sinta-se à vontade para deixar uma mensagem abaixo ou entre em contato comigo através LinkedIn se você tiver alguma dúvida/observação!
Mais para vir!
Quem é o seu apoiador número 1 no Strava? Republicado da fonte https://towardsdatascience.com/whos-your-number-1-supporter-on-strava-5a888230f361?source=rss—-7f60cf5620c9—4 via https://towardsdatascience.com/feed
<!–
->
- Bitcoin
- bizbuilder Mike
- blockchain
- conformidade do blockchain
- conferência blockchain
- Consultores Blockchain
- coinbase
- Coingenius
- Consenso
- conferência de criptografia
- crypto mining
- criptomoedas
- Descentralizada
- DeFi
- Ativos Digitais
- ethereum
- aprendizado de máquina
- token não fungível
- platão
- platão ai
- Inteligência de Dados Platão
- Platoblockchain
- PlatãoData
- jogo de platô
- Polygon
- prova de participação
- W3
- zefirnet