top of page
Gambar penulisCornellius Yudha Wijaya

5 Fungsi Pandas Terbaik Untuk Manipulasi Data

Diperbarui: 2 Feb

Sebagai Data Scientist yang menggunakan Python sebagai bahasa utama, kita tahu bahwa Pandas library akan menjadi bagian tak terpisahkan dalam kehidupan sehari-hari kita. Baik Anda sedang belajar data science menggunakan Python atau telah meraih karier profesional, mengetahui setiap hal kecil yang dimiliki oleh Pandas tidak akan merugikan Anda sama sekali.


Meskipun begitu, ada beberapa fungsi yang lebih sering saya gunakan daripada fungsi yang lain untuk memanipulasi data. Perlu diperhatikan bahwa fungsi Data Frame dan Series akan digunakan sebelum memanipulasi data, jadi saya tidak akan menjelaskan fungsi-fungsi tersebut.


Berikut adalah 5 fungsi Pandas yang sering saya gunakan dalam pekerjaan sehari-hari.

Pandas Functions

Ada banyak fungsi Pandas yang bermanfaat bergantung kebutuhan pekerjaan Anda, meskipun beberapa mungkin lebih sering digunakan daripada yang lain.


Di sini, untuk menunjukkan fungsi apa yang sering saya gunakan, saya akan menggunakan dataset mpg dari modul seaborn (Visualization library, saya hanya menggunakannya untuk mendapatkan data).


import pandas as pd
import seaborn as sns
mpg = sns.load_dataset('mpg')

Sekarang, mari kita masuk ke pembahasan inti.

1. crosstab


crosstab adalah fungsi pandas untuk menghitung cross-tabulation dari dua (atau lebih) faktor. Jika Anda tidak tahu apa itu cross-tabulation, saya akan tunjukkan dengan contoh berikut.


pd.crosstab(index = mpg['origin'], columns = mpg['model_year'])

Tabel di atas adalah contoh dari cross-tabulation. Datanya masih merupakan objek Data Frame. Kita menentukan indeks dan kolom tabel dari variabel kategori dari dataset; kali ini, saya menggunakan variabel kategori ‘origin’ dan ‘model_year’. Secara default, fungsi crosstab akan menghitung frekuensi faktor dan menampilkannya pada cross-tabulation. Meskipun demikian, kita bisa mengubahnya dengan memperkenalkan faktor lain, yang seringkali adalah variabel kontinu.

pd.crosstab(index = mpg['origin'], columns = mpg['model_year'], values = mpg['mpg'], aggfunc = 'mean')

Di atas, jika kita menambahkan variabel ‘mpg’ ke dalam nilai dan mengatur parameter aggfunc sebagai ‘mean’, kita akan mendapatkan cross-tabulation dengan rata-rata ‘mpg’ yang dipisahkan berdasarkan kategori. Ini mirip dengan apa yang kita sebut fungsi pivot_table Pandas yang dapat mengasilkan hasil yang sama.


2. cut

Fungsi cut Pandas digunakan untuk membagi nilai-nilai kontinu menjadi interval diskrit. Kita menggunakan cut saat harus membagi dan mengurutkan nilai-nilai kontinu ke dalam bin. Bagi Anda yang tidak tahu apa itu binning; itu adalah proses meletakkan nilai kontinu ke dalam interval rentang tertentu. Ini dapat dijelaskan dengan menggunakan plot histogram.

mpg['mpg'].hist()

Kita memasukkan nilai-nilai kontinu ke dalam interval rentang tertentu dengan membuat bin. Setiap batang menunjukkan nilai yang masuk ke dalam interval tersebut, semakin tinggi batangnya semakin besar frekuensinya.


Rentang interval tergantung pada jumlah bin. Sebagai contoh, jika kita memiliki variabel kontinu dengan nilai minimum 10 dan nilai maksimum 45, kemudian kita ingin membuat 10 bin maka interval rentangnya adalah (maks-min)/bin. Yang berarti (45–10)/10 = 3.5. Jadi bin pertama akan diisi oleh nilai kontinu yang muncul diantara 10 hingga 13.5 dan seterusnya.


Fungsi ini juga berguna untuk mengubah variabel kontinu menjadi variabel kategorikal. Sebagai contoh, fungsi cut dapat mengonversi usia menjadi kelompok rentang usia. Perhatikan fungsi ini dengan sampel dataset.

pd.cut(x = mpg['mpg'], bins = 4, labels = [1,2,3,4])

Pada fungsi di atas, saya mengatur parameter bins menjadi 4 karena saya ingin mendapatkan 4 kategori dengan label yang diatur sebagai 1,2,3, dan 4. Output dari fungsi cut akan berupa series dengan semua nilai kontinu yang telah dipotong dan dikonversi menjadi kategori yang sesuai. Seperti inilah hasilnya jika saya memasukkannya ke dalam dataframe.


