Bagaimana Anda mengonversi data non numerik menjadi data numerik dengan python?

Model Machine Learning tidak dapat bekerja pada variabel kategori dalam bentuk string, sehingga perlu diubah menjadi bentuk numerik. Kami dapat menetapkan angka untuk setiap kategori tetapi mungkin tidak efektif bila perbedaan antara kategori tidak dapat diukur. Ini dapat dilakukan dengan membuat fitur baru sesuai dengan kategori dengan nilai bool. Untuk ini kita akan menggunakan variabel dummy untuk melakukannya

Kode sumber python ini melakukan hal berikut
1. Membuat kamus dan mengubahnya menjadi kerangka data
2. Menggunakan fungsi "get_dummies" untuk penyandian
3. Menyatukan kumpulan data akhir yang disandikan ke dalam kerangka data akhir
4. Menjatuhkan kolom variabel kategorikal

Jadi ini adalah resep bagaimana kita bisa mengonversi variabel kategori menjadi variabel numerik dengan Python

Langkah 1 - Impor perpustakaan

import pandas as pd

Kami hanya mengimpor panda, ini diperlukan untuk kumpulan data

Langkah 2 - Menyiapkan Data

Kami telah membuat kamus dan menyebarkannya melalui pd. DataFrame untuk membuat bingkai data dengan kolom 'nama', 'episode', 'jenis kelamin'. data = {'name': ['Sheldon', 'Penny', 'Amy', 'Penny', 'Raj', 'Sheldon'], 'episodes': [42, 24, 31, 29, 37, 40], 'gender': ['male', 'female', 'female', 'female', 'male', 'male']} df = pd.DataFrame(data, columns = ['name','episodes', 'gender']) print(df)

Langkah 3 - Membuat Variabel Dummy dan Mencetak Kumpulan Data akhir

Dapat kita amati dengan jelas bahwa pada kolom 'gender' terdapat dua kategori male dan female, maka untuk kolom tersebut kita harus membuat dummies sesuai dengan kategori tersebut. Jadi kami telah meneruskan kolom itu ke dalam fungsi dan menyimpannya di df_gender. Akhirnya kami telah menambahkan kolom itu di luar kumpulan data asli. df_gender = pd.get_dummies(df['gender']) df_new = pd.concat([df, df_gender], axis=1) print(df_new) Jadi hasilnya adalah

Membaca subset kolom atau baris, mengulang melalui Seri atau DataFrame, menghapus semua kolom non-numerik dan meneruskan argumen

Memeriksa Kumpulan Data

Pengantar panda ini berasal dari Q&A panda Data School dengan catatan dan kode saya sendiri

Membaca subset kolom atau baris, mengulang melalui Seri atau DataFrame, menghapus semua kolom non-numerik dan meneruskan argumen

1. Membaca subset kolom atau baris

Dalam [1]

import pandas as pd

Di [2]

link = 'http://bit.ly/uforeports'
ufo = pd.read_csv(link)
_

Dalam [3]

ufo.columns

Keluar[3]

Index(['City', 'Colors Reported', 'Shape Reported', 'State', 'Time'], dtype='object')

Di [4]

# reference using String
cols = ['City', 'State']

ufo = pd.read_csv(link, usecols=cols)
_

Dalam [5]

ufo.head()

Keluar[5]

CityState0IthacaNY1WillingboroNJ2HolyokeCO3AbileneKS4New York Worlds FairNY

Di [6]

# reference using position (Integer)
cols2 = [0, 4]

ufo = pd.read_csv(link, usecols=cols2)
_

Di [7]

ufo.head()

Keluar[7]

CityTime0Ithaca6/1/1930 22. 001Willingboro6/30/1930 20. 002Holyoke2/15/1931 14. 003Abilene6/1/1931 13. 004New York Worlds Fair4/18/1933 19. 00

Di [8]

# if you only want certain number of rows
ufo = pd.read_csv(link, nrows=3)
_

Dalam [9]

ufo
_

Keluar[9]

