Поляры читают файлы CSV, вызывая ошибкиPython

Программы на Python
Anonymous
 Поляры читают файлы CSV, вызывая ошибки

Сообщение Anonymous »

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

Код: Выделить всё

ComputeError: Could not parse `22.4` as dtype Int64 at column 59.
The current offset in the file is 433793 bytes.
Когда файл/данные еще не знакомы, я, скорее всего, не знаю, как называется столбец на 59-й позиции. Я прошу совета по более эффективному процессу, чем тот, который я делаю сейчас, для решения подобных проблем:
1. Сначала я читаю файл с параметром чтения, установленным на «infer_schema_length=0» (который считывает данные в строковом формате pl.Utf8). Другой вариант — использовать «ignore_erros = True», но, насколько я понимаю, он преобразует значения ошибок в нули, чего мне часто не нужно.
2. Поскольку я еще не знаю, какой столбец является 59-м, я выполняю цикл for, чтобы выяснить это.

Код: Выделить всё

for i in enumerate(df.columns):
print(i)
3. Как только я определил имя столбца, вызывающее ошибку, я отфильтровал фрейм данных, чтобы найти это конкретное значение и определить, в каких строках оно появляется:

Код: Выделить всё

(pl
.read_csv(file="file_name.csv", infer_schema_length=0)
.with_row_count()
.select(
[
pl.col("row_nr"),
pl.col("Error Column Name")
])
.filter(pl.col("Error Column Name") == "22.4")
)
Выход:

Код: Выделить всё

shape: (1, 2)
┌────────┬───────────────────┐
│ row_nr ┆ Error Column Name │
│ ---    ┆ ---               │
│ u32    ┆ str               │
╞════════╪═══════════════════╡
│ 842    ┆ 22.4              │
└────────┴───────────────────┘
4 - Тогда в зависимости от файла и регистра, но я бы скорректировал значение так, как оно должно быть «224», «22» или «23», либо в источнике файла, либо изменив DF и преобразовав все другие типы данных столбцов в нужные.
Вопросы:
  • Есть ли более простой способ доступа n-й столбец в Polars, чем то, что я делаю на шаге 2?
  • Есть ли более оптимальный способ преодолеть значения, вызывающие ошибки?
  • Если я читаю файл и столбцы как pl.Utf8 и корректирую значение, вызывающее ошибку, существует ли удобный способ автоматически определять лучшие типы данных для столбцов df после того, как данные были прочитаны, а не вручную просматривать столбец по столбец?


Подробнее здесь: https://stackoverflow.com/questions/751 ... ing-errors

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