我正在使用以下代码将字符串转换为数据集中的分类值。
data['weekday'] = pd.Categorical.from_array(data.weekday).labels
例如,
index weekday
0 Sunday
1 Sunday
2 Wednesday
3 Monday
4 Monday
5 Thursday
6 Tuesday
对工作日进行编码后,我的数据集显示如下:
index weekday
0 3
1 3
2 6
3 1
4 1
5 4
6 5
我有什么方法可以知道星期日已经映射到3,星期三到6等等?
答案 0 :(得分:35)
您可以使用映射创建其他字典:
from sklearn import preprocessing
le = preprocessing.LabelEncoder()
le.fit(data['name'])
le_name_mapping = dict(zip(le.classes_, le.transform(le.classes_)))
print(le_name_mapping)
{'Tom': 0, 'Nick': 1, 'Kate': 2}
答案 1 :(得分:14)
这样做的最佳方法是使用sklearn库的标签编码器。
这样的事情:
from sklearn import preprocessing
le = preprocessing.LabelEncoder()
le.fit(["paris", "paris", "tokyo", "amsterdam"])
list(le.classes_)
le.transform(["tokyo", "tokyo", "paris"])
list(le.inverse_transform([2, 2, 1]))
答案 2 :(得分:4)
一个简单的&优雅的方式做同样的事。
cat_list = ['Sun', 'Sun', 'Wed', 'Mon', 'Mon']
encoded_data, mapping_index = pd.Series(cat_list).factorize()
您已完成,请查看以下
print(encoded_data)
print(mapping_index)
print(mapping_index.get_loc("Mon"))
答案 3 :(得分:3)
有很多方法可以做到这一点。您可以考虑pd.factorize
,sklearn.preprocessing.LabelEncoder
等。但是,在这种特定情况下,您有两种最适合您的选择:
按照您自己的方法,您可以添加类别:
pd.Categorical( df.weekday, [
'Sunday', 'Monday', 'Tuesday',
'Wednesday', 'Thursday', 'Friday',
'Saturday'] ).labels
另一种选择是使用dict
df.weekday.map({
'Sunday': 0,
'Monday': 1,
# ... and so on. You get the idea ...
})
答案 4 :(得分:2)
首先,制作一个分类系列:
weekdays = pd.Series(['Sun', 'Sun', 'Wed', 'Mon', 'Mon']).astype('category')
然后,检查其类别":
weekdays.cat.categories.get_loc('Sun')
答案 5 :(得分:1)
如果数据框中有数据和分类两种类型的数据 您可以使用:此处X是我的数据框,具有分类和数字两个变量
from sklearn import preprocessing
le = preprocessing.LabelEncoder()
for i in range(0,X.shape[1]):
if X.dtypes[i]=='object':
X[X.columns[i]] = le.fit_transform(X[X.columns[i]])
或者你可以试试这个:
from sklearn.preprocessing import LabelEncoder
le = LabelEncoder()
data = data.apply(le.fit_transform)
注意:如果您对转换它们不感兴趣,这种方法很有用。
答案 6 :(得分:0)
train['cat'] = train['cat'].map(list(train['cat'].value_counts().to_frame().reset_index().reset_index().set_index('index').to_dict().values())[0])
答案 7 :(得分:0)
非常简单,它们为此具有内置功能。</ p>
user.html