Время прочтения: 4 мин.

EmptyDataError… Звучит знакомо? В этой статье рассмотрим несколько советов, дабы избежать ошибок при загрузке файлов CSV с помощью Pandas DataFrame.

Данные находятся в центре конвейера машинного обучения. Чтобы использовать полную мощность алгоритма, данные должны быть сначала правильно очищены и обработаны.

Первый шаг очистки/обработки данных — загрузка файла и последующее установление соединения по пути к файлу. Существуют файлы с различными типами разделителей:

  • разделители-табуляция;
  • разделители-запятые;
  • разделители из нескольких символов и другие.

Импорт файла в фрейм данных Pandas часто вызывает ошибки. Например, EmptyDataError говорит о том, что нет столбцов для синтаксического анализа из файла. Возникает ошибка в основном из-за того, что:

  • неверно указан путь к файлу;
  • неверно указаны типы разделителей данных;
  • неверно указан каталог файлов;
  • файловое соединение не установлено.

Специалисты по обработке данных не могут позволить себе тратить много времени на трудоемкий этап. Поэтому при загрузке файла необходимо выполнять определенные шаги, которые позволят сэкономить время и избавят от хлопот, связанных с просмотром большого количества информации, чтобы найти решение вашей конкретной проблемы. 

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

  1. Проверьте свой тип разделения в настройках.

Для Windows

  • Зайдите в Панель управления;
  • Нажмите на региональные и языковые параметры;
  • Перейдите на вкладку «Региональные параметры»;
  • Нажмите Настроить/Дополнительные настройки;
  • Введите запятую в поле «Разделитель списка» (,);
  • Дважды нажмите «ОК», чтобы подтвердить изменение.

Примечание: работает, только если «десятичный символ» также не является запятой.

Для MacOS

  • Зайдите в Системные настройки;
  • Щелкните «Язык и регион», а затем перейдите к параметру «Дополнительно»;
  • Измените «Десятичный разделитель» на один из следующих сценариев: если десятичным разделителем является точка, то разделителем CSV будет запятая, если десятичным разделителем является запятая, то разделителем CSV будет точка с запятой.

2. Воспользуйтесь предварительным просмотром данных (в блокноте Jupyter, либо в Microsoft Excel) для проверки способа разделения данных.

3. Правильно укажите все аргументы.

От правильности заполнения аргументов функции pd.read_csv напрямую зависит правильность чтения вашего CSV файла. Рассмотрим список всех аргументов:

Нас больше всего интересует следующий аргумент: sep —  определяет тип разделения между значениями данных. По умолчанию ‘,’. Наиболее распространенные типы разделителей: запятая, табуляция и двоеточие. Следовательно, они должны быть указаны, как sep = ‘,’, sep = », sep = ‘;’ соответственно. Это сообщит pandas DataFrame, как распределять данные по столбцам.

Если после корректного указания аргументов проблема не устранена, воспользуемся следующим пунктом.

4. Проверьте путь к файлу.

Местоположение файла должно быть указано правильно. Чаще всего люди не знают рабочий каталог и в конечном итоге указывают неправильный путь к файлу. В этом случае мы должны проверить рабочий каталог, чтобы убедиться, что указанный путь к файлу написан правильно. Напишите приведенный ниже код, чтобы проверить рабочий каталог.

pwd # to check directory
‘/Users/syedwaqar/Huma’

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

cd/Users/syedwaqar
/Users/syedwaqar

5. Отметьте разделитель, используемый для указания местоположения файла.

Часто ошибка возникает и при изменении рабочего каталога. Это происходит из-за того, что разделитель не написан в соответствии с правильным синтаксисом.

Прежде всего проверьте разделитель, используя команду ниже.

os.sep # to check the separator used for specifying the file location
‘/’

Затем используйте разделитель только в начале расположения каталога, а не в конце. Пожалуйста, обратите внимание, что эта спецификация синтаксиса разделителя (/) верна для MacOS и может быть неверна для Windows.

cd/Users/syedwaqar
/Users/syedwaqar

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

path = ‘healthcare-dataset-stroke-data.csv’
con = sq3.Connection(path)

Но если ваш файл находится в какой-либо другой папке, вы можете указать следующие папки после рабочего каталога, например, ваш рабочий каталог — «/Users/username», а ваш файл находится в папке с именем «files» в «документах», тогда используйте следующий код:

path = 'Documents/files/filename.csv'

6. Убедитесь, что файл находится по пути:

Теперь проверьте, присутствует ли ваш файл по описанному пути, используя приведенный ниже код. Мы получим ответ либо «True», либо «False».

path = ‘healthcare-dataset-stroke-data.csv’
con = sq3.Connection(path)

os.path.isfile(‘healthcare-dataset-stroke-data.csv’)
True
Con
<sqlite3.Connection at 0x11f288e40>

7. Распечатайте данные файла для перекрестной проверки:

Теперь мы можем проверить, правильно ли загружен наш файл данных, используя приведенный ниже код.

data.head ()

Эти советы помогут вам больше не сталкиваться с проблемами при загрузке файла CSV с помощью Pandas DataFrame.