分类数据和顺序数据要参与模型计算,通常都会转化为数值型数据。当然,某些算法是允许这些数据直接参与计算的,例如决策树、关联规则等。
真值转换
要将非数值型数据转换为数值型数据的最佳方法是:将所有分类或顺序变量的值域从一列多值的形态转换为多列只包含真值的形态,其中的真值可通过True、False或0、1的方式来表示。这种标志转换的方法有时候也称为真值转换。
代码如下:
import pandas as pd # 导入pandas库
from sklearn.preprocessing import OneHotEncoder # 导入OneHotEncoder库
# 1.自定义转换主过程
df1 = pd.DataFrame({'id': [3566841, 6541227, 3512441],
'sex': ['male', 'Female', 'Female'],
'level': ['high', 'low', 'middle']})
df1_new = df1.copy() # 复制一份新的数据框用来存储转换结果
for col_num, col_name in enumerate(df1): # 循环读出每个列的索引值和列名
col_data = df1[col_name] # 获得每列数据
col_dtype = col_data.dtype # 获得每列数据类型
if col_dtype == 'object': # 如果dtype类型是object,执行条件
df1_new = df1_new.drop(col_name, axis=1)