Вебинары Разобраться в IT Реферальная программа
Программирование Аналитика Дизайн Маркетинг
07 Июл 2023
2 мин
4409

Решение ошибки UnicodeDecodeError при чтении CSV файла в Pandas

Ошибки UnicodeDecodeError встречаются довольно часто при работе с данными в Python, особенно при чтении файлов с помощью библиотеки Pandas. Это происходит из-за того,

Освойте Python на курсе от Skypro. Вас ждут 400 часов обучения и практики (достаточно десяти часов в неделю), подготовка проектов для портфолио, индивидуальная проверка домашних заданий и помощь опытных наставников. Получится, даже если у вас нет опыта в IT.

Ошибки UnicodeDecodeError встречаются довольно часто при работе с данными в Python, особенно при чтении файлов с помощью библиотеки Pandas. Это происходит из-за того, что файл содержит символы, которые не могут быть прочитаны с использованием выбранной кодировки.

Вот типичный пример такой ошибки:

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

Это значит, что Python пытается прочитать файл с использованием кодировки UTF-8, но встречает символ (в данном случае, байт с значением 0xda), который не является допустимым в этой кодировке.

Самый простой способ решения этой проблемы – поменять кодировку при чтении файла. Например, можно использовать кодировку ‘latin1’ или ‘ISO-8859-1’, которые являются более «мягкими» и могут прочитать больше символов, чем UTF-8.

Это можно сделать с помощью параметра encoding функции read_csv:

data = pd.read_csv(filepath, names=fields, encoding='latin1')

Если неизвестно, какая кодировка используется в файле, можно воспользоваться библиотекой chardet, которая позволяет автоматически определить кодировку:

import chardet

with open(filepath, 'rb') as f:
    result = chardet.detect(f.read())

data = pd.read_csv(filepath, names=fields, encoding=result['encoding'])

Однако стоит отметить, что использование «мягкой» кодировки может привести к тому, что некоторые символы будут прочитаны неправильно. Если точное представление каждого символа важно для дальнейшей работы, возможно, придется вручную обработать эти символы или связаться с источником данных для уточнения используемой кодировки.

Изучайте Python на онлайн-курсе от Skypro «Python-разработчик». Программа рассчитана на новичков без опыта программирования и технического образования. Курс проходит в формате записанных коротких видеолекций. Будет много проверочных заданий и мастер-классов. В конце каждой недели — живая встреча с экспертами в разработке для ответов на вопросы и разбора домашек.

Добавить комментарий