Skip to main content
 首页 » 编程设计

python之使用 DictVectorizer 转换字符串

2025年05月04日40webabcd

satisfaction_level  last_evaluation number_project  average_montly_hours    time_spend_company  Work_accident   left    promotion_last_5years   dept    salary 
0.38    0.53    2   157 3   0   1   0   TECHNICAL   low 
0.8 0.86    5   262 6   0   1   0   HR  medium 
0.11    0.88    7   272 4   0   1   0   HR  medium 
0.72    0.87    5   223 5   0   1   0   FINANCE low 
0.37    0.52    2   159 3   0   1   0   MARKETING   low 
0.41    0.5 2   153 3   0   1   0   TECHNICAL   low 
0.1 0.77    6   247 4   0   1   0   HR  low 
0.92    0.85    5   259 5   0   1   0   FINANCE low 
0.89    1   5   224 5   0   1   0   HR  low 

我使用了上面的数据,并尝试使用 DictVectorizer 转换 C。代码如下


import pandas as pd 
from sklearn.feature_extraction import DictVectorizer 
 
dv=DictVectorizer()  
hr_data=pd.read_csv(r"C:\Users\IBM_ADMIN\Desktop\data\HR_comma_sep.csv") 
dv.fit_transform(X=hr_data.dept) 

但是它抛出了错误:

'str' object has no attribute 'items'

请您参考如下方法:

使用LabelEncoder :

In [304]: df.dept 
Out[304]: 
0    TECHNICAL 
1           HR 
2           HR 
3      FINANCE 
4    MARKETING 
5    TECHNICAL 
6           HR 
7      FINANCE 
8           HR 
Name: dept, dtype: object 
 
In [305]: from sklearn.preprocessing import LabelEncoder 
 
In [306]: le = LabelEncoder() 
 
In [307]: df['dept'] = le.fit_transform(df['dept']) 
 
In [308]: df.dept 
Out[308]: 
0    3 
1    1 
2    1 
3    0 
4    2 
5    3 
6    1 
7    0 
8    1 
Name: dept, dtype: int64 
 
In [309]: le.classes_ 
Out[309]: array(['FINANCE', 'HR', 'MARKETING', 'TECHNICAL'], dtype=object)