
Вводная часть
Для своего проекта я выбрал данные по игре 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')
Финальные графики
Вывод
Лучшим футболистом в Fifa 19 оказался Криштиану Роналду!
Ссылка на блокнот с кодом и датасет
Описание применения генеративной модели
Для этого проекта я использовал ИИ GPT Chatbot для помощи в создании сложных кодов для последнего графика анализа лучших игроков игры и для кода, который выполняет стилизацию всех четырех графиков. Ссылка на него ниже: