Python и FIFA |
||
МЕНЮ Искусственный интеллект Поиск Регистрация на сайте Помощь проекту ТЕМЫ Новости ИИ Искусственный интеллект Разработка ИИГолосовой помощник Городские сумасшедшие ИИ в медицине ИИ проекты Искусственные нейросети Слежка за людьми Угроза ИИ ИИ теория Внедрение ИИКомпьютерные науки Машинное обуч. (Ошибки) Машинное обучение Машинный перевод Реализация ИИ Реализация нейросетей Создание беспилотных авто Трезво про ИИ Философия ИИ Big data Работа разума и сознаниеМодель мозгаРобототехника, БПЛАТрансгуманизмОбработка текстаТеория эволюцииДополненная реальностьЖелезоКиберугрозыНаучный мирИТ индустрияРазработка ПОТеория информацииМатематикаЦифровая экономика
Генетические алгоритмы Капсульные нейросети Основы нейронных сетей Распознавание лиц Распознавание образов Распознавание речи Техническое зрение Чат-боты Авторизация |
2019-01-21 13:17 Почти все знают о таком футбольном симуляторе, как FIFA. Множество игроков даёт прекрасную возможность построить несколько интересных диаграмм. На Kaggle я нашел датасет с сведениями о 18.000 игроков. Данный набор можно найти тут. Основные задачи Сегодня в моих целях построить несколько диаграмм про:
Вся реализация будет очень похожа, однако цель статьи не сколько научить пользоваться какими-то функциями, сколько показать подход для визуализации определённых данных. С целями разобрались, так что вперёд. Импортирование и считывание из файла Сегодня нам понадобится только Pandas и matplotlib, а средой разработки послужит Jupyter Notebook: Данные загрузим таким способом: Страны Для начала узнаем, с каким количеством стран мы вообще имеем дело: Отлично, у нас есть 164 страны. Конечно же строить диаграмму со всеми из них мы не будем, однако об этом позже. Чтобы узнать, сколько всего игроков в FIF'е от каждого государства, необходимо выполнить такой фрагмент кода: Отлично. Однако как мы можем заметить, некоторые страны обладают уж слишком маленьким кол-вом игроков(у Андорры он всего лишь один :) ), потому выберем самые "крупные" государства в плане футболистов: Получаем 10 стран с самым большим количеством футболистов(то, что их получилось ровно 10 штук - удача, предел в 400 я выбрал со второго раза). Осталось построить диаграмму. Для этого мы будем использовать matplotlib.pyplot. Магическая команда %matplotlib inline нужна для вывода изображения в самом Jupyter Notebook. Дальше пройдемся более детально:
Как присваиваются значения переменным labels и values, думаю, всем понятно.
Результат таков: Как мы можем заметить, Англия обладает самым большим кол-вом игроков(оно то и понятно, в FIF'e 4 английских лиги), далее идут Германия, Испания и Аргентина. К моему удивлению, Бразилия оказалась далеко не в первых позициях. Позиции Бонусный раздел, где ничего рисовать мы не будем, однако должно быть интересно. Речь идёт про позиции футболистов. Сначала взглянем на все столбцы, которые у нас есть: Видим, что позиции у нас задаются заглавными буквами и имеют строковое значение длиной не более 3 символов. Отбросим другие столбцы: Удаляем значения ID и Age, они тут быть не должны :). Те, кто играл в фифулю, заметят, что тут есть позиции, карточки которых не существует(например LAM - левый атакующий полузащитник). Объяснить этого я не могу, все вопросы к создателю датасета. Возраст футболистов Возраст футболистов у нас хранится в столбце Age. Для начала посмотрим "границы" возраста футболистов в фифе, то есть максимальный и минимальный возраст: Создадим словарь со значениями <возраст : кол-во игроков>: Отлично. Теперь по "старой" схеме рисуем диаграмму: Устанавливаем промежуток [2, 31), чтобы немного отдалить крайний столбец диаграммы от левого края. Подписываем оси, устанавливаем синий цвет столбцов и ширину столбца 0.75. Все настройки вы можете изменить по своему желанию. Результат таков: Наглядно видим, что самым распространённым возрастом среди футболистов в фифе является 21 год, далее расположилось значение в 26 лет. Рейтинг Сегодня мы всегда будем пользоваться словарями, они очень удобны для наших задач. Следующим пунктом является рейтинг - общий показатель характеристик футболиста в фифе(максимальное значение обычной золотой карточки - 94). Получаем словарь типа <рейтинг : кол-во футболистов>: Примечание. Внимательно ознакомьтесь со всеми столбцами, что у вас есть. С первого раза я подумал, что рейтинг будет хранится в столбце 'Rating', однако был не прав. Видим, что минимальный рейтинг игрока в фифе - 46, и он всего один. Теперь строим диаграмму: Каждый раз мы устанавливаем значение промежутка разным, в зависимости от кол-ва рассматриваемых нами значений. Не забываем подписывать оси и изменять цвет столбцов для большей разнообразности. Получаем: Самым часто встречаемым рейтингом является 66, что является модой выборки. Давайте узнаем среднее значение: Получаем значение близкое к 66, что говорит о равномерном распределении игроков на диапазоне рейтинга [46, 66) и (66, 94]. Клубы В качестве рассматриваемых клубов я выбрал:
Я мог бы взять другие клубы, на исследование это никак бы не повлияло. Кол-во игроков Для получения кол-во игроков каждого клуба проделываем стандартную процедуру: Теряется порядок клубов(лично у меня первым стал Ювентус), однако поправить это не составит труда. Сейчас же это нам не важно, нам нужно кол-во игроков в виде диаграммы: Это всё у нас уже было, я поменял только подписи и цвет в виде HTML(небольшую подборку цветов можно найти здесь). Результат таков: Как мы видим, многие клубы имеют по 33 игрока в своем составе. Существенно отстает старая Синьора - всего лишь 25. Средний рейтинг Дальше интереснее. Мы уже научились вычислять среднее арифметическое с помощью метода mean(). В этот раз используем более сложную маску - массив булевых значений, для выбора нужных строк из таблицы. Нам нужно среднеее значение рейтинга тех строк, значение параметра Club равняется заданному клубу. Реализуется это так: Я решил округлить результат до целого числа, если вы хотите иначе, используйте функцию round() или вовсе ничего не делайте. Опять же строим диаграмму: Всё из выше показанного повторялось много раз, потому ничего объяснять не надо. Результат: Как мы видим, самый высокий средний рейтинг имеет Ювентус, который значительно опережает Барселону, несмотря на наличие Месси у последних(переход Роналду пошел явно на пользу). Средний возраст Осталось определить самый "старый" клуб среди выше представленных. Вся процедура остается прежней, просто вместо колонки Рейтинг исследуем колонку Возраст: Ну и строим диаграмму, меняя цвет столбцов и подписи к осям: И снова Ювентус самый первый. Здесь можно заметить больший разброс среди остальных клубов, где Барселона оказалась самой "молодой". Заключение Сегодня мы построили несколько интересных диаграмм, связанных с футболистами в футбольном симуляторе FIFA. Стоит сказать, что данные могут разниться, поскольку я не уверен, что в рассматриваемом датасете есть сведения про абсолютно всех игроков. Код из статьи с дополнительными указаниями можно найти тут. Также рекомендую ознакомиться с другими материалами посвященными Искусственном интеллекту и языку программирования Python. Ну и подпишись на сообщество CODE BLOG, если все еще этого не сделал. Здесь публикуется лучший контент для программистов. Источник: m.vk.com Комментарии: |
|