mpg['mpg_bin'] = pd.cut(x = mpg['mpg'], bins = 4, labels = [1,2,3,4])
mpg[['mpg', 'mpg_bin']]

3. qcut

Pada pandas, kita memiliki fungsi cut dan juga fungsi qcut. Seperti fungsi cut, kita akan membagi variabel kontinu, tetapi dalam fungsi qcutbin akan memiliki ukuran yang sama berdasarkan peringkat atau berdasarkan kuantil sampel. Kuantil pada dasarnya adalah teknik pembagian untuk membagi nilai kontinu secara merata. Misalnya, jika kita membagi nilai kontinu menjadi 4 bagian; akan disebut Quartile seperti yang ditunjukkan gambar di bawah ini.

Saya akan tunjukkan juga dengan contoh kode.

pd.qcut(x = mpg['mpg'], q = 4, labels = [1,2,3,4])

Contoh di atas adalah output dari fungsi qcut. Di sini saya memasukkan parameter q = 4 untuk membagi nilai kontinu menjadi Quartile dan memberi label dengan 1,2,3, dan 4. Hasilnya berbeda dibandingkan dengan fungsi cut karena perhitungannya berbeda. Masukkan juga ke dalam Data Frame agar kita bisa melihat perbedaan hasilnya.


mpg['mpg_qcut'] = pd.qcut(x = mpg['mpg'], q = 4, labels = [1,2,3,4])
mpg[['mpg', 'mpg_bin','mpg_qcut']]

4. get_dummies

Fungsi ini digunakan untuk mengonversi variabel kategorikal menjadi variabel numerik dengan One-Hot-Encoding variabel kategorikal. Bagi Anda yang tidak tahu apa itu One-Hot-Encoding, itu adalah proses membuat kolom baru dari variabel kategorikal, di mana setiap kategori menjadi kolom baru dengan nilai 0 atau 1.


Mengapa kita ingin mengonversi variabel kategorikal menjadi variabel numerik? Ini karena banyak teknik statistika atau persamaan machine learning hanya menerima nilai numerik bukan nilai kategorikal.


Mari saya tunjukkan dengan contoh kode berikut.

Variabel ‘origin’ dari kumpulan data mpg. Ini adalah variabel kategorikal dengan 3 kardinal (‘usa’, ‘europe’, dan ‘japan’). Di sini saya akan menggunakan fungsi get_dummies untuk melakukan One-Hot-Encoding pada variabel ini.


origin_dummies = pd.get_dummies(mpg['origin'])
origin_dummies

Kita telah mendapatkan tiga kolom baru dengan setiap kategori menjadi kolom baru dan nilai 0 atau 1.

5. concat

Fungsi Pandas yang paling sering saya gunakan untuk manipulasi data adalah fungsi concat. Fungsi ini seperti namanya; menggabungkan. Meskipun demikian, apa yang fungsi ini gabungkan? Fungsi ini menggabungkan objek Pandas (Series atau DataFrame). Mari saya tunjukkan contohnya. Misalnya, saya hanya ingin kolom ‘mpg’ ditampilkan dengan variabel ‘origin_dummies’ yang baru saja saya buat sebelumnya.


pd.concat(objs = [mpg['mpg'], origin_dummies], axis = 1)

Dengan menggunakan fungsi concat, saya baru saja menggabungkan dua objek Pandas (Series dan DataFrame) menjadi satu dataframe. Pada fungsi tersebut, saya menentukan parameter axis = 1 karena saya ingin menggabungkan objek Pandas sehingga kolom terlihat seperti direkatkan dari sisi ke sisi. Parameter axis ini hanya menerima 2 hal; 0 atau 1.


Bergantung pada bagaimana Anda ingin menggabungkan objek Pandas, atur menjadi 0 jika Anda ingin menggabungkan objek Pandas seperti menumpuk objek (menggabungkan objek seperti menambahkan baris baru) dengan kolom atau 1 jika Anda ingin objek berdampingan dengan indeks.


Inilah yang terjadi jika kita mengatur axis = 0.

pd.concat([mpg['mpg'], origin_dummies], axis = 0)

Sekarang kita memiliki 796 baris dan banyak objek NaN dalam data frame. Ini terjadi karena kita menggabungkan objek Pandas dengan cara menumpuk objek, tidak semua nama kolom ada di salah satu objek, jadi diisi kolom yang sebelumnya tidak ada dengan nilai NaN.


Kesimpulan


Artikel ini menunjukkan kepada Anda lima fungsi terbaik Pandas yang sering saya gunakan untuk manipulasi data. Fungsinya adalah:

  1. crosstab

  2. cut

  3. qcut

  4. get_dummies

  5. concat

Semoga bermanfaat!


Artikel ditranslasi oleh: Ahmad Ilham Habibi

16 tampilan0 komentar

Comments


bottom of page