Sebagai Data Scientist, pekerjaan sehari-hari kita terdiri dari mengekstrak data, memahami data, membersihkan data, mentransformasikan data, serta membuat fitur-fitur baru. Mengapa saya tidak menyertakan pembuatan model machine learning? Karena membuat model akan menjadi hal terakhir yang kita lakukan, dan itu tidak selalu menjadi pekerjaan sehari-hari kita. Membersihkan data adalah pekerjaan sehari-hari.
Oleh karena itu, saya ingin memperkenalkan kepada Anda tiga trik Pandas untuk membuat pekerjaan data menjadi sedikit lebih mudah.
1. Menggunakan query untuk data selection
Data Selection (pemilihan data) adalah aktivitas paling penting yang akan Anda lakukan sebagai Data Scientist, namun merupakan salah satu hal yang paling merepotkan, terutama ketika dilakukan secara berulang. Perhatikan contoh berikut.
#Kita gunakan contoh dataset
import pandas as pd
import seaborn as sns
mpg = sns.load_dataset('mpg')
mpg.head()
Data di atas adalah contoh dataset kita, misalkan kita ingin memilih baris yang memiliki nilai mpg kurang dari 11 atau horsepower kurang dari 50 dan model_year sama dengan 73. Kita perlu menulis kode seperti di bawah.
mpg[(mpg['mpg'] < 11) | (mpg['horsepower'] <50) & (mpg['model_year'] ==73)]
Ini adalah cara biasa dari data selection, tetapi terkadang merepotkan karena pengkondisiannya panjang. Dalam hal ini, kita bisa menggunakan query method dari objek Pandas Data Frame.
Apa itu query method? Ini adalah selection method dari objek Pandas Data Frame dengan perintah yang lebih mudah dipahami manusia. Perhatikan kode dibawah:
mpg.query('mpg < 11 or horsepower < 50 and model_year == 73')
Hasilnya sama persis dengan selection method biasa, bukan? Satu-satunya perbedaan adalah dengan query kita memiliki kondisi yang lebih singkat, dan kita menulisnya dalam bentuk string di mana query metode menerima perintah berupa kata-kata berbahasa Inggris seperti pada contoh di atas.
Perbedaan sederhana lain antara selection method biasa dan query method adalah waktu eksekusi. Perhatikan contoh di bawah ini.
Selection method biasa memerlukan waktu 18ms, sedangkan query method memerlukan waktu 13ms untuk mengeksekusi kode. Dalam hal ini, query method adalah metode pemilihan yang lebih cepat.
2. Menggantikan nilai dengan replace, mask, dan where
Saat bekerja dengan data, saya yakin ada saatnya Anda perlu mengganti beberapa nilai dalam kolom dengan nilai-nilai tertentu. Hal ini bisa sangat merepotkan jika kita melakukannya secara manual. Misalnya, dalam dataset mpg, saya ingin menggantikan semua nilai integer pada kolom cylinders menjadi nilai string. Berikut adalah contoh bagaimana menggantikannya secara manual.
def change_value(x):
if x == 3:
return 'Three'
elif x == 4:
return 'Four'
elif x == 5:
return 'Five'
elif x == 6:
return 'Six'
else:
return 'Eight'
mpg['cylinders'] = mpg['cylinders'].apply(change_value)
mpg.head()
Dalam kasus sederhana, kita perlu menggunakan metode apply dari objek Pandas Data Frame, atau mungkin Anda bisa melakukannya secara manual dengan menggunakan metode for loop. Pada kedua kasus ini, akan merepotkan jika harus dilakukan setiap kali kita perlu mengganti nilai.
Kita bisa menggunakan metode replace dari objek Pandas Data Frame. Ini adalah metode yang digunakan khusus untuk membantu kita mengganti nilai-nilai tertentu pada Data Frame. Perhatikan contoh di bawah.
mpg.replace({'cylinders' : {3: 'Three', 4: 'Four', 5: 'Five', 6: 'Six', 8 : 'Eight'}}, inplace = True)
mpg.head()
Hasilnya sama, satu-satunya perbedaan adalah seberapa pendek baris yang kita gunakan untuk mengganti nilai-nilai tersebut. Pada contoh di atas, saya menggunakan objek dictionary untuk menentukan kolom mana yang ingin saya ganti nilai-nilainya, dan dictionary lain di dalam dictionary untuk memilih nilai-nilai mana yang ingin saya ganti dan nilai penggantinya. Dengan kata lain, ini dapat disimpulkan sebagai berikut {nama kolom: {nilai dalam kolom: nilai pengganti}}.
Bagaimana jika kita ingin mengganti nilai-nilai tetapi dengan kondisi tertentu. Dalam hal ini, kita bisa mencoba menggunakan mask method. Metode ini adalah metode if-then yang bekerja paling baik pada objek Series daripada objek Data Frame. Saya akan tunjukkan bagaimana mask method bekerja.
mpg['mpg'].mask(mpg['mpg'] < 20, 'Less than Twenty' )
Dengan mask method, biasanya kita memberikan dua parameter ke metode tersebut, yaitu; Kondisi dan Nilai untuk mengganti. Dalam hal ini, saya memberikan kondisi di mana nilai-nilai mpg kurang dari 20 kemudian diganti dengan ‘Less than Twenty’.
Jika Anda membutuhkan lebih dari satu kondisi, Anda perlu menyusun metodenya.
mpg['mpg'].mask(mpg['mpg'] < 20, 'Less than Twenty' ).mask(mpg['mpg'] > 40, 'More than Fourty')
Ada juga where method yang berfungsi sebagai kebalikan dari apa yang dilakukan mask method.
mpg['mpg'].where(mpg['mpg'] < 20, 'More than Twenty' )
Dari hasilnya, Anda bisa melihat bahwa nilai-nilai yang tidak memenuhi kondisi adalah yang nilai-nilainya diganti.
Dengan ini, Anda bisa mengganti nilai dengan metode mana yang lebih nyaman bagi Anda.
3. Menyembunyikan Indeks dan/atau kolom yang tidak dibutuhkan
Akan ada waktu di mana Anda ingin menyajikan Data Frame Anda, dan Anda tidak ingin kontennya mengganggu perhatian audiens (sering terjadi pada saya, terutama pada nilai indeks).
Misalnya, saya ingin menunjukkan lima baris teratas dari dataset mpg.
mpg.head()
Hasil di atas menunjukkan seluruh tabel, dengan indeks muncul di tabel. Suatu saat saya pernah menyajikan tabel seperti di atas kemudian ditanyai tentang angka di samping tabel dan butuh waktu untuk menjelaskannya kepada semua orang. Tentu ini membuang-buang waktu. Itulah mengapa kita bisa mencoba menyembunyikan indeks dengan kode berikut.
mpg.head().style.hide_index()
Kita bisa menggunakan metode style.hide_index() dari objek Pandas Data Frame.
Selain itu, mungkin ada kasus di mana Anda hanya ingin menyembunyikan beberapa kolom dan menyajikan sisa kolom lainnya. Akan merepotkan jika harus memilih setiap kolom yang ingin ditampilkan dan hanya satu kolom yang tidak perlu ditampilkan.
Dalam hal ini, kita bisa menggunakan metode style.hide_columns() dari objek Pandas Data Frame. Perhatikan contoh di bawah ini.
mpg.head().style.hide_index().hide_columns(['weight'])
Pada contoh di atas, saya ingin menyembunyikan kolom weight, itulah mengapa saya hanya melewatkan weight dalam metode tersebut. Tentu saja, Anda bisa menyembunyikan sebanyak mungkin kolom yang diinginkan. Anda hanya perlu memasukkan nama-nama kolom ke dalam list.
Kesimpulan
Pada artikel ini, saya telah menunjukkan tiga trik untuk menyederhanakan pekerjaan harian Anda dengan Pandas. Menggunakan:
Menggunakan query
Menggantikan nilai dengan replace, mask, dan where
Menyembunyikan dengan hide_index dan hide_columns
Semoga bermanfaat!
Artikel ditranslasi oleh: Ahmad Ilham Habibi
Comments