FM22 Data Playground: Data Collection and Cleaning (Part 1)

Caesario Kisty
6 min readMar 15, 2022

--

Image by Pranav Dar on Medium

Heyyooo Readers!! Siapa yang pernah main Football Manager (FM)? Permainan olah taktik dan pikir untuk meramu Tim Sepak Bola kesayangan kita agar bisa meraih banyak trofi di Universe (Save-an) yang kita buat sendiri. Seru deh pokoknya, kalo mau tau lebih lanjut dan mau main silakan bisa Download via Steam atau Epic Games yaa.

Karena udah keseringan main, juga udah mencoba berbagai challange, aku kepikiran untuk memainkan yang lainnya. Betul, aku mau coba iseng “mainkan” data-data yang ada di FM Database. Dalam hal ini aku pake Football Manager 2022 dengan updatean Database dari TheNotoriousPr0 + FMTU. Hilir dari keisenganku ini akan ada beberapa studi kasus, seperti Exploratory Data Analysis, Prediksi Player’s Transfer Value, Prediksi Player’s Wage, Dashboard Performa Pemain, sampai nanti aku coba buat simulasi untuk bikin starting line-up dengan membuat pemain-pemain New-Gen, kemudian nanti akan aku mainin tim nya. Tapi ga di sini, nanti di tulisanku berikutnya yaa. Bisa jadi ga terbatas hanya itu aja sih, kalo ada ide lain nanti aku buatin juga. Atau kalo kalian punya ide, silakan bisa bisikin aku yaa.

Data Collection

First things first, tentu saja harus punya dulu nih data yang mau dimainkan. Darimana kita bisa dapatkan datanya? yaitu, langsung dari gim nya. Sebelum aku tunjukan caranya, aku mesti sampaikan dulu nih pre-condition setup yang dibuat, yang secara ga langsung akan berpengaruh ke data yang bakal diperoleh.

Pertama, seperti yang aku sampaikan sebelumnya, aku pake database update milik TheNotoriusPr0 + FMTU. Ketika pilih Start a New Game, kemudian pilih Career, aku setup database yang sebelumnya udah didownload.

Image by Author (FM22 Screenshot)

Setelah klik Advanced Setup, aku memilih liga apa aja yang dibuat Playable. Walaupun hanya memilih 6 Liga Top Eropa aja, pemain-pemain dari negara dan benua lain tetap masih ada kok, termasuk Indonesia. Cuma emang mereka ga Playable aja.

Image by Author (FM22 Screenshot)

Terakhir yang aku setup, dan ini penting banget. Pada Advanced Options aku ceklis pilihan “Disable Player Attribute Masking”. Karena tujuannya kan mau dapetin data Attributes semua pemain. Kecuali kalo tujuannya untuk dimainkan gim nya, biar lebih berasa real di-unchecked yaa.

Image by Author (FM22 Screenshot)

Setelah selesai setup-nya, langsung aja untuk Start Game, bikin Profile Pelatih, Pilih Club dan Setup Attributes pelatih. Itu semua aku skip aja, karena ga terlalu pengaruh apa-apa.

Skip to the good part, yaitu ekstrak data pemainnya di fitur Player Search. Sebelum ekstrak, aku memastikan dulu pilih “Recruitment Packages” -nya yang World, agar pencarian bisa meng-cover pemain dari seluruh negara. Selain itu, aku juga pake filter “is newgen” nya No, agar pemain yang didapatkan merupakan pemain asli semua, bot/newgen player ga ikut masuk. Terakhir pilih variable/kolom data yang dibutuhkan. Variable yang aku pilih seperti gambar di bawah, dan sebelah kanannya masih ada variable lain lagi yang isinya Attributes pemain. Biar fokus, tentang Player Attributes, kalian bisa baca di sini aja yaa, FM22 Player Attributes.

Image by Author (FM22 Screenshot)

Selanjutnya aku ekstrak data tersebut, dengan cara Ctrl+A semua pemain. Kemudian di panel kanan atas, ada logo FM, diklik aja, lalu pilih Print Screen. Nanti akan muncul kotak dialog, meminta datanya mau diekstrak dalam bentuk apa, pilihannya Print, Web File (.html), atau Text File (.rtf).

Image by Author (FM22 Screenshot)
Image by Author (FM22 Screenshot)

Baik Web File atau Text File, keduanya bisa aja, tapi di sini aku bakal bikin datanya dalam bentuk Text File. Walaupun hasilnya agak kurang bersahabat sih. Gapapa itu alasannya ada teknik Data Cleaning. Setelah udah dapet filenya, aku akan pindahkan datanya ke excel menggunakan fitur Get Data From Text. Caranya cukup pilih Text File yang sebelumnya, kemudian tentukan delimiters dengan menggunakan karakter “ | ”.

