Panda Mengkonversi Nilai Kategoris ke Nilai Int

Panda Mengkonversi Nilai Kategoris Ke Nilai Int



Kumpulan data untuk eksekusi pembelajaran mesin mencakup variabel numerik dan kategoris. Variabel kategori adalah data tipe string yang mudah dipahami manusia. Mesin, di sisi lain, tidak dapat memahami input kategoris secara langsung. Akibatnya, konten kategoris harus diubah menjadi nilai numerik yang dapat diinterpretasikan oleh mesin.

Metode untuk Mengonversi Kategoris ke Int

Teknik yang tersedia di 'panda' untuk mengonversi nilai kategorikal ke int dari DataFrame disediakan di sini:

    • Metode DataFrame.replace()
    • Metode DataFrame.apply(factorize())

Kami akan menggunakan metode ini dalam artikel ini dan menjelaskan secara rinci bagaimana menggunakan kedua metode di 'panda'.







Contoh #1: Memanfaatkan Metode Pandas Replace()

Nilai kategoris dalam DataFrame dapat dikonversi menjadi int dengan menggunakan metode “DataFrame.replace()” pandas. Kita akan belajar di sini untuk menggunakan metode ini.



Kami menggunakan alat 'Spyder' untuk menjalankan teknik ini secara optimal dengan Python. Untuk mulai menulis skrip, buka file Python baru di alat 'Spyder'. Persyaratan paling signifikan untuk menulis skrip adalah mengimpor pustaka yang sesuai. Karena kita harus menerapkan metode 'pandas', kita akan memiliki 'impor pandas as pd' untuk mengakses fitur 'pandas'. Kemudian kita mulai kode Python inti kita. Kami telah membuat DataFrame menggunakan metode “pd.DataFrame()”. DataFrame diinisialisasi oleh tiga kolom 'Nama', 'Gelar', dan 'Penghasilan'. Semua kolom DataFrame menyimpan panjang nilai yang sama.



Kolom pertama, “Nama”, memiliki delapan nilai yaitu “bush”, “albert”, “harry”, “peter”, “emma”, “newton”, “smith”, dan “elsa”. Kolom kedua, “Gelar”, juga menyimpan delapan nilai kategori, yaitu “BS”, “MS”, “MS”, “BS”, “BS”, “BS”, “MS”, dan “MS”. Kolom terakhir “Penghasilan” memiliki delapan nilai bilangan bulat “60000”, “80000”, “75000”, “45000”, “56000”, “65000”, “55000”, dan “70000”. Kami telah membuat objek DataFrame “staff” untuk menyimpan output dari pemanggilan fungsi “pd.DataFrame()”. Untuk menampilkan DataFrame awal kami, kami menggunakan metode 'print()' dengan nama DataFrame 'staff' sebagai parameternya di baris terakhir skrip.






Untuk melihat output di terminal, gunakan tombol 'Jalankan File' pada alat 'Spyder' atau tekan tombol 'Shift+Enter'. Output yang ditampilkan di terminal menunjukkan DataFrame dengan tiga kolom yang telah berhasil dibuat.


Sekarang, DataFrame kami dibangun, kami harus menerapkan teknik yang diperlukan untuk itu. Metode panda “DataFrame.replace()” akan digunakan untuk mengubah nilai kategorikal dari kolom tertentu menjadi nilai integer sehingga mesin dapat membuatnya dapat dibaca.



Kami telah memberikan nama DataFrame dengan nama kolom tertentu yang nilainya perlu kami ganti, yaitu 'staf['derajat']'. Kami ingin nilai kolom 'Derajat', yang memiliki nilai kategoris, diganti dengan nilai integer. Kemudian metode “.replace()” dipanggil. Kami telah membaginya menjadi dua set; yang pertama berisi dua nilai kategorikal '['BS', 'MS']' yang kami ekstrak dari kolom 'Gelar'. Seperti yang Anda lihat, kolom 'Gelar' menggunakan dua nilai ini berulang kali. Jika kita memiliki nilai ketiga, kita pasti telah menyebutkannya juga. Set kedua memiliki dua nilai int “[0, 1]”, yang masing-masing akan menggantikan nilai set pertama. Parameter lainnya, 'di tempat', ditetapkan sebagai 'Benar', memungkinkan penggantian nilai. Jika diatur ke 'False', itu akan menonaktifkan penggantian. Terakhir, kami telah menggunakan metode “print()” untuk menampilkan DataFrame “staf” yang diperbarui.


DataFrame yang dihasilkan memiliki nilai integer di kolom 'Degree'. Nilai 'BS' diganti dengan '0s', dan 'MS' diganti dengan '1s'.


Anda bahkan dapat memverifikasi tipe data untuk setiap kolom dengan menggunakan properti 'dataframe.dtype'. Ini akan memberi kita tipe data dari semua kolom di DataFrame yang ditentukan.


Di sini, kami mendapatkan tipe data DataFrame kami. Kita bisa melihat tipe data kolom “Degree” diubah menjadi “int64”.

Contoh # 2: Memanfaatkan metode Pandas apply()

