Pandas DtypeWarning «Столбцы имеют смешанные типы» для большого файла CSV (нет ошибок с одной строкой меньше)Python

Программы на Python
Ответить
Anonymous
 Pandas DtypeWarning «Столбцы имеют смешанные типы» для большого файла CSV (нет ошибок с одной строкой меньше)

Сообщение Anonymous »

Я использую Pandas (v2.2.3) для чтения/загрузки (относительно большого) файла CSV с помощью read_csv(). Полный файл содержит около 500 тыс. строк.
Функция выдает DtypeWarning о том, что «Столбцы имеют смешанные типы», и предлагает либо явно указать dtypes, либо использовать low_memory=false.
В Интернете доступно множество информации об этом предупреждении (например, здесь: DtypeWarning: Столбцы имеют смешанные типы в Pandas при загрузке csv), и я считаю, что Я понимаю, что это значит. Проблема в том, что я считаю, что предупреждение неверно...
Но, во-первых, мой код обеспечивает типы dtypes. У меня есть другие файлы CSV, в которых данные противоречивы, и то же предупреждение отключается путем предоставления типов данных. В общем, кажется, все работает так, как задумано.
Но не для этого конкретного файла.
Я пытался (в основном, используя подход «двоичный поиск» или «пополам») найти строку(и) с разными данными, но безрезультатно. Наконец у меня был (есть) файл с 34926 строками, который вызывает ошибку. Если я удалю одну строку (и похоже, не имеет значения, какую именно), предупреждение больше не будет срабатывать.
Можно ли избежать предупреждения (или, скорее, помочь Pandas лучше выполнять свою работу)? Я знаю, что могу игнорировать предупреждение (в конце концов, это «просто» предупреждение), но это немного неправильно.
Изменить
Мне удалось немного сузить это. Проблема, по-видимому, связана с тем фактом, что в рассматриваемом столбце есть только несколько строк, значение которых не пусто. Как только строка с непустым значением в этом столбце оказывается в первом блоке данных, который «сканирует» Pandas, предупреждение не выдается. Если первый блок содержит только пустые значения для этого столбца, последующая строка с непустым значением вызывает предупреждение.
Что подтверждает эту теорию, так это то, что установка low_memory в значение False действительно также приводит к исчезновению предупреждения.
Хотя я вижу, что такое поведение в некоторой степени ожидаемо (я имею в виду, когда не передаются dtypes), я не понимаю, зачем передавать dtype в read_csv также не подавляет предупреждение? В конце концов, используемый dtype четко определен... Возможно, мой файл, имеющий много пустых значений в определенном столбце, квалифицирует его как крайний случай?
Это ошибка?

Подробнее здесь: https://stackoverflow.com/questions/797 ... error-with
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»