Image by Author

Seperti yang aku bilang, hasilnya kurang bersahabat. Sehingga aku perlu melakukan sedikit Data Cleaning di excel. Hanya 2 hal aja sih, menghapus kolom A dan B. Kemudian juga mengapus baris-baris yang genap. Bagaimana caranya hapus baris yang genap aja? Gampang kok, bikin aja kolom baru yang isinya operasi modulo antara reference row dengan 2. Setelah itu difilter, yang nilainya 0, baris itu yang dihapus. Berikut hasilnya, sedikit lebih baik.

Image by Author

Seriusan, itu masih hanya sedikit lebih baik, tidak banyak, karena ada tantangan lain. Di setiap cell banyak whitespace yang tidak diharapkan ada. Ga masalah, nanti itu akan kita atasi di tahap Data Cleaning berikutnya.

Image by Author

Data Cleaning

Dalam proses pengolahan data, mulai dari data cleaning sampai nanti beberapa studi kasus, aku menggunakan bahasa pemrograman Python di Google Colabs Notebook. Sebelumnya, dari mengambil data dari gim sampai dipindahkan ke excel, maka kita punya data yang sudah tersimpan di file excel. Untuk membaca data dari file .xlsx, aku pake fungsi read_excel() di Pandas.

import pandas as pd
import numpy as np
path = "datafm22.xlsx"
dataset = pd.read_excel(path)

Fungsi read_excel() akan mengubah data tabel di excel menjadi sebuah Dataframe seperti ini.

Image by Author

Informasi yang bisa kita lihat dari data, terdapat 115656 baris yang merepresentasikan jumlah pemain yang kita punya di data. Kemudian terdapat 64 kolom yang terdiri dari variable Name, Position, Transfer Value, Preferred Foot, Wage, Style, Best Role, Best Pos, Club, Based, Division, Nationality, Height, Weight, Current Ability, Potential Ability dan 47 Attributes.

Dari data tersebut, ada beberapa hal yang harus aku “bersihkan”.

  1. Menghapus whitespace yang tidak dibutuhkan di setiap cell.
  2. Kolom Height, Weight, Transfer Value dan Wage diubah dalam bentuk integer, biar gampang kalo mau agregasi. Khusus Transfer Value, yang bernilai “Not For Sale” akan aku biarkan, karena mereka akan aku jadikan studi kasus untuk prediksi Transfer Value.
  3. Setelah setiap kolom aku periksa unique valuenya, beberapa harus aku perbaiki. Variable Wage datanya ada 3 jenis, yaitu nilai Wage yang seharusnya, N/A, dan ‘-’ atau strip.
    N/A ini karena memang dari gim nya bernilai null, atau tidak teridentifikasi oleh scouting. Jadi akan aku ganti dengan “Unknown Wage”, karena mereka akan aku jadikan studi kasus untuk prediksi Wage.
    Kemudian yang strip ini setelah aku cek karena memang pemain yang ga punya Club. Sehingga data ini akan aku ganti jadi 0 aja, asumsinya mereka ga punya gaji as a football player.
  4. Selanjutnya variable Club, ada 2 jenis data, yaitu nama Club yang benar dan No Karakter. Karena di gim memang mereka ini yang ga punya club, berhubungan dengan poin 3. Sehingga, mereka akan aku ganti datanya menjadi “No Club”. Sekalian juga, pemain yang ga punya klub ini, data Division nya “-” atau strip. Jadi sekalian datanya aku akan ganti menjadi “No Division”.
  5. Terakhir, ini ga signifikan sih, tapi penting untuk kenyamanan mata. Terdapat nama variable yang membingungkan, yaitu Nat dan Nat.1. Masing-masing sebenarnya merepresentasikan Nationality pemain dan Attribute Natural Fitness. Kenapa bisa jadi seperti itu? Karena ketika memparsing data kolom, kemudian terdapat nama kolom yang sama, maka kolom sama yang selanjutnya akan ditambahkan suffix .1, .2, dst kalo lebih dari 2. Jadi untuk kenyamanan kita bersama, yang Nat, akan aku ganti menjadi Nation, sedangkan yang Nat.1, akan aku ganti menjadi NatFin.

Okee sementara Part 1 sampe sini dulu yaa. Kalian bisa istirahat dulu sejenak, ambil snack atau minuman. Karena di Part 2, step by step akan aku tunjukkin proses Data Cleaning sesuai dengan identifikasi di atas. Sampai jumpa di Part 2 yaa.

Senang belajar bersama kalian, terima kasih :)

--

--

No responses yet