Я использую 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_cvs также не подавляет предупреждение? В конце концов, используемый dtype четко определен... Возможно, мой файл, имеющий много пустых значений в определенном столбце, квалифицирует его как крайний случай?
Это ошибка?
Подробнее здесь: https://stackoverflow.com/questions/797 ... error-with
Pandas DtypeWarning «Столбцы имеют смешанные типы» для большого файла CSV (нет ошибок с одной строкой меньше) ⇐ Python
Программы на Python
1761894741
Anonymous
Я использую Pandas (v2.2.3) для чтения/загрузки (относительно большого) файла CSV с помощью read_csv(). Полный файл содержит около 500 тыс. строк.
Функция выдает DtypeWarning о том, что «Столбцы имеют смешанные типы», и предлагает либо явно указать dtypes, либо использовать low_memory=false.
В Интернете доступно множество информации об этом предупреждении (например, здесь: DtypeWarning: Столбцы имеют смешанные типы в Pandas при загрузке csv), и я считаю, что Я понимаю, что это значит. Проблема в том, что я считаю, что предупреждение неверно...
Но, во-первых, мой код обеспечивает типы dtypes. У меня есть другие файлы CSV, в которых данные противоречивы, и то же предупреждение отключается путем предоставления типов данных. В общем, кажется, все работает так, как задумано.
Но не для этого конкретного файла.
Я пытался (в основном, используя подход «двоичный поиск» или «пополам») найти строку(и) с разными данными, но безрезультатно. Наконец у меня был (есть) файл с 34926 строками, который вызывает ошибку. Если я удалю [b]одну[/b] строку (и похоже, не имеет значения, какую именно), предупреждение больше не будет срабатывать.
Можно ли избежать предупреждения (или, скорее, помочь Pandas лучше выполнять свою работу)? Я знаю, что могу игнорировать предупреждение (в конце концов, это «просто» предупреждение), но это немного неправильно.
Изменить
Мне удалось немного сузить это. Проблема, по-видимому, связана с тем фактом, что в рассматриваемом столбце есть только несколько строк, значение которых не пусто. Как только строка с непустым значением в этом столбце оказывается в первом блоке данных, который «сканирует» Pandas, предупреждение не выдается. Если первый блок содержит только пустые значения для этого столбца, последующая строка с непустым значением вызывает предупреждение.
Что подтверждает эту теорию, так это то, что установка low_memory в значение False действительно также приводит к исчезновению предупреждения.
Хотя я вижу, что такое поведение в некоторой степени ожидаемо (я имею в виду, когда не передаются dtypes), я не понимаю, зачем передавать dtype в read_cvs также не подавляет предупреждение? В конце концов, используемый dtype четко определен... Возможно, мой файл, имеющий много пустых значений в определенном столбце, квалифицирует его как крайний случай?
Это ошибка?
Подробнее здесь: [url]https://stackoverflow.com/questions/79731877/pandas-dtypewarning-columns-have-mixed-types-for-large-csv-file-no-error-with[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия