
Когда я начал делать проект, мне хотелось сделать его на какую-то близкую для меня тему, так что я решил выбрать то, во что я играю больше всего.
Сообщество игры League of Legends имеет некоторые теории, которые они строят насчёт персонажей, мне стало интересно, насколько же они правдивы?

Первая теория игроков, которую я хотел проверить — сложные персонажи должны меньше выигрывать, по сравнению с лёгкими

При проверке данной теории мне требовалось отображать статистику по каждому персонажу, чтобы продемонстрировать все краевые кейсы, которые могли бы возникнуть при анализе данных. Для этого мной было принято решение использовать scatterplot из библиотеки seaborn. При этом сама отрисовка каждого графика лежала на библиотеке pyplot, которая является частью matplotlib
Дополнительно мне показалось интересной идеей показать популярность персонажей всё в том же графике. Решение с размерами пришло от самих Riot Games — в одном из своих GDC Talkов они показали внешний вид своих схем со статистикой и мой вариант почти полностью совпадает с их датасетами.
На удивление — это не так! В основном частота побед зависит от популярности персонажа, а большая часть так и вообще лежит в пределах 48-52% побед, что является нормальным показателем
Так же можно заметить, что размер точек для каждого персонажа свой. Это визуализация популярности персонажа, благодаря ней можно заметить, что популярность персонажей не сильно зависит от их частоты побед или сложности


Вторая теория игроков, которую я решил проверить — персонажи с большим количеством здоровья и защиты выигрывают чаще

Для данного графика мне потребовалось посчитать максимальное значение характеристик, которые игрок может получить во время игры. Я предположил, что чем больше здоровья и защиты получит игрок, тем его защита будет больше, так что я просто сделал формулу, которая складывает все значения в их максимальных проявлениях (Максимальный уровень в игре — 18) и сделал график на основе этого параметра.
Так же я использовал возможность pandas переводить строки в цифры. Это позволило мне избежать неудобных моментов, когда некоторые значения были написаны string, а не integer.
На данных графиках мы можем заметить, что у персонажей с очень большим количеством здоровья и правда идёт повышение частоты побед, примерно с показателя в 2600 ед. здоровья количество персонажей с положительным количеством побед — выше


А если наоборот — выигрывают чаще те, кто наносит больше урона
С уроном же данное значение выражено сильнее — персонажи с более чем 140 ед. урона имеют стабильно высокую частоту побед


Третья теория игроков (или скорее заблуждение) состоит в том, что саппорты — типа Enchanter побеждают чаще, потому что они легче

Для данного графика я использовал barplot, который мог бы показать усреднённую статистику более наглядно для обычного человека, которому не хочется разбираться в точечках.
Один и тот же персонаж может иметь сразу несколько тегов, например Fighter и Diver и для того, чтобы правильно посчитать их статистику мне потребовалось сначала использовать метод Explode, а уже потом привязать популярность от персонажей к полученным тегам
Однако, это не так! Хоть Enchanter и является вторым по популярности типом в игре, его частота побед не настолько высока
Последняя теория, которую я проверил повествовала, что новые персонажи более популярны, чем старые
Но данная таблица опровергает и это, старичков любят сильно больше! Хотя стоит заметить, что частота выхода персонажей после 2014 очень сильно упала, но тот костяк, который был создан до него, всё ещё остаётся популярным
Так же стоит заметить, что Riot проводят полные обновления старых непопулярных персонажей, так что данная статистика немного искажается, но всё ещё является верной


Ну и напоследок некоторые интересные факты о персонажах!

Во втором графике я воспользовался прекрасной возможностью pandas преобразовывать string в integer получая длину в символах, что оказалось очень удобным.
Так же для того, чтобы статистика выглядела более интересно я убрал тех героев, значение знаков которых равно уже присутствующему в списке с помощью метода drop_duplicates
Все данные, которые были мной получены в данном исследовании, помогут мне не только в том, чтобы начать больше выигрывать, но и так же могут пригодиться при создании персонажей для League of Legends.
Использованные ресурсы: Нейросеть Qwen.AI, модель Qwen2.5-Coder-32B-Instruct: https://chat.qwen.ai — для решения ошибок и консультации по поводу возможностей тех или иных библиотек
Папка с датасетом и кодом: https://drive.google.com/drive/folders/1u6if0JHKYzNPzY6Fk_lHZ85Zw0CGzcJu?usp=sharing