Как преодолеть проблему в методе get_dummies

#python #pandas

#python #pandas

Вопрос:

Я новичок в области машинного обучения. Я использовал метод get_dummies для преобразования категориальных объектов в числовые. Но я обнаружил эту ошибку!

 KeyError                                  Traceback (most recent call last)
~anaconda3libsite-packagespandascoreindexesbase.py in get_loc(self, key, method, tolerance)
2645             try:
-> 2646                 return self._engine.get_loc(key)
2647             except KeyError:

pandas_libsindex.pyx in pandas._libs.index.IndexEngine.get_loc()

pandas_libsindex.pyx in pandas._libs.index.IndexEngine.get_loc()

pandas_libsindex.pyx in pandas._libs.index.IndexEngine._get_loc_duplicates()

pandas_libsindex.pyx in pandas._libs.index.IndexEngine._maybe_get_bool_indexer()

KeyError: 'Make'

During handling of the above exception, another exception occurred:

KeyError                                  Traceback (most recent call last)
<ipython-input-49-1192137dc95f> in <module>
17 
18 #oneHot encodding in Transmssion
---> 19 dummy4= pd.get_dummies(df['Make'])
20 df= pd.concat([df, dummy4], axis=1)
21 df= df.drop('Transmission', axis=1)

~anaconda3libsite-packagespandascoreframe.py in __getitem__(self, key)
2798             if self.columns.nlevels > 1:
2799                 return self._getitem_multilevel(key)
-> 2800             indexer = self.columns.get_loc(key)
2801             if is_integer(indexer):
2802                 indexer = [indexer]

~anaconda3libsite-packagespandascoreindexesbase.py in get_loc(self, key, method, tolerance)
2646                 return self._engine.get_loc(key)
2647             except KeyError:
-> 2648                 return self._engine.get_loc(self._maybe_cast_indexer(key))
2649         indexer = self.get_indexer([key], method=method, tolerance=tolerance)
2650         if indexer.ndim > 1 or indexer.size > 1:

pandas_libsindex.pyx in pandas._libs.index.IndexEngine.get_loc()

pandas_libsindex.pyx in pandas._libs.index.IndexEngine.get_loc()

pandas_libsindex.pyx in pandas._libs.index.IndexEngine._get_loc_duplicates()

pandas_libsindex.pyx in pandas._libs.index.IndexEngine._maybe_get_bool_indexer()

KeyError: 'Make'
  

я использовал этот код

 #oneHot encodding in make
dummy1= pd.get_dummies(df['Make'])
df= pd.concat([df, dummy1], axis=1)
df= df.drop('Make', axis=1)

#oneHot encodding in Model
dummy2= pd.get_dummies(df['Model'])
df= pd.concat([df, dummy2], axis=1)
df= df.drop('Model', axis=1)

#oneHot encodding in Vehicle-Class
dummy3= pd.get_dummies(df['Vehicle-Class'])
df= pd.concat([df, dummy3], axis=1)
df= df.drop('Vehicle-Class', axis=1)

#oneHot encodding in Transmssion
dummy4= pd.get_dummies(df['Transmission'])
df= pd.concat([df, dummy4], axis=1)
df= df.drop('Transmission', axis=1)

#oneHot encodding in Fuel-Type
dummy5= pd.get_dummies(df['Fuel-Type'])
df= pd.concat([df, dummy5], axis=1)
df= df.drop('Fuel-Type', axis=1)
  

для последней кодировки ‘Fuel-type’ это было сделано правильно. но для других это не сработало.

это ссылка для моего набора данных

https://www.kaggle.com/sethirishabh/fuel-consumption

Ответ №1:

Я проверил ваш код. Это дает вам правильный вывод.

Причина вышеупомянутой ошибки в том, что вы, возможно, запустили этот код во второй раз в том же фрейме данных. Поскольку вы уже удалили столбец ‘Make’ из фрейма данных в первый раз, он говорит, что во фрейме данных нет столбца.

Перезапустите и запустите код с самого начала. 🙂 🙂