Cara mengonversi variabel kategorikal menjadi numerik di pandas


Anda dapat menggunakan sintaks dasar berikut untuk mengonversi variabel kategorikal menjadi variabel numerik di pandas DataFrame:

 df[' column_name '] = pd. factorize (df[' column_name '])[0]

Anda juga dapat menggunakan sintaks berikut untuk mengonversi setiap variabel kategori dalam DataFrame menjadi variabel numerik:

 #identify all categorical variables
cat_columns = df. select_dtypes ([' object ']). columns

#convert all categorical variables to numeric
df[cat_columns] = df[cat_columns]. apply ( lambda x: pd.factorize (x)[ 0 ])

Contoh berikut menunjukkan cara menggunakan sintaksis ini dalam praktiknya.

Contoh 1: Ubah Variabel Kategorikal menjadi Numerik

Misalkan kita memiliki panda DataFrame berikut:

 import pandas as pd

#createDataFrame
df = pd. DataFrame ({' team ': ['A', 'A', 'A', 'B', 'B', 'B', 'C', 'C', 'C'],
                   ' position ': ['G', 'G', 'F', 'G', 'F', 'C', 'G', 'F', 'C'],
                   ' points ': [5, 7, 7, 9, 12, 9, 9, 4, 13],
                   ' rebounds ': [11, 8, 10, 6, 6, 5, 9, 12, 10]})

#view DataFrame
df

team position points rebounds
0 A G 5 11
1 A G 7 8
2 A F 7 10
3 B G 9 6
4 B F 12 6
5 B C 9 5
6 C G 9 9
7 C F 4 12
8 C C 13 10

Kita dapat menggunakan sintaks berikut untuk mengubah kolom “tim” menjadi numerik:

 #convert 'team' column to numeric
df[' team '] = pd. factorize (df[' team '])[ 0 ]

#view updated DataFrame
df

team position points rebounds
0 0 G 5 11
1 0 G 7 8
2 0 F 7 10
3 1 G 9 6
4 1 F 12 6
5 1 C 9 5
6 2 G 9 9
7 2 F 4 12
8 2 C 13 10

Begini cara konversinya:

  • Setiap tim yang memiliki nilai ” A ” diubah menjadi 0 .
  • Setiap tim yang memiliki nilai “ B ” diubah menjadi 1 .
  • Setiap tim yang memiliki nilai “ C ” diubah menjadi 2 .

Contoh 2: Ubah Beberapa Variabel Kategorikal menjadi Nilai Numerik

Mari kita asumsikan lagi bahwa kita memiliki pandas DataFrame berikut:

 import pandas as pd

#createDataFrame
df = pd. DataFrame ({' team ': ['A', 'A', 'A', 'B', 'B', 'B', 'C', 'C', 'C'],
                   ' position ': ['G', 'G', 'F', 'G', 'F', 'C', 'G', 'F', 'C'],
                   ' points ': [5, 7, 7, 9, 12, 9, 9, 4, 13],
                   ' rebounds ': [11, 8, 10, 6, 6, 5, 9, 12, 10]})

#view DataFrame
df

        team position points rebounds
0 A G 5 11
1 A G 7 8
2 A F 7 10
3 B G 9 6
4 B F 12 6
5 B C 9 5
6 C G 9 9
7 C F 4 12
8 C C 13 10

Kita dapat menggunakan sintaks berikut untuk mengonversi setiap variabel kategori di DataFrame menjadi variabel numerik:

 #get all categorical columns
cat_columns = df. select_dtypes ([' object ']). columns

#convert all categorical columns to numeric
df[cat_columns] = df[cat_columns]. apply ( lambda x: pd.factorize (x)[ 0 ])

#view updated DataFrame
df

	team position points rebounds
0 0 0 5 11
1 0 0 7 8
2 0 1 7 10
3 1 0 9 6
4 1 1 12 6
5 1 2 9 5
6 2 0 9 9
7 2 1 4 12
8 2 2 13 10

Perhatikan bahwa dua kolom kategori (tim dan posisi) keduanya telah dikonversi menjadi angka sedangkan kolom poin dan rebound tetap sama.

Catatan : Anda dapat menemukan dokumentasi lengkap fungsi pandas factorize() di sini .

Sumber daya tambahan

Tutorial berikut menjelaskan cara melakukan operasi umum lainnya di panda:

Cara mengonversi kolom Pandas DataFrame menjadi string
Cara mengonversi kolom Pandas DataFrame menjadi bilangan bulat
Cara mengonversi string menjadi float di Pandas DataFrame

Tambahkan komentar

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *