如何在 python 中将标称数据转换为数字?
How to convert nominal data to numeric in python?
我正在使用二进制分类数据集。我想将标称数据转换为数字。我该怎么办?
age | class
------------
1 | no
2 | yes
3 | no
4 | yes
5 | no
6 | no
7 | no
8 | yes
9 | no
10 | y
代码:
mapping = {label:idx for idx,label in enumerate(np.unique(['class']))}
df['class'] = df['class'].map(mapping)
期望的输出:{'no':0 'yes':1}
你的代码问题是这样的:
np.unique(['class'])
您正在尝试查找列表 ['class']
的唯一值,它只是一个值,您应该将其更改为:
np.unique(df['class'])
其中包含您的 class
列的所有不同值
但在此之前,您应该将嘈杂的数据 y
替换为 yes
:
df['class'] = df['class'].replace('y', 'yes')
mapping
变量现在有您想要的输出:
{'no':0 'yes':1}
完整代码:
import numpy as np
import pandas as pd
df = pd.DataFrame(['no', 'yes', 'no', 'yes', 'no', 'no', 'no', 'yes', 'no', 'y'],columns=['class'])
df['class'] = df['class'].replace('y', 'yes') # replace your noisy data
mapping = {label:idx for idx,label in enumerate(np.unique(df['class']))} # make your mapping dict
df['class'] = df['class'].map(mapping) # map your class
我正在使用二进制分类数据集。我想将标称数据转换为数字。我该怎么办?
age | class
------------
1 | no
2 | yes
3 | no
4 | yes
5 | no
6 | no
7 | no
8 | yes
9 | no
10 | y
代码:
mapping = {label:idx for idx,label in enumerate(np.unique(['class']))}
df['class'] = df['class'].map(mapping)
期望的输出:{'no':0 'yes':1}
你的代码问题是这样的:
np.unique(['class'])
您正在尝试查找列表 ['class']
的唯一值,它只是一个值,您应该将其更改为:
np.unique(df['class'])
其中包含您的 class
列的所有不同值
但在此之前,您应该将嘈杂的数据 y
替换为 yes
:
df['class'] = df['class'].replace('y', 'yes')
mapping
变量现在有您想要的输出:
{'no':0 'yes':1}
完整代码:
import numpy as np
import pandas as pd
df = pd.DataFrame(['no', 'yes', 'no', 'yes', 'no', 'no', 'no', 'yes', 'no', 'y'],columns=['class'])
df['class'] = df['class'].replace('y', 'yes') # replace your noisy data
mapping = {label:idx for idx,label in enumerate(np.unique(df['class']))} # make your mapping dict
df['class'] = df['class'].map(mapping) # map your class