@irina_leifijtijhiodu

Не получается подгрузить файл csv с помощью numpy, в чем ошибка?

Добрый день!
У меня на обучении была следующая задача:
Загрузите какой-либо файл с данными (таблица Excel с Вашего компьютера, сохраненная в формате csv, или таблица из Интернета).

Не получается подгрузить файл csv при помощи numpy:
table = np.loadtxt('Dlya_ucheby.csv' , delimiter = ' , ' , skiprows=1)

выходит следующая ошибка:
UnicodeDecodeError Traceback (most recent call last) in () —--> 1 table = np.loadtxt('Dlya_ucheby.csv', delimiter = ',', skiprows=1)

1 frames /usr/lib/python3.7/codecs.py in decode(self, input, final) 320 # decode input (taking the buffer into account) 321 data = self.buffer + input —> 322 (result, consumed) = self.bufferdecode(data, self.errors, final) 323 # keep undecoded input until the next call 324 self.buffer = data[consumed:]

UnicodeDecodeError: 'utf-8' codec can't decode byte 0xed in position 0: invalid continuation byte

Подскажите что именно пошло не так?

Ранее задавала этот вопрос в курсе в котором обучаюсь куратору, посоветовали двоеточие выбрать разделителем и указать кодировку, но это в другой библиотеке кажется, до изучения которой еще не дошла:
table = pd.read_csv('Dlya_ucheby.csv', encoding = 'cp1251', sep = ';')
data.head()

Подскажите как решить проблему именно с помощью numpy
  • Вопрос задан
  • 207 просмотров
Решения вопроса 1
@galaxy
Numpy тоже поддерживает параметр encoding:
table = np.loadtxt('Dlya_ucheby.csv' , delimiter = ' , ' ,encoding = 'cp1251', skiprows=1)


galaxy, пробовала
другая ошибка выходит:
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
in ()
----> 1 table = np.loadtxt('Dlya_ucheby.csv', delimiter = ',', encoding = 'cp1251', skiprows=1)

3 frames
/usr/local/lib/python3.7/dist-packages/numpy/lib/npyio.py in floatconv(x)
761 if '0x' in x:
762 return float.fromhex(x)
--> 763 return float(x)
764
765 typ = dtype.type

ValueError: could not convert string to float: '207401;2013;41327;0'


судя по всему, разделитель-то - точка с запятой должен быть
delimiter = ';',

все равно проблема сохраняется:
table = np.loadtxt('Dlya_ucheby.csv', delimiter = ' ; ', encoding = 'cp1251', skiprows=1)

---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
in ()
----> 1 table = np.loadtxt('Dlya_ucheby.csv', delimiter = ';', encoding = 'cp1251', skiprows=1)

3 frames
/usr/local/lib/python3.7/dist-packages/numpy/lib/npyio.py in floatconv(x)
761 if '0x' in x:
762 return float.fromhex(x)
--> 763 return float(x)
764
765 typ = dtype.type

ValueError: could not convert string to float: '0,58'

ну а какой тут разделитель:
'207401;2013;41327;0'

?

Новая проблема из-за десятичного разделителя - у вас запятая, ожидается точка. Настроить это в питоне я легкого способа не вижу, так что пересохраняйте CSV файл с другим десятичным разделителем (я не помню, настраивается это как-то в Excel или же он берет из системных настроек Windows, вроде второе)
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы