Исходный размер 1140x1600

Связь выбора героев с победами на The International 2023

Когда я выбирал тему для проекта, мне хотелось взять что-то, где есть понятные данные, и при этом тема была связана с Dota  2. Поэтому я решил посмотреть, как меняется winrate героев в матчах крупного турнира (TI  2023) и как winrate соотносится с популярностью героев.

Почему эта тема оказалась удобной для анализа: данные по матчам Dota 2 находятся в открытом доступе и могут быть получены через сервис OpenDota. Формат данных позволяет достаточно быстро получить большое количество строк и на их основе построить статистику, пригодную для анализа. Результат матча (победа или поражение) легко переводится в числовой вид, благодаря чему его удобно использовать для расчёта winrate. Кроме того, герои в Dota 2 — удобная основа для визуализаций, таких как топ-10 по популярности или распределения показателей.

big
Исходный размер 1259x913

Данные с сайта OpenDota с сортировкой по League

Цветовая палитра

Код палитры и стиля

big
Исходный размер 786x237

Палитра подобрана в соответствии с цветами игры

Нормализация исхода матча

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

Чтобы привести данные к единому виду, я реализовал функцию normalize_win_col, которая преобразует все возможные варианты записи исхода матча в бинарный формат, где победа обозначается единицей, а поражение — нулём.

Функция автоматически учитывает тип данных столбца и корректно обрабатывает логические, числовые и строковые значения. В случае если некоторое значение не удаётся однозначно интерпретировать, функция сообщает об ошибке и выводит примеры проблемных данных. В результате в таблице создаётся столбец win_num, который используется для дальнейшего анализа и расчёта winrate героев.

Исходный размер 1784x1714

Нормализация исхода матча

Загрузка и сопоставление названий героев

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

Я использовал открытое API OpenDota, которое предоставляет актуальный список героев и их идентификаторов.

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

Исходный размер 1852x1278

Загрузка и сопоставление названий героев

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

Таблица статистики по героям

После подготовки данных я сформировал итоговую таблицу статистики по героям. Для этого я привёл столбец hero_id к числовому формату и исключил некорректные значения, после чего сгруппировал данные по героям. Для каждого героя было рассчитано количество игр, количество побед и winrate как отношение побед к общему числу игр.

Исходный размер 2038x1158

Таблица статистики по героям

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

Визуализация популярности героев

На данном графике представлена десятка самых популярных героев по количеству сыгранных матчей в рамках анализируемой выборки. По оси X указаны названия героев, а по оси Y — количество игр, в которых каждый из них участвовал. Столбчатый формат визуализации позволяет наглядно сравнить частоту выбора героев между собой.

Исходный размер 1514x918

Визуализация популярности героев

Из графика видно, что Muerta заметно выделяется среди остальных героев и имеет наибольшее количество игр, что может указывать на высокий приоритет этого героя в матчах турнира. Остальные герои из топ-10 имеют близкие значения по количеству игр, что говорит о сравнительно равномерном распределении популярности внутри основной группы часто выбираемых героев. Такой график позволяет зафиксировать мета-пул героев и служит отправной точкой для дальнейшего анализа их эффективности и winrate.

Исходный размер 1187x487

Столбчатая диаграмма

Зависимость популярности героев и winrate

Для анализа взаимосвязи между популярностью героев и их эффективностью я использовал диаграмму рассеяния. По оси X на графике отложено количество сыгранных матчей, которое отражает популярность героя в рамках выборки, а по оси Y — его winrate. Каждая точка соответствует одному герою и показывает, как часто он выбирался и насколько успешно при этом выступал.

Исходный размер 1514x1198

Зависимость популярности героев и winrate

На график была добавлена горизонтальная пунктирная линия на уровне 50%, обозначающая условный баланс между победами и поражениями. Эта линия служит визуальным ориентиром и позволяет быстро определить, какие герои имеют winrate выше среднего значения, а какие — ниже. Использование единого нейтрального цвета для точек подчёркивает, что целью графика является анализ общей зависимости между показателями, а не сравнение отдельных категорий героев.

Связь выбора героев с победами на The International 2023
Проект создан 17.01.2026
Мы используем файлы cookies для улучшения работы сайта НИУ ВШЭ и большего удобства его использования. Более подробную...
Показать больше