
Для своей работы я выбрала исторические данные по турнирам Dota 2. Датасет взят с сайта opendatabay.com
DotA — одна из самых популярных игр в мире киберспорта с пиковыми онлайном более 1,2 млн игроков одновременно и миллионами ежемесячных пользователей на Steam. Эти данные особенно интересны, поскольку охватывают более 140 крупных турниров с 2011 года. Анализ позволяет выявить тренды роста индустрии, доминирование команд вроде OG или Team Spirit и влияние внешних факторов вроде отмен турниров в 2020 году.
Я буду использовать следующие виды графиков: — Линейный график — Облако слов — Тепловая диаграмма — Круговая диаграмма
Эти типы обеспечивают разнообразие визуализаций и соответствуют структуре данных
Цветовое решение
Цвета для проекта были вдохновлены цветовой палитрой персонажей Dota 2
Я выбрала следующие цвета:
— Белый — Розовый — Бирюзовый — Фиолетовый


Герои в Дота 2
График № 1
Подготовливаем окружение для анализа данных и визуализации:
Этот код импортирует необходимые библиотеки. Pandas используется для обработки таблиц данных. Matplotlib.pyplot служит для построения графиков. Numpy применяется для числовых вычислений. Matplotlib.font_manager управляет шрифтами. Os работает с файловой системой. %matplotlib inline отображает графики прямо в Jupyter Notebook.
Настраиваем шрифт для графика
Проверяется существование файла 'trajanpro_bold.ttf'. Если файл найден, подключается Trajan Pro Bold через FontProperties. Имя шрифта применяется глобально к графикам. Выводится сообщение об успешном подключении. Иначе используется стандартный serif.
Этот блок загружает и очищает данные о призовых фондах Dota. Читается CSV-файл 'dota_dataset.csv'. Удаляются символы '$', ', ' и пробелы из столбца Total_Prize для преобразования в float. Создается функция get_year для извлечения года из даты. Годы 2011-2021 фильтруются и очищаются от пропусков. Данные агрегируются по годам с суммированием призовых. Значения округляются до миллионов долларов. Выводится итоговая таблица.
Создаем линейный график призовых фондов Dota 2
Создается фигура размером 12×7 с прозрачным фоном. Строится линия с толщиной 4 и белыми маркерами по данным yearly_data. Устанавливается заголовок «Призовые фонды Dota 2 (2011-2021)» белым цветом. Подписи осей «Год» и «Призовой фонд (млн $)» окрашены в белый. Добавляется белая сетка с прозрачностью. Настраиваются белые метки тиков. Устанавливаются тики по годам.
Стилизуем и сохраняем график
Белым цветом и толщиной 1.5 рамки осей. Применяется tight_layout для компоновки. График сохраняется как PNG с прозрачным фоном и высоким разрешением. Выводится сообщение о сохранении. Показывается график. Данные yearly_data сохраняются в CSV. Выводится сообщение о сохранении данных.
Итоговый график:
История изменения общего призового фонда турнира The International по игре Dota 2 с 2011 по 2021 год
Наблюдался значительный рост призового фонда на протяжении большей части этого периода. Призовой фонд вырос с базовых $1,6 млн в 2011 году до более чем $34 млн в 2019 году. Рекордный пик призового фонда составил около $40 млн в 2021 году. В 2020 году турнир отменился, что привело к резкому спаду показателя на графике.
Большая часть призового фонда формируется за счет краудфандинга сообществом игроков, а не только компанией Valve.
График 2
Загружаем данные и анализируем локации турниров DotА
Читается CSV-файл 'dota_dataset.csv'. Из столбца Location удаляются пропуски и преобразуются строки. Подсчитывается количество турниров по каждой локации через value_counts. Выводится топ-10 самых популярных локаций. Создается словарь custom_colors с кастомными цветами для ключевых локаций.
Определяем функцию color_func для раскраски слов по частоте
Функция возвращает цвет из custom_colors или определяет его по квартилям location_counts. Создается WordCloud размером 1200×750 с прозрачным фоном RGBA. Устанавливаются параметры: 50 слов максимум, предпочтение горизонтальной ориентации, диапазон размеров шрифта. Облако генерируется из частот локаций. Применяется recolor с кастомной функцией цвета.
Отображаем и сохраняем облако слов локаций
Создается фигура размером 14×10 с прозрачным фоном. Добавляется subplot и отображается wordcloud с интерполяцией bilinear. Ось отключается через axis ('off'). График сохраняется как PNG с высоким DPI, прозрачным фоном и минимальными отступами. Выводится сообщение о сохранении. Показывается облако слов.
Итоговый график:
Облако слов, состоящее из названий городов и стран, где чаще всего проводились турниры
На графике мы видим:
Крупнейшие города и страны: Шанхай, Китай; Киев, Украина; Лос-Анджелес, США; Москва, Россия; Йёнчёпинг, Швеция. Регионы: Европа, СНГ. Самые частые страны: Китай и США. Наиболее заметные европейские города: Бухарест, Румыния; Берлин, Германия; Париж, Франция; Франкфурт, Германия.
График 3
Импортируем библиотеки для анализа данных и визуализации
Pandas обрабатывает таблицы. Matplotlib и Seaborn строят графики. Font_manager управляет шрифтами. Регулярные выражения и os используются для обработки текста и файлов. Warnings подавляются. Настраивается шрифт Trajan Pro Bold из файла .otf
Загружаем датасет Dota из CSV
Создается функция extract_year для извлечения года из даты через регулярное выражение. Добавляется столбец Year ко всем строкам. Фильтруются данные только с победителями First_Place за 2011–2021 годы. Определяются уникальные годы и топ-15 команд по количеству побед. Создается нулевая матрица heatmap_data с командами в строках и годами в столбцах. Матрица заполняется количеством побед каждой команды по годам.
Выводим статистику топ-10 команд по победам и список лет
Создается кастомная цветовая палитра из четырех цветов для heatmap. Строится фигура размером 16×10 с прозрачным фоном. Создается heatmap с числами побед, белыми границами ячеек и цветовой шкалой. Настраивается заголовок «DotA 2 Team Wins by Year (2011-2021)» белым цветом. Подписи осей «Year» и «Teams» выделяются жирным белым шрифтом.
Стилизуем тики осей и цветовую шкалу heatmap
Белые тики для осей X и Y с размером 16 и без поворота. Цветовая шкала получает белые метки и жирную подпись. Настраиваются отступы фигуры для оптимальной компоновки. График сохраняется как PNG с высоким DPI и прозрачным фоном. Выводится сообщение о сохранении. Показывается финальный heatmap.
Итоговый график:
Тепловая карта, показывающая количество побед команд в турнирах по Dota 2 с 2011 по 2021 год, с цветовой шкалой, указывающей количество побед
Мы видим количество побед команд в турнирах по Dota 2 с 2011 по 2021 год. Na’Vi доминировала в ранние годы, особенно в 2011 и 2013 годах. В середине десятилетия наблюдалось более равномерное распределение побед между командами EG, Secret, VP и Liquid. Команда OG достигла значительных успехов в 2018 и 2019 годах, одержав по несколько побед подряд.
График 4
Импортируем библиотеки для данных и визуализации
Pandas обрабатывает таблицы. Matplotlib строит графики. FontProperties управляет шрифтами. Os проверяет файлы. Регулярные выражения извлекают данные. Настраивается шрифт Trajan Pro Bold из файла .otf. Если файл существует, применяется его имя глобально. Выводится сообщение о подключении.
Загружаем датасет DotА из CSV
Создается функция extract_year для извлечения года из даты через регулярное выражение. Добавляется столбец Year ко всем строкам. Фильтруются данные только со вторыми местами Second_Place за 2011–2021 годы. Подсчитываются топ-4 команды по количеству вторых мест через value_counts. Выводится статистика топ-4 команд.
Определяем цвета для диаграммы
Создается круговая диаграмма размером 14×10 с прозрачным фоном. Диаграмма строится из значений second_counts с подписями команд. Применяются цвета, проценты с одним знаком и поворот на 90 градусов. Заголовок «ТОП-4 команды по вторым местам Dota 2 (2011-2021)» белым жирным шрифтом. Подписи команд стилизуются белым жирным шрифтом размером 14. Проценты autotext окрашиваются черным жирным шрифтом.
Настраиваем отступы и сохраняем график
Этот блок настраивает отступы фигуры для оптимальной компоновки. График сохраняется как PNG с высоким DPI и прозрачным фоном. Выводится сообщение о сохранении файла dota_second_place_pie_top4.png. Показывается круговая диаграмма.
Итоговый график:
График, демонстрирующий топ-4 команды по второму месту