StravaLítica: Decifrando a Estrada da Análise de Dados em suas Corridas!
- #Estrutura de dados
Assim como eu, muita gente se apaixonou à primeira vista pelo incrível mundo dos dados. Este campo é repleto de oportunidades e caminhos a serem explorados e desbravados. Podemos abordar desde enigmas complexos até lidar com as situações mais comuns do nosso dia a dia, revelando um poder único: a multidisciplinaridade.
Diferentemente de outras áreas, a teoria não é apenas abstrata, mas uma ferramenta palpável para resolvermos os nossos problemas do cotidiano. Vale ressaltar ainda que, a mágica acontece apenas quando colocamos a teoria em prática, como Immanuel kant disse: “A teoria sem a prática é inútil; a prática sem a teoria é cega.”
O que mais impressiona é a fascinante arte de observar o nascimento das tendências, os padrões sendo revelados e as respostas aparecendo como num passe de mágica. No entanto, para que essa mágica aconteça temos que ativar o modo hands on, ou seja, mãos na massa.
Em um mundo cada vez mais conectado, compartilhar conhecimentos e experiências com outros entusiastas enriquece ainda mais a jornada, o que colabora para o amadurecimento e avanços da área. A troca de ideias amplia nossa visão, proporcionando soluções mais eficientes.
Neste artigo, demonstrarei que é possível realizar um show de mágica ao resolver um problema do meu cotidiano por meio dos dados.
Probleminha ou problemão?
- Como posso transformar o conhecimento que adquiri na área de dados para promover mudanças em minha vida ou para a sociedade?
- Quais aspectos da minha vida ou do mundo ao meu redor eu gostaria de impactar positivamente?
- Quais são os principais objetivos que busco alcançar?
- Que ganhos pessoais, profissionais ou sociais posso antecipar ao desenvolver meu conhecimento para esta causa específica?
- Quais desafios ou obstáculos posso enfrentar ao tentar aplicar meu conhecimento?
- Onde poderei ter acesso aos dados necessários para a análise?
- Qual é a linguagem de programação que utilizarei na coleta dos dados?
- Onde analisarei os dados?
Estas perguntas atuaram como uma bússola, guiando-me ao tema escolhido neste artigo. O primeiro passo foi dado! Identifiquei qual era o problema e estabeleci meu destino com base nas perguntas mencionadas acima. Vamos analisar cada uma mais detalhadamente:
- Como posso transformar o conhecimento que adquiri na área de dados para promover mudanças em minha vida ou para a sociedade?
- Resposta: Comecei abordando um problema do meu cotidiano, algo em que tenho domínio na área e tenha satisfação em acompanhar todo o processo.
- Quais aspectos da minha vida ou do mundo ao meu redor eu gostaria de impactar positivamente?
- Resposta: No meu caso, direcionei meu foco para minha segunda paixão: a corrida de rua.
- Quais são os principais objetivos que busco alcançar?
- Resposta: Meus objetivos incluem ter uma visão clara da minha evolução nos treinos e provas, monitorar a periodicidade, evitar possíveis casos de overtraining e identificar áreas para melhorar minha performance.
- Que ganhos pessoais, profissionais ou sociais posso antecipar ao desenvolver meu conhecimento para esta causa específica?
- Resposta: Ganharei em conhecimento da área de dados, além de levar para casa um pacote valioso de insights sobre meus treinos e oportunidades de aprimoramento na performance.
- Quais desafios ou obstáculos posso enfrentar ao tentar aplicar meu conhecimento?
- Resposta: Certamente, enfrentarei desafios como a obtenção dos dados, interpretação dos mesmos e as dúvidas iniciais sobre por onde começar. O intuito é nunca desistir, assim como numa corrida. É essencial seguir em frente para cruzar a linha de chegada.
- Onde poderei ter acesso aos dados necessários para a análise?
- Resposta: No meu caso, utilizo um smartwatch para monitorar minhas atividades, sincronizado com o Strava, um aplicativo que funciona como uma rede social para entusiastas de esportes. Por meio desse app, farei a coleta dos dados referentes aos meus treinos.
- Qual é a linguagem de programação que utilizarei na coleta dos dados?
- Resposta: Linguagem escolhida: Python.
- Onde analisarei os dados?
- Resposta: Na plataforma da Microsoft Power BI.
Metas traçadas e esclarecidas, chegou a hora de começarmos...
Coletando Dados: A arte de ‘espiar’ meus próprios passos com estilo
De acordo com o Canaltech, o Strava é mais do que um aplicativo de rastreamento de exercício. É uma plataforma que combina o rastreamento dos seus exercícios físicos com os integrantes da comunidade de atletas amadores ou profissionais.
Este aplicativo ficou tão famoso que ele abriu um espaço para os desenvolvedores criarem aplicativos e ajudarem a engrandecê-lo. Logo, encontrei a solução para extrair os dados que eram necessários no estudo.
Os dados seriam extraídos a partir de uma API, que fornece chaves únicas para liberar o acesso aos dados. Para criar esta API, segui os passos abaixo:
- Realizar o login no site: https://www.strava.com
- Navegar até o menu com a foto do usuário e cliquei em “Definições”
- Uma vez dentro das configurações, encontrar o menu “A minha aplicação de API” no lado esquerdo da tela e iniciar o processo de criação.
Com a API devidamente criada, é possível visualizar as chaves únicas que serão necessárias para o uso no coletor de dados. Para melhor compreensão, segue o detalhamento dos significados de cada campo:
- Categoria: A categoria escolhida para sua aplicação (não importa qual irá escolher).
- Clube: Não é necessário.
- ID Cliente: Sua ID de identificação (confidencial).
- Cliente Secreto: Seu código de cliente secreto (confidencial).
- O seu token de acesso: Seu token de autorização no qual muda a cada seis horas (confidencial).
- O seu token de atualização: Seu token que será utilizado para obter um novo token de autorização (confidencial).
- Classificar limites: Seu limite diário na aplicação.
Após obter a minha primeira API e ter conhecimento sobre os campos fornecidos, é necessário obter o código de autorização, mas para esta etapa guarde o seu ID Cliente. Após isto, é essencial seguir os seguintes passos:
- Copie e cole o link a seguir:
https://www.strava.com/oauth/authorize?client_id=id_cliente&redirect_uri=http://localhost&response_type=code&scope=activity:read_all
- Ainda sobre o link acima, substitua o id cliente, pelo ID Cliente que foi fornecido na API, na qual, foi configurada anteriormente.
- Ao executar a página uma aba de autorização será exibida, clique em autorizar e salve a nova url, pois ela armazena o código que é necessário mais tarde.
http://localhost/exchange_token?state=&code= GUARDE ESTE CÓDIGO AQUI &scope [...]
- Para esta etapa será necessário acessar o site https://www.postman.com/
- Queremos gerar um novo token, para isto copie e cole o link abaixo, substituindo ID Cliente, Cliente Secreto e o código salvo anteriormente na janela do seu navegador. Certifique-se que a configuração esteja POST.
https://www.strava.com/oauth/token?client_id=CLIENT_ID&client_secret=CLIENT_SECRET&code=CODE_SAVED_FROM_PREVIOUS&grant_type=authorization_code
- Copie o novo código “refresh_token” que retornou.
- Estamos prontos para o código de extração.
Estou 'stravagando' por aí, coletando dados e quebrando recordes!
Encarar uma maratona já não era desafiador o suficiente, precisava de um pouco de código para manter as coisas mais animadas. Utilizei o Visual Studio Code para desenvolver um script padrão para a API, na qual, exige o ID do Cliente, o Cliente Secreto e Token de atualização. Este último código, é o token que acabamos de obter via Postman.
Logo acima foi apresentado o código em Python, no qual faz o uso de:
- ‘requests’: Uma biblioteca que realiza solicitações HTTP para a API do Strava.
- ’urllib3’: Uma biblioteca para desativar os avisos de certificados SSL.
- ‘pandas’: Uma biblioteca para transformar os dados da API em um dataframe e posteriormente armazenar em um arquivo .CSV.
- ‘dados’: Um arquivo importado com o intuito de facilitar a manutenção do script, este possui as chaves secretas.
O código também inclui a definição das URLs para obter o token de autenticação e as atividades do atleta. Durante o processo de autenticação, as chaves secretas foram fornecidas, solicitando acesso ás atividades por meio da API.
No entanto, o Strava implementa a técnica de paginação, tornando necessário a criação de um loop ‘while’, com o objetivo de captar todos os dados em todas as páginas.
Ao final da extração, os dados foram armazenados em um arquivo tipo .CSV. Podemos avançar para a fase da transformação e análises dos dados.
Análise de dados: Transformando os dados
Utilizando o aplicativo Microsoft Power BI Desktop iremos transformar os dados e posteriormente criar relatórios visuais permitindo a obtenção de insights. De acordo com EBAC, o Power BI é uma plataforma de análise de dados.
O programa está conquistando espaço nas empresas pois, se destaca pela sua simplicidade e por fornecer as ferramentas necessárias para gerar relatórios e dashboards que são visualmente criativos, imersivos e interativos.
O arquivo gerado pelo nosso coletor está pronto para ser importado, mas primeiro iremos ajustar algumas partes, transformando os dados conforme observamos na figura abaixo.
O que foi feito na transformação de dados:
- Algumas colunas não serão interessantes para a nossa análise, sendo assim, estas foram excluídas.
- Foi adicionada uma nova coluna chamada ‘id_SK’, esta coluna tem como objetivo ser o índice dos dados.
- Foi observado que na coluna ‘elev_hig’ e ‘elev_low’ continham valores null. Estas colunas são responsáveis respectivamente por indicar a maior e a menor elevação do percurso. Foi observado que o valor total de elevação foi de 0, logo o maior e menor valor deve ser 0.
- A coluna ‘average_cadence’ continha valores null. Substitui estes valores pela média dos treinos, levando em consideração a coluna ‘sport_type’.
- As colunas relacionadas com os batimentos cardíacos ‘average_heartrate’ e ‘max_heartrate’ precisaram receber o tratamento de substituição de valores. Estes foram substituídos pelos valores médios e máximo.
- Converti a coluna ‘distance’ que são em metros em Km.
- Converti a coluna ‘moving_time’ e ‘elapsed_time’ em horas:minutos:segundos.
- Converti as colunas ‘average_speed’ e ‘max_sped’ para Km/h.
- Criei uma nova coluna de datas.
Análise de dados: Analisando os dados
Ao formatar os dados, estes estão prontos para começarmos a análise. Até agora, realizei analises mais simples apenas para o entendimento do problema, mas posteriormente pretende aprofundá-las, já que o tema é interessante e está em crescimento.
Neste primeiro relatório, dei uma olhada geral nas atividades. Foram 301 dias de treino, 441 treinos realizados, 6 comentários recebidos e 468 curtidas nos meus treinos. O gráfico de barras mostra registros dos anos de 2017, 2018, 2022 e 2023. Notei um aumento significativo a partir de novembro de 2022, quando retomei os treinos de forma regular.
No próximo relatório, destaca-se a atividade preferida e mais praticada: corrida.
E, por fim, mas não menos importante, apresentarei algumas métricas sobre as corridas, como a quilometragem total percorrida, o percurso mais longo e o mais curto. Já foram mais de 1.000 km percorridos, e dá para perceber que o ano de 2023 está acima da média.
Enfim, a área da análise de dados se revela ser abrangente, apresentando perspectivas que me encantam a cada resolução de problema utilizando suas técnicas. Com a sua multidisciplinaridade e com a ajuda da comunidade, conseguimos realizar grandes projetos e contribuir para um objetivo comum.
Vale também ressaltar que, analises como estas são iniciais para um mercado em constante expansão. Podemos observar o próprio Strava, este possui a versão PRO, na qual, oferece boas métricas de desempenho.
Concluindo, espero continuar este projeto e apresentar métricas mais complexas e articuladas. Obrigada a todos pelo tempo e sintam-se a vontade em dar sugestões.
Referência:
https://canaltech.com.br/apps/strava-o-que-e-como-usar/
https://ebaconline.com.br/blog/o-que-e-power-bi