【问题标题】:How to classify String Data into Integers?如何将字符串数据分类为整数?
【发布时间】:2019-05-08 18:07:54
【问题描述】:
我需要对我的数据集的一个特征的字符串值进行分类,以便我可以进一步将其用于其他事情,比如预测或绘图。
如何转换?
我找到了这个解决方案,但在这里我必须手动输入该功能的每个唯一值的代码。对于 2-3 个唯一值,没关系,但是我有一个具有 50 多个国家/地区唯一值的功能,我无法为每个国家/地区编写代码。
def sex_class(x):
if x == 'male':
return 1
else:
return 0
这会将特征 - 性别中的男性值更改为 1,将女性值更改为 0。
【问题讨论】:
标签:
python
pandas
dataframe
machine-learning
classification
【解决方案1】:
您可以使用 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)
这将为给定列表中的所有唯一值分配标签。您也可以将此标签编码器对象保存为 pickle 文件以供以后使用。
【解决方案2】:
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
标签不同,但一致。
【解决方案3】:
您可以改用字典。
sex_class = {'male': 1, 'female': 0}