我需要对数据集要素的字符串值进行分类,以便可以将其进一步用于其他用途,例如预测或绘图。
如何转换?
我找到了这个解决方案,但是在这里,我必须为该功能的每个唯一值手动键入代码。对于2-3个唯一值,没关系,但是我有一个具有50多个国家/地区唯一值的功能,我不能为每个国家/地区编写代码。
def sex_class(x):
if x == 'male':
return 1
else:
return 0
这会将特征-性别中的男性值更改为1,将女性值更改为0。
答案 0 :(得分:2)
您可以使用scikit-learn LabelEncoder
#given a list containing all possible labels
sex_classes = ['male', 'female']
from sklearn import preprocessing
le = preprocessing.LabelEncoder()
le.fit(sex_classes)
这将为给定列表中的所有唯一值分配标签。您可以将此标签编码器对象另存为泡菜文件,以供以后使用。
答案 1 :(得分:0)
您可以改用字典。
sex_class = {'male': 1, 'female': 0}
答案 2 :(得分:0)
rank
或pd.factorize
df['ID_int'] = df['id'].rank(method='dense').astype(int)
df['ID_int2'] = pd.factorize(df['id'])[0]
id ID_int ID_int2
0 a 2 0
1 b 3 1
2 c 4 2
3 a 2 0
4 b 3 1
5 c 4 2
6 A 1 3
7 b 3 1
标签不同,但是一致。