pandas中实现将object数据转换成one-hot编码

在python数据分析和机器学习过程中,需要将一些已进行分类后的原数据转换成数字的类型,这里就需要一些方法将这些类别转换成one-hot编码,以供计算机进行识别运算。

# 转换方法一:
import pandas as pd
import numpy as np
data = {'animal': ['dog', 'cat', 'bird'], 'age': [1, 2, 1],
			'owner': ['jacky', 'tom', 'terry']}
data = pd.DataFrame(data)
trans_ls = ['animal', 'owner']   # 这里手动选择了,因为age这一行不需要转换
for column in trans_ls:
	type_ls = data[column].unique()
	for i in type_ls:
		i_bool = data[column]==i
		data[i] = i_bool.astype(np.int32)
	data = data.drop(column, axis=1)
print(data)

# 转换方法二:
import pandas as pd
import numpy as np
data = {'animal': ['dog', 'cat', 'bird'], 'age': [1, 2, 1],
			'owner': ['jacky', 'tom', 'terry']}
data = pd.DataFrame(data)
data = pd.get_dummies(data, prefix=['animal', 'owner'])  
#prefix是转换后加追加在列前边的字符串,需和需转换的列长度一致
print(data)
#这个方法较为快速,且智能,对于int,float就默认不转换了
#这里也可以将需要转换的列构造成一个列表,然后使用for循环遍历,用pd.concat()连接在一起

# 转换方法三:
#这里用的是构建一个新的列表,将某一object列转换成one-hot编码
import pandas as pd
data = {'animal': ['dog', 'cat', 'bird'], 'age': [1, 2, 1],
			'owner': ['jacky', 'tom', 'terry']}
data = pd.DataFrame(data)
new_data = pd.crosstab(data['owner'], data['animal'])
print(new_data)

方法较为拙略,还需继续努力。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值