import pandas as pd
from sklearn.preprocessing import LabelEncoder
data=pd.DataFrame({'A':[1,2,3,4],'B':[5,6,7,8],'C':[9,10,11,12]})
for i in data:
try:
data[i]=LabelEncoder().fit_transform(apply(int))#transform操作就是转为数字表示形式。
except:
data[i]=LabelEncoder().fit_transform(data[i])
print(data[i])
print(data)#0 1 2 3
from sklearn.preprocessing import OneHotEncoder#采用位状态寄存器来对个状态进行编码,每个状态都由他独立的寄存器位,并且在任意时候只有一位有效。
b=OneHotEncoder()
b.fit([[0,0,3],[1,1,0],[0,2,1],[1,0,2]])#每个列表一行;每列一个属性,每个属性个数为01位数
print(b.transform([[0,1,1]]).toarray())#每个属性中,数从小到大,1从左到右
#[[1. 0. 0. 1. 0. 0. 1. 0. 0.]]
离散编码用LableEncoder,01编码或多重属性编码用OneHotEncoder