Panda Menukarkan Nilai Kategori kepada Nilai Int

Panda Menukarkan Nilai Kategori Kepada Nilai Int



Set data untuk pelaksanaan pembelajaran mesin termasuk pembolehubah berangka dan kategori. Pembolehubah kategori ialah data jenis rentetan yang mudah difahami oleh manusia. Mesin, sebaliknya, tidak dapat memahami input kategori secara langsung. Akibatnya, kandungan kategori mesti diubah menjadi nilai berangka yang boleh ditafsirkan oleh mesin.

Kaedah untuk Menukar Kategori kepada Int

Teknik yang tersedia dalam 'pandas' untuk menukar nilai kategori kepada int DataFrame disediakan di sini:

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

Kami akan menggunakan kaedah ini dalam artikel ini dan menerangkan secara terperinci cara menggunakan kedua-dua kaedah dalam 'panda'.







Contoh # 1: Menggunakan Kaedah Pandas Replace().

Nilai kategori dalam DataFrame boleh ditukar kepada int dengan menggunakan kaedah 'DataFrame.replace()' panda. Kami akan belajar di sini untuk menggunakan kaedah ini.



Kami menggunakan alat 'Spyder' untuk melaksanakan teknik ini secara optimum dalam Python. Untuk mula menulis skrip, buka fail Python baharu dalam alat 'Spyder'. Keperluan paling penting untuk menulis skrip ialah mengimport perpustakaan yang sesuai. Memandangkan kita perlu melaksanakan kaedah 'panda', kita akan mempunyai 'panda import sebagai pd' untuk mengakses ciri-ciri 'panda'. Kemudian kami memulakan kod Python teras kami. Kami telah mencipta DataFrame menggunakan kaedah 'pd.DataFrame()'. DataFrame dimulakan dengan tiga lajur 'Nama', 'Ijazah', dan 'Pendapatan'. Semua lajur DataFrame menyimpan panjang nilai yang sama.



Lajur pertama, 'Nama', mempunyai lapan nilai iaitu 'bush', 'albert', 'harry', 'peter', 'emma', 'newton', 'smith', dan 'elsa'. Lajur kedua, 'Degree', juga menyimpan lapan nilai kategori, iaitu 'BS', 'MS', 'MS', 'BS', 'BS', 'BS', 'MS', dan 'MS'. Lajur terakhir 'Pendapatan' mempunyai lapan nilai integer '60000', '80000', '75000', '45000', '56000', '65000', '55000', dan '70000'. Kami telah mencipta objek DataFrame 'kakitangan' untuk menyimpan output menggunakan fungsi 'pd.DataFrame()'. Untuk memaparkan DataFrame awal kami, kami menggunakan kaedah 'print()' dengan nama DataFrame 'staf' sebagai parameternya dalam baris akhir skrip.






Untuk melihat output pada terminal, gunakan butang 'Jalankan Fail' pada alat 'Spyder' atau tekan kekunci 'Shift+Enter'. Output yang dipaparkan pada terminal menunjukkan DataFrame dengan tiga lajur yang telah berjaya dijana.


Sekarang, DataFrame kami telah dibina, kami perlu menggunakan teknik yang diperlukan untuknya. Kaedah 'DataFrame.replace()' panda akan digunakan untuk menukar nilai kategori lajur tertentu kepada nilai integer supaya mesin boleh menjadikannya boleh dibaca.



Kami telah memberikan nama DataFrame dengan nama lajur tertentu yang nilainya perlu kami ganti, iaitu 'kakitangan['darjah']'. Kami mahu nilai lajur 'Ijazah', yang mempunyai nilai kategori, digantikan dengan nilai integer. Kemudian kaedah '.replace()' digunakan. Kami telah menyampaikannya kepada dua set; yang pertama mengandungi dua nilai kategori '['BS', 'MS']' yang kami ekstrak daripada lajur 'Ijazah'. Seperti yang anda lihat, lajur 'Ijazah' menggunakan kedua-dua nilai ini berulang kali. Jika kita mempunyai nilai ketiga, kita mesti telah menyebutnya juga. Set kedua mempunyai dua nilai int '[0, 1]', yang akan menggantikan nilai set pertama masing-masing. Parameter lain, 'inplace', ditetapkan sebagai 'True', membolehkan penggantian nilai. Jika ditetapkan kepada 'Salah', ia akan melumpuhkan penggantian. Akhir sekali, kami telah menggunakan kaedah 'print()' untuk memaparkan DataFrame 'kakitangan' yang dikemas kini.


DataFrame yang terhasil mempunyai nilai integer dalam lajur 'Ijazah'. Nilai 'BS' digantikan dengan '0s', dan 'MS' digantikan dengan '1s'.


Anda juga boleh mengesahkan jenis data untuk setiap lajur dengan menggunakan sifat 'dataframe.dtype'. Ini akan memberikan kami jenis data bagi semua lajur dalam DataFrame yang ditentukan.


Di sini, kami mendapat jenis data DataFrame kami. Kita boleh melihat jenis data lajur 'Degree' ditukar kepada 'int64'.

Contoh # 2: Menggunakan kaedah Pandas apply().

