Original size 514x719

Анализ данных из Fifa 19 и их визуализация

PROTECT STATUS: not protected

Вводная часть

Для своего проекта я выбрал данные по игре Fifa 19, где представлены данные о лучших футболистах в этой игре (конкретно там представлены разные параметры от возраста до национальности). Я выбрал эти данные для анализа, так как мне очень интересна эта Fifa и я часто в нее играю. Данные я нашел на сайте data.world. Для анализа я выбрал такие параметры, как Рейтинг, Потенциал и Возраст футболистов, чтобы затем на основе этих параметров выявить лучших футболистов в игре.

Начальный этап

Итак, сначала я скачал csv файл с сайта data.world. Чтобы открыть файл в GoogleColab, я использовал такой код:

from google.colab import files uploaded = files.upload ()

Затем я узнал все названия столбцов в таблице:

import pandas as pd df = pd.read_csv ('data.csv') print (df.columns)

И на основе полученных данных, выбрал названия тех столбцов, чьи данные мне нужны — это «Overall», «Potential» и «Age»

Анализ Рейтинга, Возраста и Потенциала

Далее, я решил проанализировать данные из каждого столбца и визуализировать их в три отдельные гистограммы. Каждая гистограмма отражает среднее распределение данных каждого параметра на всех представленных в таблице игроков. Для анализа данных каждого из трех столбцов я ввел один и тот же код, где нужно только поменять в коде название столбца:

import pandas as pd import matplotlib.pyplot as plt

df = pd.read_csv ('data.csv')

overall_counts = df['Overall'].value_counts ().sort_index () print (overall_counts)

average_overall = df['Overall'].mean () print (f’Средний общий рейтинг: {average_overall:.2f}')

plt.figure (figsize=(10, 5)) plt.bar (overall_counts.index, overall_counts.values) plt.title ('Распределение общего рейтинга игроков (Overall)') plt.xlabel ('Общий рейтинг (Overall)') plt.ylabel ('Количество игроков') plt.axvline (average_overall, color='k', linestyle='dashed', linewidth=1) plt.text (average_overall + 0.5, max (overall_counts.values) / 2, f’Средний рейтинг: {average_overall:.2f}', color='k') plt.show ()

Финальная диаграмма

Далее я решил визуализировать финальную точечную диаграмму, где на основе анализа взаимодействия данных из каждого столбца выводились лучшие игроки Fifa 19 с их именами. Для этого я ввел такой код:

import matplotlib.pyplot as plt import seaborn as sns import pandas as pd

overall_threshold = 85 potential_threshold = 85 age_threshold_min = 20 age_threshold_max = 30

top_players = df[(df['Overall'] > overall_threshold) & (df['Potential'] > potential_threshold) & (df['Age'] >= age_threshold_min) & (df['Age'] <= age_threshold_max)]

plt.figure (figsize=(10, 6)) scatter = sns.scatterplot (x='Overall', y='Potential', size='Age', sizes=(100, 2000), hue='Age', data=top_players, palette='viridis', alpha=0.6)

for i in range (len (top_players)): plt.text (x=top_players['Overall'].iloc[i]+0.3, y=top_players['Potential'].iloc[i]+0.3, s=top_players['Name'].iloc[i], fontdict=dict (color='black', size=8), bbox=dict (facecolor='yellow', alpha=0.5))

plt.title ('Топ футболисты по Overall, Potential и Age') plt.xlabel ('Overall') plt.ylabel ('Potential') plt.legend (title='Age') plt.grid (True) plt.show ()

Стилизация

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

import matplotlib.pyplot as plt import seaborn as sns import pandas as pd from IPython.display import Image, display

plt.style.use ('seaborn-darkgrid')

def save_and_show_plot (data, kind, title, xlabel, ylabel, filename): plt.figure (figsize=(10, 6)) if kind == 'hist': plt.hist (data, bins=20, color='skyblue', edgecolor='black') elif kind == 'scatter':

    scatter = plt.scatter (data['Overall'], data['Potential'], s=data['Age']*10, c=data['Age'], cmap='viridis', edgecolor='black', alpha=0.7)

    plt.colorbar (scatter, label='Age')
    for i in range (len (data)):
        plt.text (x=data['Overall'].iloc[i]\+0.3,
                 y=data['Potential'].iloc[i]\+0.3,
                 s=data['Name'].iloc[i],
                 fontdict=dict (color='black', size=8),
                 bbox=dict (facecolor='white', alpha=0.5))

plt.title (title, fontsize=14, fontweight='bold') plt.xlabel (xlabel) plt.ylabel (ylabel) plt.savefig (filename) plt.close () display (Image (filename))

save_and_show_plot (df['Overall'], 'hist', 'Распределение Overall', 'Overall', 'Количество', 'overall_distribution.png') save_and_show_plot (df['Age'], 'hist', 'Распределение Age', 'Age', 'Количество', 'age_distribution.png') save_and_show_plot (df['Potential'], 'hist', 'Распределение Potential', 'Potential', 'Количество', 'potential_distribution.png')

top_players = df[(df['Overall'] > 85) & (df['Potential'] > 85)]

save_and_show_plot (top_players, 'scatter', 'Топ футболисты по Overall и Potential с указанием возраста', 'Overall', 'Potential', 'top_players_scatter.png')

Финальные графики

Original size 1000x600
Original size 1000x600
Original size 1000x600
Original size 1000x600

Вывод

Лучшим футболистом в Fifa 19 оказался Криштиану Роналду!

Ссылка на блокнот с кодом и датасет

Описание применения генеративной модели

Для этого проекта я использовал ИИ GPT Chatbot для помощи в создании сложных кодов для последнего графика анализа лучших игроков игры и для кода, который выполняет стилизацию всех четырех графиков. Ссылка на него ниже:

Анализ данных из Fifa 19 и их визуализация
Project created at 08.10.2024
We use cookies to improve the operation of the website and to enhance its usability. More detailed information on the use of cookies can be fo...
Show more