Не удается выполнить дискретизацию данных в python из-за имени столбца?

#python #pandas #numpy #discretization

Вопрос:

У меня есть этот набор данных со многими категориальными столбцами, и я должен выполнить дискретизацию данных.

Сначала я загружаю данные с помощью Pandas, и это дает мне следующее:

 X = pd.read_excel("/content/drive/MyDrive/APR NÃO SUP_Tarefa_Trilha 4 (2) (1).ods") X.head()  

введите описание изображения здесь

После этого я пытаюсь выполнить де дискретизацию данных, используя этот блок кода:

 coluna = ["LEG","GRANGE_REG", "SIGLA_UF", "NOME", "TIPO", "CAT_ASSOC", "NOME_MUN", "LEG"] for col in coluna:  classes = np.unique(X[col])  number = 0 # valor que será usado para representar a clases  for i in classes:  X = X.replace(i, number)  number = number   1  print('Novos dados:')  print(X[col])  

И этот код выдает эту ошибку:

 lt;ipython-input-72-c6cc213e95a5gt; in lt;modulegt;()  3 for col in coluna:  4 print(col) ----gt; 5 classes = np.unique(X[col])  6 number = 0 # valor que será usado para representar a clases  7 for i in classes:  /usr/local/lib/python3.7/dist-packages/pandas/core/frame.py in __getitem__(self, key)  2904 if self.columns.nlevels gt; 1:  2905 return self._getitem_multilevel(key) -gt; 2906 indexer = self.columns.get_loc(key)  2907 if is_integer(indexer):  2908 indexer = [indexer]  /usr/local/lib/python3.7/dist-packages/pandas/core/indexes/base.py in get_loc(self, key, method, tolerance)  2898 return self._engine.get_loc(casted_key)  2899 except KeyError as err: -gt; 2900 raise KeyError(key) from err  2901   2902 if tolerance is not None:  KeyError: 'GRANGE_REG'  

P.S.: «НОГА» col работает без проблем, ошибка появляется только тогда, когда переменная col изменяется на «CHANGE_REG».

P. P. S.: Извините за плохой английский

Комментарии:

1. Да, потому что у вас нет GRANDE_REG колонки GRANGE_REG

Ответ №1:

Это просто опечатка. Вы написали «GRAN G E_REG» вместо «GRAN D E_REG«.

Ответ №2:

Похоже, есть разница между тем, что вы считаете именем столбца, и тем, что оно есть в файле .ods (я не знаком с файлами .ods). Там может быть недостающее место или что — то в этом роде. Можете ли вы попробовать:

 print(X.columns)  

Это должно подсказать вам, каковы строки имен столбцов в кадре данных X.

Редактировать: Присмотревшись к изображению, я вижу, что в кадре данных «GRANDE_REG», но вы ищете «GRANGE_REG» (т. Е. «D» заменено на «G»).