Fungsi - Fungsi Pandas Library Python Untuk Data Scientist Yang Sering Digunakan
Menurut Forbes, data scientist menghabiskan 60% waktunya untuk membersihkan dan mengatur data. Ini menunjukkan betapa pentingnya pembersihan data dan perselisihan data dalam proyek ilmu data.
Pembersihan data terdiri dari pembersihan data yang akan kita gunakan, sehingga kita tidak memiliki data yang salah, rusak, duplikat, atau tidak lengkap. Data dunia nyata tidak sebersih kebanyakan kumpulan data yang Anda kerjakan di kursus online. Ini membuat pembersihan data penting dalam proyek dunia nyata.
Langkah penting lainnya dalam sebuah proyek adalah mengubah (alias pertengkaran) data mentah kita ke format lain, sehingga siap untuk dianalisis.
Dalam panduan ini, kita akan mempelajari cara menggunakan 14 fungsi panda untuk membersihkan dan mengubah kumpulan data yang akan digunakan untuk proyek ilmu data nanti.
Membaca dataset
Untuk mengikuti tutorial ini, Anda harus menginstal Python dan panda. Untuk menginstal panda, jalankan perintah di bawah ini di terminal.
pip isntall pandas
Sekarang kita telah menginstal panda, mari kita lihat data yang akan kita kerjakan. Ini adalah dataset sepak bola yang berisi informasi sejarah tentang Piala Dunia FIFA dari tahun 1930 hingga 2022. Anda dapat mengunduh semua dataset di GitHub atau Google Drive saya.
Untuk membaca ketiga file CSV ini, kita menggunakan metode .read_csv.
df_historical_data = pd.read_csv('fifa_worldcup_matches.csv')
df_fixture = pd.read_csv('fifa_worldcup_fixture.csv')
df_missing_data = pd.read_csv('fifa_worldcup_missing_data.csv')
df_historical_data
: pertandingan dimainkan dari tahun 1930 hingga 2018
df_missing_data
: tidak ada kecocokan untuk ditambahkan ke df_historical_data
df_fixture
: perlengkapan Piala Dunia Qatar 2022 yang akan datang
Ayo bersihkan 3 dataset ini!
Menghapus spasi awal dan akhir dengan .strip
Mari kita mulai dengan membersihkan kerangka data df_fixture
. Mari kita lihat kerangka data ini.
Ternyata, semuanya baik-baik saja, bukan?
Tidak! Ada yang salah dengan itu — ada spasi awal dan akhir di dalam string di kolom home
dan away
. Mereka tidak mudah dikenali.
Alih-alih hanya memiliki nama negara, kami memiliki sesuatu seperti ini di kolom kami: Qatar , Amerika Serikat . Ruang putih seperti itu dapat merusak analisis kita nanti, jadi kita harus menghapusnya menggunakan .strip
.
Itu saja untuk kerangka data df_fixture
. Sekarang mari kita lanjutkan dengan kerangka data lain.
Mengidentifikasi data NaN dengan .isnull dan menjatuhkannya dengan .dropna
Sekarang mari bersihkan kerangka data df_missing_data
. Masalah dengan kerangka data ini adalah ia memiliki data NaN.
Kami dapat memverifikasi ini benar dengan menggunakan .isnull
.
df_missing_data[df_missing_data['home'].isnull()]
Sekarang kita harus menghapus semua baris yang memiliki nilai NaN. Untuk melakukannya, kami menggunakan .dropna
.
df_missing_data.dropna(inplace=True)
Menggabungkan 2 kerangka data dengan .concat dan menjatuhkan duplikat dengan .drop_duplicates
Sekarang setelah df_missing_data
dibersihkan, kita dapat menambahkannya ke data historis di dalam df_historical_data
menggunakan .concat
.
df_historical_data = pd.concat([df_historical_data, df_missing_data], ignore_index=True)
Masalah dengan menggabungkan 2 kerangka data adalah kami mungkin memiliki data yang sama di dalam kedua kerangka data, jadi saat kami menggabungkannya, kami bisa mendapatkan duplikat. Inilah mengapa kami menggunakan drop_duplicates untuk menghapus potensi duplikat yang bisa kami dapatkan. Selain itu, kami akan mengurutkan kerangka data berdasarkan tahun.
df_historical_data.drop_duplicates(inplace=True)
df_historical_data.sort_values('year', inplace=True)
Begini tampilan df_historical_data
sekarang.
Kumpulan data terakhir ini memiliki 901 baris, yang mewakili 901 pertandingan yang dimainkan di semua Piala Dunia.
Menemukan anomali dengan .contains dan menghapusnya dengan .drop
Sekarang saatnya membersihkan kerangka data df_historical_data. Kami akan mulai dengan menghapus anomali yang tidak ingin kami sertakan dalam kumpulan data akhir kami.
Berdasarkan tujuan proyek, kami dapat menghapus atau menyimpan catatan. Saya berencana menggunakan kumpulan data ini untuk memprediksi pemenang Piala Dunia 2022 berdasarkan gol yang dicetak oleh masing-masing tim nasional. Dengan mengingat hal itu, saya tidak ingin menyertakan pertandingan yang menghasilkan "w/o" (w/o) karena itu memberi penghargaan kepada tim, jika tim lain tidak memiliki pemain yang tersedia, atau mereka telah didiskualifikasi.
Dalam sejarah Piala Dunia ada satu pertandingan yang berakhir dengan kemenangan mudah - Swedia vs Austria. Untuk mencari walkover, kita bisa menggunakan .contains dengan string “w/o” pada kolom skor. Kita juga bisa mencari “Swedia”/“Austria” di kolom Home
/Away
.
delete_index = df_historical_data[df_historical_data['home'].str.contains('Sweden') &
df_historical_data['away'].str.contains('Austria')].index
Setelah kami menemukan anomali, kami menghapusnya dengan .drop
.
df_historical_data.drop(index=delete_index, inplace=True)
Menggunakan regex untuk menemukan ketidakkonsistenan dan menggantinya dengan .replace
Data dunia nyata tidak konsisten. Beberapa kolom mungkin mengikuti pola dalam pratinjau bingkai data tetapi jika Anda menjelajahinya baris demi baris, Anda mungkin menemukan ketidakkonsistenan yang dapat merusak proyek Anda.
Dalam kumpulan data kami, kolom skor
tampaknya mengikuti format “HomeGoals-AwayGoals” tetapi beberapa baris memiliki beberapa informasi tambahan. Untuk menemukan baris seperti itu, kita dapat menggunakan ekspresi reguler (regex)
.
Jika kita menggunakan regex [^\d–]
, kita dapat menemukan karakter yang bukan angka atau –.
df_historical_data[df_historical_data['score'].str.contains('[^\d–]')]
Sekarang untuk mengganti apa pun yang bukan digit atau —
dengan string kosong, kami menggunakan .replace
.
df_historical_data['score'] = df_historical_data['score'].str.replace('[^\d–]', '', regex=True)
Terakhir, kami memastikan kolom rumah/tandang tidak memiliki spasi putih.
df_historical_data['home'] = df_historical_data['home'].str.strip()
df_historical_data['away'] = df_historical_data['away'].str.strip()
Dengan ini, pembersihan selesai! Sekarang saatnya mengubah data kita sehingga siap digunakan dalam sebuah proyek.
Memisahkan string dalam kolom dengan .split
Biasanya, kami ingin kolom hanya memiliki data numerik dan bukan simbol seperti -.
Untuk menghilangkan tanda hubung, kami akan menggunakan .split
dan mengaktifkan parameter expand
untuk menempatkan keluaran di dua kolom baru "HomeGoals", dan "AwayGoals"
Lalu kita drop kolom skor dengan .drop
.
df_historical_data[['HomeGoals', 'AwayGoals']] = df_historical_data['score'].str.split('–', expand=True)
df_historical_data.drop('score', axis=1, inplace=True)
Mengganti nama kolom dengan .rename dan mengubah tipe data dengan .astype
Mari ganti nama kolom kita agar terlihat jauh lebih baik.
df_historical_data.rename(columns={'home': 'HomeTeam', 'away': 'AwayTeam',
'year':'Year'}, inplace=True)
Juga, mari kita lihat tipe data saat ini menggunakan .dtypes
dan verifikasi mereka memiliki tipe data yang benar.
df_historical_data.dtypes
Seperti yang bisa kita lihat, kolom HomeGoals
dan AwayGoals
memiliki tipe data objek. Untuk mengubah tipe data ini menjadi int kita harus menggunakan .astype
.
df_historical_data = df_historical_data.astype({'HomeGoals': int, 'AwayGoals':int})
Mengekspor kerangka data
Terakhir, kita dapat mengekspor kumpulan data bersih kita ke CSV menggunakan metode .to_csv
. Mari ekspor df_historical_data
dan df_fixture
.
df_historical_data.to_csv('clean_fifa_worldcup_matches.csv',index=False)
df_fixture.to_csv('clean_fifa_worldcup_fixture.csv',index=False)
Itu dia! Sekarang data kita siap untuk digunakan dalam sebuah proyek.
Saya harap artikel ini dapat bermanfaat bagi kita semua. So Happy coding guys!
Artikel Terkait Lainnya :
- Panduan Lengkap Menggunakan Pandas Di Python Untuk Data Science
- Mari Kita Kenalan Dengan Teknologi PyScript
- Cara Mendefinisikan Metode NonPublic Di Class Python
- Saatnya Mengucapkan Selamat Tinggal Pada Lybrary Python Yang Sudah Usang Ini
- Menentukan Bahasa Yang Menjanjikan Untuk Web Developers (JavaScript Atau Python)