数据预处理总结2

类别变量

文本转换为数值(一列类别变量)

适用于有序变量(小学、初中、高中、大学;差、中、良、优…)

from sklearn.preprocessing import LabelEncoder

df = pd.DataFrame([[2,'aa'],[3,'ss'],[33,'aa'],[43,'dd'],[66,'dd']])

# 这个类没什么参数,可以一行代码解决战斗
df[1] = LabelEncoder().fit_transform(df[1])

# 查看有哪些类别
le = LabelEncoder()
df[1] = le.fit_transform(df[1])
le.classes_

文本转换为数值(很多列类别变量)

适用于有序变量

from sklearn.preprocessing import OrdinalEncoder

df = pd.DataFrame([[2,'aa','a'],[3,'ss','a'],[33,'aa','s'],[43,'dd','s'],[66,'dd','a']])

df[[1,2]] = OrdinalEncoder().fit_transform(df[[1,2]]) # 只用一行

OrdinalEncoder().fit(df.iloc[:,1:]).categories_ # 查看类别

独热编码

适用于名义变量,应该最常用

from sklearn.preprocessing import OneHotEncoder

df = pd.DataFrame([[11,'male','a'],[22,'male','s'],[33,'male','d'],[33,'female','a'],[22,'female','s'],[11,'female','s'],[22,'female','d']], columns=['age','gender','class'])

enc = OneHotEncoder().fit(df.iloc[:,1:]) # 只fit想要编码的类别变量列
enc.categories_ # 看具体有哪些类别
enc.get_feature_names() # 看编码后的列

res = OneHotEncoder(sparse=False).fit_transform(df.iloc[:,1:]) # 只用一行
# 或者写:OneHotEncoder().fit_transform(X).toarray()

# 把编码后的结果放进特征矩阵
# axis=1表示跨行进行合并,也就是将表左右相连,如果是axis=0,就是将表上下相连
newdata = pd.concat([df,pd.DataFrame(res)],axis=1)
newdata.drop(["gender","class"],axis=1,inplace=True)
newdata.columns = ["age","Female","Male","class_a","class_d","class_s"]
print(newdata)

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值