CityColors ReportedShape ReportedStateTime0IthacaNaNTRIANGLENY6/1/1930 22. 001WillingboroNaNOTHERNJ6/30/1930 20. 002HolyokeNaNOVALCO2/15/1931 14. 00

2. Iterasi melalui Seri dan DataFrame

Di [11]

link = 'http://bit.ly/uforeports'
ufo = pd.read_csv(link)
_0

link = 'http://bit.ly/uforeports'
ufo = pd.read_csv(link)
_1

Dalam [12]

link = 'http://bit.ly/uforeports'
ufo = pd.read_csv(link)
_2

link = 'http://bit.ly/uforeports'
ufo = pd.read_csv(link)
_3

3. Letakkan kolom non-numerik di DataFrame

Di [13]

link = 'http://bit.ly/uforeports'
ufo = pd.read_csv(link)
_4

Dalam [14]

link = 'http://bit.ly/uforeports'
ufo = pd.read_csv(link)
_5

Keluar[14]

link = 'http://bit.ly/uforeports'
ufo = pd.read_csv(link)
_6

Dalam [17]

link = 'http://bit.ly/uforeports'
ufo = pd.read_csv(link)
_7

Keluar[17]

link = 'http://bit.ly/uforeports'
ufo = pd.read_csv(link)
_8

4. Melewati argumen, kapan harus menggunakan daftar atau string

Dalam [19]

link = 'http://bit.ly/uforeports'
ufo = pd.read_csv(link)
_9

Keluar[19]

countrybeer_servingsspirit_servingswine_servingstotal_litres_of_pure_alcoholcontinentcount193193. 000000193. 000000193. 000000193. 000000193unique193NaNNaNNaNNaN6topBahrainNaNNaNNaNNaNAfricafreq1NaNNaNNaNNaN53meanNaN106. 16062280. 99481949. 4507774. 717098NaNstdNaN101. 14310388. 28431279. 6975983. 773298NaNminNaN0. 0000000. 0000000. 0000000. 000000NaN25%NaN20. 0000004. 0000001. 0000001. 300000NaN50%NaN76. 00000056. 0000008. 0000004. 200000NaN75%NaN188. 000000128. 00000059. 0000007. 200000NaNmaksNaN376. 000000438. 000000370. 00000014. 400000NaN

Dalam [21]

ufo.columns
0

Keluar[21]

countrytotal_litres_of_pure_alcoholcontinentcount193193. 000000193unique193NaN6topBahrainNaNAfricafreq1NaN53meanNaN4. 717098NaNstdNaN3. 773298NaNminNaN0. 000000NaN25%NaN1. 300000NaN50%NaN4. 200000NaN75%NaN7. 200000NaNmaksNaN14. 400000NaN

Bagaimana cara mengonversi data kategorikal menjadi data numerik dalam Python panda?

Metode 1. Menggunakan metode replace() . Misalnya, Kami akan mengambil dataset gaji orang berdasarkan tingkat pendidikannya. Ini adalah jenis variabel kategori ordinal. Kami akan mengubah tingkat pendidikan mereka menjadi istilah numerik.

Bagaimana Anda mengubah tipe data dengan Python?

Dimungkinkan untuk mengonversi sebuah string menjadi bilangan bulat dengan Python menggunakan fungsi int() , sementara fungsi str() mengubah sebuah . Integer dapat diubah menjadi float menggunakan float() , dan float dapat diubah menjadi integer, meskipun hal ini dapat menyebabkan hilangnya data.

Cara menyandikan non

Untuk menyandikan data non-numerik ke numerik, Anda dapat menggunakan LabelEncoder scikit-learn . Ini akan menyandikan setiap kategori seperti COL1 a , b , c ke bilangan bulat. enc. fit() membuat nilai integer yang sesuai.

Bagaimana cara mengubah bingkai data menjadi angka?

Gunakan panda DataFrame. astype() berfungsi untuk mengonversi kolom menjadi int (bilangan bulat) , Anda dapat menerapkan ini pada kolom tertentu atau pada seluruh DataFrame. Untuk mentransmisikan tipe data ke integer bertanda 64-bit, Anda dapat menggunakan numpy. int64 , numpy.