一、对数据进行编码分两种情况
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一列的值变成了我们的给定值。