Metode lain yang diberikan panda kepada kami adalah fungsi “DataFrame.apply()” untuk mengonversi nilai kategorikal menjadi bilangan bulat. Pada contoh sebelumnya, kita telah belajar mengubah satu kolom kategorikal menjadi bilangan bulat. Sekarang kita akan melihat bagaimana mengonversi semua kolom kategorikal di DataFrame menjadi int.

Dimulai dengan implementasi praktis, kita harus mengimpor library penting untuk metode ini, yaitu pandas. Kami telah menggunakan skrip 'import pandas as pd' untuk mengimpor pandas ke dalam file Python kami di alat 'Spyder', yang akan memungkinkan kami mengakses modul pandas menggunakan 'pd'. Kami menggunakan fungsi 'pd.DataFrame()' untuk membuat DataFrame.

DataFrame ini memiliki empat kolom “grup”, “posisi”, “skor”, dan “bantuan”. Setiap kolom menyimpan 9 nilai. Nilai kolom “grup” adalah “X”, “X”, “Y”, “X”, “Y”, “Y”, “Y”, “X”, dan “Y”. Kolom “posisi” memiliki 9 nilai yaitu “A”, “C”, “D”, “A”, “C”, “B”, “B”, “D”, dan “B”. Kolom “skor” memiliki nilai integer sebagai “4”, “8”, “7”, “10”, “9”, “5”, “7”, “3”, dan “23”. Kolom terakhir, “assists”, memiliki nilai “10”, “2”, “3”, “9”, “3”, “7”, “4”, “2”, dan “9”.

Kami telah membuat objek DataFrame 'prog' dan menetapkannya sebagai output dari pemanggilan metode 'pd.DataFrame()'. Jadi, frame DataFrame yang dihasilkan dari 'pd.DataFrame()' akan disimpan di 'prog'. Sekarang, kita dapat mengakses DataFrame dengan menggunakan objek ini. Untuk melihat DataFrame ini, kami telah menggunakan metode “print()” dengan objek DataFrame “prog” sebagai parameternya.


Ketika program Python sebelumnya dijalankan, DataFrame dengan empat kolom akan ditampilkan di terminal.


Untuk mengubah beberapa kolom kategorikal menjadi bilangan bulat, kami telah mengikuti teknik ini. Pertama-tama kita harus memilih semua kolom yang berisi tipe data objek dengan menggunakan metode pandas “DataFrame.select_dtypes().columns”. Ketika kami menggunakannya dalam skrip kami sesuai kebutuhan, itu akan menjadi 'prog.select_dtypes(['object']).columns'. Ini akan memilih semua kolom yang memiliki tipe data 'objek' di DataFrame 'prog'. Kami telah membuat variabel 'concate_col' untuk menyimpan output dari metode ini. Kita sekarang dapat mengakses kolom tipe data 'objek' hanya dengan menggunakan variabel ini 'concat_col'.

Sekarang, untuk mengonversi kolom ini menjadi bilangan bulat, kita telah menggunakan panda “DataFrame.apply()” dengan metode “pd.factorize()”. Kami telah menggunakan variabel 'concat_col' dengan nama DataFrame kemudian metode '.apply()' dipanggil. Di antara tanda kurung metode '.apply', kami telah memanggil metode 'pd.factorize()' di mana 'x' dapat berupa nilai apa pun dari DataFrame 'prog' dengan tipe data 'objek'. Jadi, seluruh baris kode ini ditulis sebagai “prog['concat_col'] = prog['concat_col'].apply(lambda x : pd.factorize(x)[0])”. Metode faktorisasi akan mengambil nilai dengan tipe data 'objek' dan mengubahnya menjadi 'int'. Hasil akhir dapat ditampilkan dengan memanggil fungsi “print()” dengan melewatkan variabel “prog” sebagai parameternya.


Dalam DataFrame yang diperbarui, kita dapat mengamati nilai kolom 'grup' dan 'posisi' pada awalnya bersifat kategoris, yaitu objek. Masih dalam DataFrame keluaran yang diperbarui, kedua kolom memiliki nilai integer. Pada kolom “grup”, “X” diganti dengan “0” dan “Y” dengan “1”. Sedangkan kolom “posisi” “A” diganti dengan “0”, “C” dengan “1”, “D” dengan “2” dan “B” dengan “3”.


Sekarang, mari kita verifikasi tipe data yang diperbarui.


Semua kolom berikut memiliki tipe data 'int64'.

Kesimpulan

Panduan kami berkisar pada mengubah nilai kategorikal menjadi nilai numerik sehingga dapat dipahami oleh mesin karena tipe data objek tidak dapat diproses olehnya. Kami telah memperkenalkan Anda pada dua pendekatan yang ditampilkan oleh pustaka 'pandas' untuk mendapatkan tipe data yang diperlukan. Selain itu, dengan penerapan praktis kode contoh yang dijalankan pada alat 'Spyder', kami membagikan hasil dari setiap contoh. Terakhir, kami menguraikan setiap langkah untuk mencapai hasil yang diinginkan.