ML之FE:对pandas的dataframe中的类别型字段进行数字编码化(类别型特征数值化)并导出映射表daiding
目录
对pandas的dataframe中的类别型字段进行数字编码化(类别型特征数值化)并导出映射表
对pandas的dataframe中的类别型字段进行数字编码化(类别型特征数值化)并导出映射表# ML之FE:对pandas的dataframe中的类别型字段进行数字编码化(类别型特征数值化)并导出映射表
from sklearn.preprocessing import LabelEncoder
from NDataScience.DataAnalysis import Dict2DfByRow
for col in df.columns:
print(col,df[col].dtype)
if df[col].dtype in ['float64', 'int', 'int64']:
df[col] = pd.to_numeric(df[col])
else:
# 全部字符串化
df[col] = df[col].apply(str)
# 编码化
LbE = LabelEncoder()
LbE.fit(df[col])
df[col] = LbE.transform(df[col])
#导出映射表:开发逻辑中需要
mapping_dict = dict(zip(LbE.classes_, range(1, len(LbE.classes_) + 1)))
mapping_dict = {encode: label for label, encode in enumerate(LbE.classes_)}
Dict2DfByRow(mapping_dict,mark=col)