Panda kaedah lain yang diberikan kepada kami ialah fungsi 'DataFrame.apply()' untuk menukar nilai kategori kepada integer. Dalam contoh sebelumnya, kita telah belajar untuk menukar satu lajur kategori kepada integer. Sekarang kita akan melihat cara untuk menukar semua lajur kategori dalam DataFrame kepada int.

Bermula dengan pelaksanaan praktikal, kita mesti mengimport perpustakaan penting untuk kaedah ini, iaitu panda. Kami telah menggunakan skrip 'import panda sebagai pd' untuk mengimport panda ke dalam fail Python kami dalam alat 'Spyder', yang akan membolehkan kami mengakses modul panda menggunakan 'pd'. Kami menggunakan fungsi 'pd.DataFrame()' untuk membina DataFrame.

DataFrame ini mempunyai empat lajur 'kumpulan', 'kedudukan', 'skor' dan 'membantu'. Setiap lajur menyimpan 9 nilai. Nilai lajur 'kumpulan' ialah 'X', 'X', 'Y', 'X', 'Y', 'Y', 'Y', 'X' dan 'Y'. Lajur 'kedudukan' mempunyai 9 nilai iaitu 'A', 'C', 'D', 'A', 'C', 'B', 'B', 'D', dan 'B'. Lajur 'skor' mempunyai nilai integer sebagai '4', '8', '7', '10', '9', '5', '7', '3', dan '23'. Lajur terakhir, 'membantu', mempunyai nilai '10', '2', '3', '9', '3', '7', '4', '2', dan '9'.

Kami telah mencipta objek DataFrame 'prog' dan memberikannya output untuk menggunakan kaedah 'pd.DataFrame()'. Jadi, bingkai DataFrame terhasil yang dijana daripada 'pd.DataFrame()' akan disimpan dalam 'prog'. Sekarang, kita boleh mengakses DataFrame dengan menggunakan objek ini. Untuk melihat DataFrame ini, kami telah menggunakan kaedah 'print()' dengan objek DataFrame 'prog' sebagai parameternya.


Apabila program Python sebelumnya dilaksanakan, DataFrame dengan empat lajur akan dipaparkan pada terminal.


Untuk menukar berbilang lajur kategori kepada integer, kami telah mengikuti teknik ini. Mula-mula kita perlu memilih semua lajur yang mengandungi jenis data objek dengan menggunakan kaedah 'DataFrame.select_dtypes().columns' panda. Apabila kami menggunakannya dalam skrip kami seperti yang diperlukan, ia akan menjadi 'prog.select_dtypes(['objek']).columns'. Ia akan memilih semua lajur yang mempunyai 'objek' jenis data dalam DataFrame 'prog'. Kami telah mencipta pembolehubah 'concate_col' untuk menyimpan output kaedah ini. Kini kita boleh mengakses lajur jenis data 'objek' hanya dengan menggunakan pembolehubah 'concat_col' ini.

Kini, untuk menukar lajur ini kepada integer, kami telah menggunakan panda 'DataFrame.apply()' dengan kaedah 'pd.factorize()'. Kami telah menggunakan pembolehubah 'concat_col' dengan nama DataFrame kemudian kaedah '.apply()' digunakan. Di antara kurungan kaedah '.apply', kami telah memanggil kaedah 'pd.factorize()' di mana 'x' boleh menjadi sebarang nilai daripada DataFrame 'prog' dengan jenis data 'objek'. Oleh itu, keseluruhan baris kod ini ditulis sebagai 'prog['concat_col'] = prog['concat_col'].apply(lambda x : pd.factorize(x)[0])'.Kaedah pemfaktoran akan mengambil nilai dengan jenis data 'objek' dan menukarnya menjadi 'int'. Output akhir boleh dipaparkan dengan memanggil fungsi 'print()' dengan menghantar pembolehubah 'prog' sebagai parameternya.


Dalam DataFrame yang dikemas kini, kita boleh melihat nilai lajur 'kumpulan' dan 'kedudukan' pada mulanya dikategorikan, iaitu, objek. Masih dalam DataFrame keluaran yang dikemas kini, kedua-dua lajur mempunyai nilai integer. Dalam lajur 'kumpulan', 'X' digantikan dengan '0' dan 'Y' dengan '1'. Manakala lajur 'kedudukan' 'A' digantikan dengan '0', 'C' dengan '1', 'D' dengan '2' dan 'B' dengan '3'.


Sekarang, mari sahkan jenis data yang dikemas kini.


Semua lajur berikut mempunyai jenis data 'int64'.

Kesimpulan

Panduan kami berkisar tentang menukar nilai kategori kepada nilai berangka supaya ia boleh difahami oleh mesin kerana jenis data objek tidak boleh diproses oleh mereka. Kami telah memperkenalkan anda kepada dua pendekatan yang ditampilkan oleh perpustakaan 'pandas' untuk mendapatkan jenis data yang diperlukan. Selain itu, dengan pelaksanaan praktikal kod contoh yang dijalankan pada alat 'Spyder', kami berkongsi hasil setiap contoh. Terakhir, kami menghuraikan setiap langkah untuk mencapai hasil yang diinginkan.