Задать вопрос
@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
  • Вопрос задан
  • 223 просмотра
Подписаться 1 Простой 8 комментариев
Решения вопроса 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, вроде второе)
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы
Greenway Global Новосибирск
от 150 000 ₽
SPA2099 Москва
До 100 000 ₽
HR Prime Москва
от 300 000 до 3 800 000 ₽