1. 程式人生 > >pandas使用get_dummies進行one-hot編碼

pandas使用get_dummies進行one-hot編碼

一、對資料進行編碼分兩種情況

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一列的值變成了我們的給定值。