원-핫 인코딩이란 카테고리별로 이진 특성을 만들어 해당하는 특성만 1,
나머지는 0으로 만드는 방법이다. 주로 범주형 데이터에서 많이 이용된다.
ex) 국가명, 시.도, 장르
여기서 사용할 vgsales 데이터는 비디오게임 매출 데이터이다.
pandas에서 get_dummies
함수를 통해 손쉽게 원-핫 인코딩을 할 수 있다.
one_hot_df = pd.get_dummies(vgsales["Genre"])
pd.concat
함수로 원래 DataFrame과 새로운 DataFrame(one_hot_df)를 합쳐준다.
df_concat = pd.concat([vgsales, one_hot_df], axis=1)
Genre 칼럼을 one hot encoing한 one_hot_df이 뒤에 붙었으니, Genre 칼럼을 삭제해준다.
df_concat.drop(['Genre'], axis=1, inplace=True)
df_concat.tail()
[결과]
Rank Name Platform Year Publisher NA_Sales EU_Sales JP_Sales Other_Sales Global_Sales ... Fighting Misc Platform Puzzle Racing Role-Playing Shooter Simulation Sports Strategy
16593 16596 Woody Woodpecker in Crazy Castle 5 GBA 2002.0 Kemco 0.01 0.00 0.0 0.0 0.01 ... 0 0 1 0 0 0 0 0 0 0
16594 16597 Men in Black II: Alien Escape GC 2003.0 Infogrames 0.01 0.00 0.0 0.0 0.01 ... 0 0 0 0 0 0 1 0 0 0
16595 16598 SCORE International Baja 1000: The Official Game PS2 2008.0 Activision 0.00 0.00 0.0 0.0 0.01 ... 0 0 0 0 1 0 0 0 0 0
16596 16599 Know How 2 DS 2010.0 7G//AMES 0.00 0.01 0.0 0.0 0.01 ... 0 0 0 1 0 0 0 0 0 0
16597 16600 Spirits & Spells GBA 2003.0 Wanadoo 0.01 0.00 0.0 0.0 0.01 ... 0 0 1 0 0 0 0 0 0 0
데이터의 정렬이 살짝 맞지 않는다.....