Подход, основанный на данных, для визуализации прогресса и повышения производительности с течением времени.

Четыре месяца назад я решил присоединиться к соревнованиям по бегу по пересеченной местности, которые ежегодно проходят в моем родном городе. Я всегда был активным человеком, но никогда не бегал в горы и не участвовал в соревнованиях. Чтобы лучше подготовиться, я решил использовать некоторые свои навыки работы с данными. В частности, я использовал Strava API для получения сведений о своих действиях, а затем создал панель мониторинга с помощью Tableau, на которой подытоживался мой прогресс в обучении. В этой статье я покажу вам этапы разработки и конечный результат.

1. Получите данные из Strava API

Первый шаг — завести учетную запись Strava и выполнить действия, описанные в официальной документации Strava, чтобы получить токены, необходимые для вызовов API[ 1].

Еще одним важным шагом является подключение API к учетной записи спортсмена. Поскольку этот проект касается моей деятельности, я подключил свой аккаунт. Как поясняется в [1], спортсмену необходимо перейти по URL-адресу и дать согласие на доступ к записанным действиям. После выполнения этих шагов мы можем начать загрузку данных о действиях, используя следующий код Python.

Этот код выполняет две функции: во-первых, он выполняет POST-запрос к Strava, чтобы получить обновленный токен доступа; во-вторых, он использует токен доступа для ПОЛУЧЕНИЯсписка действий. Мы можем указать количество действий для одной «страницы» и количество «страниц». В этом случае я установил количество действий на 100 на одной «странице». Чтобы этот код работал, не забудьте ввести свой идентификатор клиента, секретный код клиента и маркер обновления, созданные на первом этапе этой статьи.

Поскольку данные поступают в формате JSON, мы можем использовать функцию Pandas json_normalize(), которая «нормализует полуструктурированные данные JSON в плоскую таблицу», согласно официальной документации [2]. . Результатом выполнения этого кода должен быть Pandas DataFrame ваших действий Strava, похожий на тот, что показан на рисунке 1.

2. Фильтровать, очищать и экспортировать тренировочные данные в формате CSV.

Как вы могли заметить, набор данных содержит несколькостолбцов, и некоторые из них могут быть бесполезны для ваших визуализаций. Кроме того, вас может заинтересовать только определенный вид деятельности (например, бег), а не другие (например, катание на лыжах или плавание). Например, я тоже катаюсь на горных велосипедах, но для этого проекта меня интересуют только данные, касающиеся бега или трейлраннинга.

После некоторых исследований я выбрал действия и столбцы, которые хотел использовать в этом проекте. Вы можете выбрать различные действия и столбцы в зависимости от типа анализа, который вы хотите выполнить. С помощью следующего кода я выбрал только действия типа «Бег» и некоторые атрибуты, такие как имя, расстояние, время движения, вид спорта, высоты, скорость и дата.

Глядя на отфильтрованные данные, мы можем заметить, что:

  • Расстояния и Высоты указываются в метрах.
  • Время указывается в секундах
  • Скорость указывается в метрах в секунду (м/с).
  • Дата начала и время указываются в вашем местном часовом поясе. В моем случае «Z» в конце значения представляет собой зону UTC.
  • Темп бега отсутствует и должен вычисляться на основе времени движения и расстояния.

Учитывая это, я использовал следующий код Python для вычисления темпа бега в стандартном формате (мм.сс/км для использования в качестве меток на диаграммах) и в «сыром» формате (для использования в качестве числовых значений) и для преобразования даты и времени начала в атрибут Pandas Datetime. Другие преобразования, например расстояния из метров в километры, будут выполняться непосредственно в Таблице.

Последней операцией является экспорт кадра данных Pandas в файл CSV, что можно просто выполнить с помощью функции to_csv() Pandas, как показано в следующем коде.

3. Создайте несколько визуализаций в Tableau Public

Теперь мы можем приступить к созданию наших визуализаций и информационных панелей в Tableau Public. Поскольку эта статья не является руководством по использованию Tableau, я не буду подробно описывать все шаги. Я просто покажу, как я реализовал некоторые визуализации и окончательную панель управления. На изображениях в этом разделе показаны как визуализации, так и интерфейс Tableau, чтобы вы могли воспроизвести результаты.

Для данных об общем количестве действий, общем наборе высоты и общем расстоянии я создал несколько плиток. strong>, как показано на рисунке 2. Другие визуализации состоят из гистограмм или диаграмм рассеяния.

На рис. 3 показана гистограмма пробега. На этой диаграмме мы видим, что большая часть моих занятий приходится на 6 км, за которыми следуют 7 км и 8 км. Моя самая длинная активность составила около 17 км, а самая короткая — около 4 км.

На рис. 4 показано количество километров, которые я пробежал за месяц. Начиная с октября 2022 года я неуклонно увеличивал количество километров до февраля, когда прошла летняя экзаменационная сессия, и мне пришлось сокращать количество еженедельных пробегов сеансы. На момент написания этой статьи март только начался, и есть еще некоторые дела, которые нужно сделать.

На рис. 5 показан месячный прирост высоты. Опять же, с октября 2022 года я неуклонно увеличивал набор высоты в метрах за пробежку до февраля. Эти данные в сочетании с данными на рис. 4 показывают, что я постепенно увеличивал интенсивность своей деятельности, что позволило мне покрывать большие расстояния и большие высоты.

На рис. 6 сгруппированы и подсчитаны активности с одинаковым темпом бега. Это показывает, что наиболее распространенный темп бега в моей деятельности составляет от 5:38 до 6:18 мин/км. Я знаю, что это немного, но все равнохороший результат для меня, учитывая горные тропы с подъемами, спуски и пересеченная местность.

И последнее, но не менее важное: на рис. 7 сравниваются дистанция, темп бега и общий набор высоты. За исключением нескольких исключений, более длительные занятия с точки зрения расстояния обычно связаны с более вертикальным подъемом и более медленным темпом бега. Из рисунка видно, что присутствуют короткие, но очень интенсивные действия, а также длительные, но не очень интенсивные действия. Более того, увеличение высоты влияет на темп бега больше, чем на расстояние.

4. Создайте окончательную панель инструментов в Tableau Public.

Теперь, когда у нас есть интересующие нас визуализации, мы можем перейти к созданию сводной панели. С Tableau вы можете дать волю своему творчеству, комбинируя различные диаграммы и выбирая цвета, заголовки, разделы. и кнопки; кроме того, на главной странице веб-сайта Tableau Public [3] перечислены несколько панелей управления, которые можно использовать в качестве вдохновения или хорошей отправной точки.

Чтобы создать свою панель управления, которая доступна онлайн [4], я решил использовать классические цвета Strava, которые можно найти как на сайте, так и в приложении: белый, черный и оранжевый. Информационная панель состоит из двух разделов: в первом отображаются сводные данные и пройденные расстояния; второй показывает набор высоты и данные о темпе бега. Боковое меню позволяет перемещаться между двумя страницами. На рис. 8 показана главная страница информационной панели.

Чтобы сделать информационную панель более привлекательной, я изменил цвет фона графиков и сделал сетки ссылок тоньше. Каждая визуализация содержится в рамке с черными рамками; заголовок оранжевый на черном фоне. Отступы и поля обеспечивают пространство между блоками. Рисунок 9 представляет вторую страницу информационной панели.

Я думаю, что эта информационная панель ясна и понятна и обеспечивает хорошее представление о моей учебной деятельности. Определенно можно создать больше визуализаций, используя эти данные, но для этого эксперимента я решил не усложнять и сосредоточиться только на нескольких важных аспектах. В будущем я добавлю третью страницу для других видов деятельности, таких как катание на горных велосипедах.

Выводы

Я очень доволен своим прогрессом в качестве спортсмена. Гонка (12 марта) прошла хорошо, и для меня самым большим успехом было быть там, быть частью этого и сравнивать себя с все остальные спортсмены, принимавшие участие в мероприятии.

Я также доволен этим проектом, который позволил мне визуализировать мой прогресс и улучшения. Я надеюсь, что это позволит кому-то сделать то же, что и я, и пересечь собственную финишную черту, какой бы она ни была.

Спасибо за чтение и удачных визуализаций!

Рекомендации

[1] Начало работы с Strava API — Strava Docs
[2] Нормализация JSON — Pandas Docs
[3] Добро пожаловать в Tableau Public — Tableau Public
[4 ] Running Wild: Моя панель инструментов Strava

Дополнительные материалы на PlainEnglish.io.

Подпишитесь на нашу бесплатную еженедельную рассылку новостей. Подпишитесь на нас в Twitter, LinkedIn, YouTube и Discord .

Заинтересованы в масштабировании запуска вашего программного обеспечения? Ознакомьтесь с разделом Схема.