Pandas read_csv — непечатаемый символ (столбцы не распознаны)

#python #pandas #non-printing-characters

Вопрос:

Может ли кто-нибудь сказать мне, какой непечатаемый символ у меня в коде, из-за которого python не распознает имена столбцов в моем фрейме данных? :

 import pandas as pd  data_olymp = pd.read_csv("Olympics_data.csv", sep=";")  

Вот обратная связь ошибки, когда я пытаюсь сгруппироваться по имени команды :

  --------------------------------------------------------------------------- KeyError Traceback (most recent call last) lt;ipython-input-103-ae95f10f5210gt; in lt;modulegt;  30 # print(type(réponse1))  31 # print(len(winter_games_bronze_won)) ---gt; 32 print(data_olymp.loc[" winter_games_bronze_won"] == 9)  ~anaconda3libsite-packagespandascoreindexing.py in __getitem__(self, key)  893   894 maybe_callable = com.apply_if_callable(key, self.obj) --gt; 895 return self._getitem_axis(maybe_callable, axis=axis)  896   897 def _is_scalar_access(self, key: Tuple):  ~anaconda3libsite-packagespandascoreindexing.py in _getitem_axis(self, key, axis)  1122 # fall thru to straight lookup  1123 self._validate_key(key, axis) -gt; 1124 return self._get_label(key, axis=axis)  1125   1126 def _get_slice_axis(self, slice_obj: slice, axis: int):  ~anaconda3libsite-packagespandascoreindexing.py in _get_label(self, label, axis)  1071 def _get_label(self, label, axis: int):  1072 # GH#5667 this will fail if the label is not present in the axis. -gt; 1073 return self.obj.xs(label, axis=axis)  1074   1075 def _handle_lowerdim_multi_index_axis0(self, tup: Tuple):  ~anaconda3libsite-packagespandascoregeneric.py in xs(self, key, axis, level, drop_level)  3737 raise TypeError(f"Expected label or tuple of labels, got {key}") from e  3738 else: -gt; 3739 loc = index.get_loc(key)  3740   3741 if isinstance(loc, np.ndarray):  ~anaconda3libsite-packagespandascoreindexesrange.py in get_loc(self, key, method, tolerance)  352 except ValueError as err:  353 raise KeyError(key) from err --gt; 354 raise KeyError(key)  355 return super().get_loc(key, method=method, tolerance=tolerance)  356   KeyError: ' winter_games_bronze_won'  

Файл выглядит так :

 team_name; summer_games_played; summer_games_gold_won; summer_games_silver_won; summer_games_bronze_won; summer_games_medals_won; winter_games_played; winter_games_gold_won; winter_games_silver_won; winter_games_bronze_won; winter_games_medals_won; total_games_played Canada (CAN);13;0;0;2;2;0;0;0;0;0;13 United States (USA);12;5;2;8;15;3;0;0;0;0;15 Russia (RUS);23;18;24;28;70;18;0;0;0;0;41  

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

1. На самом деле я думаю, что проблема в том, что каждый элемент даты разделен»;», но в конце каждой строки нет точки с запятой. Не поэтому ли python не распознает имена моих столбцов ?

2. В вашем коде нет непечатаемых символов. В вашем CSV-файле есть непечатаемые символы. Поскольку вы не показали нам ни трассировку ошибок, ни первые несколько строк файла, здесь никто ничего не может для вас сделать.

3. @Lost Student Если вы решили проблему, подумайте о том, чтобы принять ответ, который вам помог, и/или проголосовать за него.

Ответ №1:

Ключевые ошибки возникают при попытке доступа к ключу, которого нет в словаре. Во время работы с Пандами это примерно одно и то же. .loc пытается найти ключевое значение, которое не найдено во фрейме данных.

Глядя на ваш код и ошибку отслеживания, я предполагаю, что, поскольку вы пытаетесь посмотреть вверх winter_games_bronze_won (с пробелами в начале), вы получаете ошибку. Попробуйте удалить пробелы раньше winter_games_bronze_won и посмотрите, что произойдет.