Tutorial Membuat Analisis dan Visualisasi Data Rating Pemain FIFA (2019-2023) Menggunakan Python
Bahan-bahan yang Diperlukan
- Python: Pastikan Python sudah terinstal di komputer Anda. Anda bisa mengunduhnya dari python.org.
- Pustaka Python: pandas, numpy, matplotlib, dan seaborn
Untuk menginstal pustaka-pustaka tersebut, Anda bisa menggunakan pip dengan perintah berikut:
pip install pandas numpy matplotlib seaborn
- Dataset FIFA: Anda memerlukan file CSV untuk data FIFA dari tahun 2019 hingga 2023. Anda bisa mencari dan mengunduhnya dari berbagai sumber online seperti Kaggle, atau dengan menggunakan kata kunci pencarian seperti "FIFA dataset CSV 2019-2023".
Langkah-langkah Tutorial
Import Pustaka yang Diperlukan Import pustaka-pustaka yang akan digunakan dalam kode Python Anda.
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
Memuat Dataset FIFA untuk Setiap Tahun Pastikan Anda memiliki file CSV untuk setiap tahun dari 2019 hingga 2023 dengan nama yang sesuai. Baca file tersebut menggunakan
pandas.fifa_2019 = pd.read_csv('fifa_dataset/FIFA19.csv')
fifa_2020 = pd.read_csv('fifa_dataset/FIFA20.csv')
fifa_2021 = pd.read_csv('fifa_dataset/FIFA21.csv')
fifa_2022 = pd.read_csv('fifa_dataset/FIFA22.csv')
fifa_2023 = pd.read_csv('fifa_dataset/FIFA23.csv')
Membaca File CSV dengan Opsi
low_memory=FalseJika Anda mengalami masalah memori saat membaca file CSV yang besar, gunakan opsilow_memory=False.df = pd.read_csv('fifa_dataset/FIFA22.csv', low_memory=False)
Menggabungkan Semua Dataset Menjadi Satu Gabungkan semua dataset menjadi satu dataframe menggunakan
pd.concat.datasets = [fifa_2019, fifa_2020, fifa_2021, fifa_2022, fifa_2023]
fifa_all_years = pd.concat(datasets, keys=[2019, 2020, 2021, 2022, 2023], names=['Year', 'Row'])
Melihat Data yang Digabungkan Lihat beberapa baris pertama dari dataframe yang digabungkan untuk memastikan data terbaca dengan benar.
print(fifa_all_years.head())
Output :fifa_2022 = pd.read_csv('fifa_dataset/FIFA22.csv')
sofifa_id player_url \
Year Row
2019 0 20801.0 https://sofifa.com/player/20801/c-ronaldo-dos-...
1 158023.0 https://sofifa.com/player/158023/lionel-messi/...
2 190871.0 https://sofifa.com/player/190871/neymar-da-sil...
3 155862.0 https://sofifa.com/player/155862/sergio-ramos-...
4 176580.0 https://sofifa.com/player/176580/luis-suarez/1...
short_name long_name \
Year Row
2019 0 Cristiano Ronaldo Cristiano Ronaldo dos Santos Aveiro
1 L. Messi Lionel Andrés Messi Cuccittini
2 Neymar Neymar da Silva Santos Júnior
3 Sergio Ramos Sergio Ramos García
4 L. Suárez Luis Alberto Suárez Díaz
player_positions overall potential value_eur wage_eur age \
Year Row
2019 0 ST, LW 94.0 94.0 77000000.0 400000.0 33.0
1 CF, RW, ST 94.0 94.0 110500000.0 575000.0 31.0
2 LW 92.0 93.0 118500000.0 300000.0 26.0
3 CB 91.0 91.0 51000000.0 375000.0 32.0
4 ST 91.0 91.0 80000000.0 450000.0 31.0
... Real Face Position Joined Loaned From Contract Valid Until \
Year Row ...
2019 0 ... NaN NaN NaN NaN NaN
1 ... NaN NaN NaN NaN NaN
2 ... NaN NaN NaN NaN NaN
3 ... NaN NaN NaN NaN NaN
4 ... NaN NaN NaN NaN NaN
Height Weight Release Clause Kit Number Best Overall Rating
Year Row
2019 0 NaN NaN NaN NaN NaN
1 NaN NaN NaN NaN NaN
2 NaN NaN NaN NaN NaN
3 NaN NaN NaN NaN NaN
4 NaN NaN NaN NaN NaN
Menghapus Kolom yang Tidak Diperlukan Hapus kolom-kolom yang tidak diperlukan untuk analisis.
columns_to_drop = ['Unnamed: 0', 'Photo', 'Flag', 'Club Logo', 'Real Face']
fifa_all_years.drop(columns=columns_to_drop, inplace=True, errors='ignore')
Mengisi Nilai yang Hilang dengan Metode yang Sesuai Isi nilai yang hilang menggunakan metode yang sesuai, misalnya median.
fifa_all_years.fillna(fifa_all_years.median(numeric_only=True), inplace=True)
Memastikan Data Bersih Pastikan tidak ada nilai yang hilang dalam data setelah proses pembersihan.
print(fifa_all_years.isnull().sum())
Output :sofifa_id 0
player_url 17660
short_name 17660
long_name 17660
player_positions 17660
...
Height 74751
Weight 74751
Release Clause 75902
Kit Number 0
Best Overall Rating 92390
Length: 135, dtype: int64
Statistik Dasar Lihat statistik dasar dari data.
print(fifa_all_years.describe())
Visualisasi Distribusi Rating Pemain Buat visualisasi distribusi rating pemain menggunakan
seaborndanmatplotlib.plt.figure(figsize=(12, 6))
sns.histplot(fifa_all_years['Overall'], bins=30, kde=True)
plt.title('Distribusi Rating Pemain FIFA (2019-2023)')
plt.xlabel('Rating Overall')
plt.ylabel('Frekuensi')
plt.show()
Tren Rata-rata Rating Overall dari Tahun ke Tahun Visualisasikan tren rata-rata rating overall dari tahun ke tahun.
avg_overall_per_year = fifa_all_years.groupby('Year')['Overall'].mean()
plt.figure(figsize=(10, 5))
sns.lineplot(x=avg_overall_per_year.index, y=avg_overall_per_year.values)
plt.title('Tren Rata-rata Rating Overall Pemain FIFA (2019-2023)')
plt.xlabel('Tahun')
plt.ylabel('Rata-rata Rating Overall')
plt.show()
Output :sofifa_id overall potential value_eur wage_eur \
count 92411.000000 92411.000000 92411.000000 9.241100e+04 92411.000000
mean 224219.372964 65.955319 71.187337 2.304836e+06 8146.437112
std 26067.745585 6.263844 5.508802 6.084387e+06 18645.210183
min 16.000000 47.000000 47.000000 2.000000e+03 500.000000
25% 212431.000000 63.000000 68.000000 4.750000e+05 2000.000000
50% 229516.000000 66.000000 71.000000 8.250000e+05 3000.000000
75% 240448.000000 69.000000 74.000000 1.500000e+06 6000.000000
max 264640.000000 94.000000 95.000000 1.940000e+08 575000.000000
age height_cm weight_kg club_team_id league_level \
count 92411.000000 92411.000000 92411.000000 92411.000000 92411.000000
mean 25.192639 181.216251 75.097196 37812.859389 1.299953
std 4.216263 6.119932 6.356488 51335.161831 0.688557
min 16.000000 154.000000 49.000000 1.000000 1.000000
25% 22.000000 178.000000 71.000000 682.000000 1.000000
50% 25.000000 181.000000 75.000000 1905.000000 1.000000
75% 28.000000 185.000000 78.000000 110482.000000 1.000000
max 54.000000 206.000000 110.000000 115820.000000 5.000000
... goalkeeping_speed ID Age Overall \
count ... 92411.000000 92411.000000 92411.000000 92411.000000
mean ... 37.953642 254992.076993 22.215515 63.070630
std ... 3.198581 14395.732678 2.076165 3.516003
min ... 12.000000 16.000000 15.000000 43.000000
25% ... 38.000000 257041.000000 22.000000 63.000000
50% ... 38.000000 257041.000000 22.000000 63.000000
75% ... 38.000000 257041.000000 22.000000 63.000000
max ... 65.000000 271340.000000 54.000000 91.000000
Potential Special International Reputation Weak Foot \
count 92411.000000 92411.000000 92411.000000 92411.000000
mean 70.996407 1546.072892 1.020311 2.980955
std 2.854482 125.039363 0.182768 0.292689
min 42.000000 749.000000 1.000000 1.000000
25% 71.000000 1548.000000 1.000000 3.000000
50% 71.000000 1548.000000 1.000000 3.000000
75% 71.000000 1548.000000 1.000000 3.000000
max 95.000000 2312.000000 5.000000 5.000000
Skill Moves Kit Number
count 92411.00000 92411.000000
mean 2.05679 22.579412
std 0.34981 8.449508
min 1.00000 1.000000
25% 2.00000 22.000000
50% 2.00000 22.000000
75% 2.00000 22.000000
max 5.00000 99.000000
Komentar
Posting Komentar