pandas使用get_dummies進行one-hot編碼
阿新 • • 發佈:2018-11-30
一、對資料進行編碼分兩種情況
1、原始資料的離散特徵取值之間沒有大小關係,直接進行編碼即可,比如週一週二,
2、原始資料有大小關係,比如成績分數之類的,直接進行數值對映即可
第一種情況,不進行數值對映,直接進行one-hot編碼
程式碼如下:
import pandas as pd df = pd.DataFrame([ ['xiaoming', 'b', 15, 'mon'], ['xiaohong', 'a', 13, 'tue'], ['xiaoli', 'b', 14, 'mon'], ['xiaomeng', 'c', 12, 'fri']]) df.columns = ['name','score','age','date'] print("原始資料: ") print(df) print("直接對原始資料進行one-hot編碼: ") df = pd.get_dummies(df) print(df)
結果如下:
第二種情況,考慮資料大小之間的關係,先對映,再one-hot編碼
先將上面直接one-hot編碼的程式碼註釋掉,然後進行數值對映,再one-hot編碼,
程式碼如下:
import pandas as pd df = pd.DataFrame([ ['xiaoming', 'b', 15, 'mon'], ['xiaohong', 'a', 13, 'tue'], ['xiaoli', 'b', 14, 'mon'], ['xiaomeng', 'c', 12, 'fri']]) df.columns = ['name','score','age','date'] print("原始資料: ") print(df) """ print("直接對原始資料進行one-hot編碼: ") df = pd.get_dummies(df) print(df) """ score_map = { 'a':1, 'b':2, 'c':3 } # 對分數(第二列)進行數值對映 df['score'] = df['score'].map(score_map) print("第二列數值對映後的資料: ") df = pd.get_dummies(df) print(df)
結果如下:
我們可以發現score一列的值變成了我們的給定值。