Tutorial Membuat Analisis dan Visualisasi Data Rating Pemain FIFA (2019-2023) Menggunakan Python

 Bahan-bahan yang Diperlukan

  1. Python: Pastikan Python sudah terinstal di komputer Anda. Anda bisa mengunduhnya dari python.org.
  2. 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

  3. 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

  1. 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

  2. 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')

  3. Membaca File CSV dengan Opsi low_memory=False Jika Anda mengalami masalah memori saat membaca file CSV yang besar, gunakan opsi low_memory=False.

    df = pd.read_csv('fifa_dataset/FIFA22.csv', low_memory=False)

  4. 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'])

  5. 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  

  6. 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')

  7. 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)

  8. 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

  9. Statistik Dasar Lihat statistik dasar dari data.

    print(fifa_all_years.describe())

  10. Visualisasi Distribusi Rating Pemain Buat visualisasi distribusi rating pemain menggunakan seaborn dan matplotlib.

    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()

  11. 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