В чем проблема этого горячего кодирования? - PullRequest
0 голосов
/ 21 сентября 2018
In [4]: data = pd.read_csv('student_data.csv')

In [5]: data[:10]
Out[5]: 
   admit  gre   gpa  rank
0      0  380  3.61     3
1      1  660  3.67     3
2      1  800  4.00     1
3      1  640  3.19     4
4      0  520  2.93     4
5      1  760  3.00     2
6      1  560  2.98     1
7      0  400  3.08     2
8      1  540  3.39     3
9      0  700  3.92     2

one_hot_data = pd.get_dummies(data['rank'])

# TODO: Drop the previous rank column
data = data.drop('rank', axis=1)
data = data.join(one_hot_data)
# Print the first 10 rows of our data
data[:10]

Всегда выдает ошибку:

KeyError: 'rank'

During handling of the above exception, another exception occurred:

KeyError                                  Traceback (most recent call last)
<ipython-input-25-6a749c8f286e> in <module>()
      1 # TODO:  Make dummy variables for rank
----> 2 one_hot_data = pd.get_dummies(data['rank'])
      3 
      4 # TODO: Drop the previous rank column
      5 data = data.drop('rank', axis=1)

1 Ответ

0 голосов
/ 21 сентября 2018

Если получить:

KeyError: 'rank'

, то это означает, что столбец rank отсутствует.Очевидно, что проблема заключается в пробелах или кодировании.

print (data.columns.tolist())
['admit', 'gre', 'gpa', 'rank']

Ваше решение должно быть упрощено на DataFrame.pop - он выбирает столбец и удаляет из исходного DataFrame:

data = data.join(pd.get_dummies(data.pop('rank')))
# Print the first 10 rows of our data
print(data[:10])
   admit  gre   gpa  1  2  3  4
0      0  380  3.61  0  0  1  0
1      1  660  3.67  0  0  1  0
2      1  800  4.00  1  0  0  0
3      1  640  3.19  0  0  0  1
4      0  520  2.93  0  0  0  1
5      1  760  3.00  0  1  0  0
6      1  560  2.98  1  0  0  0
7      0  400  3.08  0  1  0  0
8      1  540  3.39  0  0  1  0
9      0  700  3.92  0  1  0  0
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...