pandas使用get_dummies进行one-hot编码

一、对数据进行编码分两种情况

1、原始数据的离散特征取值之间没有大小关系,直接进行编码即可,比如周一周二,

2、原始数据有大小关系,比如成绩分数之类的,直接进行数值映射即可

第一种情况,不进行数值映射,直接进行one-hot编码

代码如下:

import pandas as pd

df = pd.DataFrame([
			['xiaoming', 'b', 15, 'mon'],
			['xiaohong', 'a', 13, 'tue'],
			['xiaoli',   'b', 14, 'mon'],
			['xiaomeng', 'c', 12, 'fri']])

df.columns = ['name','score','age','date']

print("原始数据: ")
print(df)


print("直接对原始数据进行one-hot编码: ")
df = pd.get_dummies(df)
print(df)

结果如下:

第二种情况,考虑数据大小之间的关系,先映射,再one-hot编码

先将上面直接one-hot编码的代码注释掉,然后进行数值映射,再one-hot编码,

代码如下:

import pandas as pd

df = pd.DataFrame([
			['xiaoming', 'b', 15, 'mon'],
			['xiaohong', 'a', 13, 'tue'],
			['xiaoli',   'b', 14, 'mon'],
			['xiaomeng', 'c', 12, 'fri']])

df.columns = ['name','score','age','date']

print("原始数据: ")
print(df)

"""
print("直接对原始数据进行one-hot编码: ")
df = pd.get_dummies(df)
print(df)
"""	
score_map = {
				'a':1,
				'b':2,
				'c':3
				}
		
# 对分数(第二列)进行数值映射				
df['score'] = df['score'].map(score_map)
print("第二列数值映射后的数据: ")
df = pd.get_dummies(df)
print(df)	

结果如下:

我们可以发现score一列的值变成了我们的给定值。

猜你喜欢

转载自blog.csdn.net/bailixuance/article/details/84645246