как изменить тип данных int категориальных данных на числовые данные в Python - PullRequest
0 голосов
/ 08 ноября 2019

У меня есть набор данных, содержащий столбцы: Отклонение от партийности, Демократ, Несогласие с партией по социальным вопросам, год отсчета для этого респондента. Отклонение от партийности, демократии, разногласий с партией по социальным вопросам было доступно в типе объектов, поэтому мне пришлось преобразовать их в строку, чтобы закодировать их в числовые данные.

'gss год для этого респондента' содержит год от 1970- 2000 и доступен в типе данных int, поэтому я не преобразовываю его в строку для выполнения кодирования. Ниже приведен код, который я использую:

 #importing libraires
import pandas as pd
from sklearn.preprocessing import LabelEncoder

#importing data sets
df = pd.read_excel('sec3_data.xlsx')
df.fillna(0, inplace=True)

#converting categorical data to numeric data.
df['Deviation from Partisanship'] = df['Deviation from Partisanship'].astype('str') 
le = preprocessing.LabelEncoder()
df['Deviation from Partisanship'] = le.fit_transform(df['Deviation from Partisanship'])

df['Democrat'] = df['Democrat'].astype('str') 
le = preprocessing.LabelEncoder()
df['Democrat'] = le.fit_transform(df['Democrat'])

df['Disagreement with Party on Social Issues'] = df['Disagreement with Party on Social Issues'].astype('str') 
le = preprocessing.LabelEncoder()
df['Disagreement with Party on Social Issues'] = le.fit_transform(df['Disagreement with Party on Social Issues'])

le = preprocessing.LabelEncoder()
df['gss year for this respondent'] = le.fit_transform(df['gss year for this respondent'])

pd.set_option('display.max_rows', 164)
df

Когда я запускаю этот код, он выдает мне следующую ошибку:

---------------------------------------------------------------------------
KeyError                                  Traceback (most recent call last)
~\Anaconda3\lib\site-packages\pandas\core\indexes\base.py in get_loc(self, key, method, tolerance)
   2896             try:
-> 2897                 return self._engine.get_loc(key)
   2898             except KeyError:

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

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

pandas\_libs\hashtable_class_helper.pxi in pandas._libs.hashtable.PyObjectHashTable.get_item()

pandas\_libs\hashtable_class_helper.pxi in pandas._libs.hashtable.PyObjectHashTable.get_item()

KeyError: 'gss year for this respondent'

During handling of the above exception, another exception occurred:

KeyError                                  Traceback (most recent call last)
<ipython-input-44-fbfcad1e7a05> in <module>
     13 
     14 le = preprocessing.LabelEncoder()
---> 15 df['gss year for this respondent'] = le.fit_transform(df['gss year for this respondent'])
     16 
     17 pd.set_option('display.max_rows', 164)

~\Anaconda3\lib\site-packages\pandas\core\frame.py in __getitem__(self, key)
   2978             if self.columns.nlevels > 1:
   2979                 return self._getitem_multilevel(key)
-> 2980             indexer = self.columns.get_loc(key)
   2981             if is_integer(indexer):
   2982                 indexer = [indexer]

~\Anaconda3\lib\site-packages\pandas\core\indexes\base.py in get_loc(self, key, method, tolerance)
   2897                 return self._engine.get_loc(key)
   2898             except KeyError:
-> 2899                 return self._engine.get_loc(self._maybe_cast_indexer(key))
   2900         indexer = self.get_indexer([key], method=method, tolerance=tolerance)
   2901         if indexer.ndim > 1 or indexer.size > 1:

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

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

pandas\_libs\hashtable_class_helper.pxi in pandas._libs.hashtable.PyObjectHashTable.get_item()

pandas\_libs\hashtable_class_helper.pxi in pandas._libs.hashtable.PyObjectHashTable.get_item()

KeyError: 'gss year for this respondent'

Есть идеи, почему я получаю эту ошибку?

Here is the image of the data frame!

1 Ответ

0 голосов
/ 09 ноября 2019

Повторная публикация моего собственного комментария в качестве ответа для быстрой пользы другим.

Этот тип ошибки согласуется со ссылкой на столбец DataFrame, который не существует. Вы можете быстро проверить, существует ли столбец, на который вы ссылаетесь, в вашем DataFrame или нет по '<COLUMN_NAME>' in df.columns. Он должен возвращать True, если столбец существует.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...