polars.read_csv_batched
-
Читать CSV-файл пакетами.
При создании
BatchedCsvReaderPolars соберёт статистику и определит фрагменты файла. После этого обработка будет выполняться только при вызовеnext_batches, который вернёт список кадровnзаданного размера пакета.Изменено в версии 0.20.31: Параметр
dtypesпереименован вschema_overrides.Изменено в версии 0.20.4: * Параметр
row_count_nameпереименован вrow_index_name. * Параметрrow_count_offsetпереименован вrow_index_offset.Устарело начиная с версии 1.37.0: Вместо этого используйте
scan_csv().collect_batches().- Параметры:
-
- source
-
Путь к файлу или файловоподобному объекту (под «файловоподобным объектом» подразумеваются объекты с методом
read(), например файловый дескриптор, полученный с помощью встроенной функцииopen, или экземплярBytesIO). Если установленfsspec, он может использоваться для открытия удалённых файлов. При чтении из файловоподобных объектов позиция потока может обновляться некорректно. - has_header
-
Указывает, является ли первая строка набора данных заголовком. Если задано значение False, имена столбцов будут сгенерированы в следующем формате:
column_x, гдеx— это порядковый номер каждого столбца в наборе данных, начиная с 1. - columns
-
Столбцы для выбора. Принимает список индексов столбцов (начиная с нуля) или список имён столбцов.
- new_columns
-
Переименовать столбцы сразу после разбора CSV-файла. Если заданный список короче ширины DataFrame, имена оставшихся столбцов не изменятся.
- separator
-
Однобайтовый символ-разделитель в файле.
- comment_prefix
-
Строка, обозначающая начало строки-комментария. Строки-комментарии пропускаются при разборе. Распространённые примеры префиксов комментариев:
#и//. - quote_char
-
Однобайтовый символ для заключения полей CSV в кавычки; по умолчанию —
". Задайте None, чтобы отключить специальную обработку кавычек и экранирование. - skip_rows
-
Начать чтение после
skip_rowsстрок. Заголовок будет разобран со смещения, соответствующего этому значению. При пропуске строк учитываются экранирование CSV и комментарии. Если нужно пропускать строки только по символу переноса строки, используйтеskip_lines. - skip_lines
-
Начать чтение после
skip_linesстрок. Заголовок будет разобран со смещения, соответствующего этому значению. При пропуске строк экранирование CSV не учитывается. Если нужно пропускать корректные строки CSV, используйтеskip_rows. - schema_overrides
-
Переопределить типы данных во время определения схемы.
- null_values
-
Значения, которые следует трактовать как null. Можно указать:
-
str: Все значения, совпадающие с этой строкой, будут считаться null. -
List[str]: Все значения, совпадающие с любой строкой из этого списка, будут считаться null. -
Dict[str, str]: Словарь, сопоставляющий имя столбца со строкой, представляющей значение null.
-
- empty_string_is_null
-
По умолчанию отсутствующее строковое значение считается null. Если для
empty_string_is_nullзадано значение False, отсутствующие строковые значения будут декодированы как пустые строки. - ignore_errors
-
Продолжать чтение строк, даже если некоторые из них приводят к ошибкам. Сначала попробуйте использовать
infer_schema_length=0, чтобы прочитать все столбцы какpl.Stringи выяснить, какие значения могут вызывать проблему. - try_parse_dates
-
Попытаться автоматически разобрать даты. Можно определить большинство форматов, подобных ISO8601, а также несколько других. Если это не удастся, тип данных столбца останется
pl.String. - n_threads
-
Количество потоков для разбора CSV. По умолчанию используется количество физических ядер процессора в вашей системе.
- infer_schema_length
-
Максимальное количество строк для сканирования при определении схемы. Если задано значение
0, все столбцы будут прочитаны какpl.String. Если задано значениеNone, могут быть просканированы все данные (это медленно). - batch_size
-
Количество строк, одновременно считываемых в буфер.
Измените это значение, чтобы повлиять на производительность.
- n_rows
-
Прекратить чтение CSV-файла после чтения
n_rows. При многопоточном разборе невозможно гарантировать верхнюю границу вn_rowsстрок. -
encoding{‘utf8’, ‘utf8-lossy’, …} -
Потеря данных означает, что недопустимые значения utf8 заменяются символами
�. При использовании кодировок, отличных отutf8илиutf8-lossy, входные данные сначала декодируются в памяти с помощью Python. По умолчанию используетсяutf8. - low_memory
-
Снизить нагрузку на память за счёт производительности.
- rechunk
-
Обеспечить непрерывное расположение всех столбцов в памяти, объединив фрагменты в один массив.
Устарело начиная с версии 1.43.2: Вызовите rechunk для возвращённого DataFrame или DataFrame.
- skip_rows_after_header
-
Пропустить указанное количество строк после разбора заголовка.
- row_index_name
-
Добавить в DataFrame столбец индекса строк с указанным именем в качестве первого столбца. Если задано значение
None(по умолчанию), столбец индекса строк не создаётся. - row_index_offset
-
Начать отсчёт индекса строк с этого смещения. Значение не может быть отрицательным. Используется, только если задан
row_index_name. - sample_size
-
Задать размер выборки. Она используется для сбора статистики, позволяющей оценить необходимые объёмы памяти.
Устарело начиная с версии 1.10.0: Ничего не делает.
- eol_char
-
Однобайтовый символ конца строки (по умолчанию:
\n). При обработке файла с переводами строк Windows (\r\n) можно оставить значение по умолчанию\n. Дополнительный символ\rбудет удалён при обработке. - raise_if_empty
-
Если источник не содержит данных, вызывается `NoDataError`. Если для этого параметра задано значение False, вместо этого
next_batches(n)вернётNone. - truncate_ragged_lines
-
Обрезать строки, длина которых превышает длину, заданную схемой.
- decimal_comma
-
Разбирать числа с плавающей запятой, используя запятую вместо точки в качестве десятичного разделителя.
- Возвращает:
-
- BatchedCsvReader
См. также
-
scan_csv -
Лениво читать данные из CSV-файла или нескольких файлов с помощью шаблонов glob.
Примеры
>>> reader = pl.read_csv_batched( ... "./pdsh/tables_scale_100/lineitem.tbl", ... separator="|", ... try_parse_dates=True, ... ) >>> batches = reader.next_batches(5) >>> for df in batches: ... print(df)
Чтение большого CSV-файла пакетами и запись отдельного CSV-файла для каждой интересующей «группы».
>>> seen_groups = set() >>> reader = pl.read_csv_batched("big_file.csv") >>> batches = reader.next_batches(100)>>> while batches: ... df_current_batches = pl.concat(batches) ... partition_dfs = df_current_batches.partition_by("group", as_dict=True) ... ... for group, df in partition_dfs.items(): ... if group in seen_groups: ... with open(f"./data/{group}.csv", "a") as fh: ... fh.write(df.write_csv(file=None, include_header=False)) ... else: ... df.write_csv(file=f"./data/{group}.csv", include_header=True) ... seen_groups.add(group) ... ... batches = reader.next_batches(100)
polars.read_csv_batched(
source: str | Path,
*,
has_header: bool = True,
columns: Sequence[int] | Sequence[str] | None = None,
new_columns: Sequence[str] | None = None,
separator: str = ',',
comment_prefix: str | None = None,
quote_char: str | None = '"',
skip_rows: int = 0,
skip_lines: int = 0,
schema_overrides: Mapping[str,
PolarsDataType] | Sequence[PolarsDataType] | None = None,
null_values: str | Sequence[str] | dict[str,
str] | None = None,
empty_string_is_null: bool = True,
ignore_errors: bool = False,
try_parse_dates: bool = False,
n_threads: int | None = None,
infer_schema_length: int | None = 100,
batch_size: int = 50000,
n_rows: int | None = None,
encoding: CsvEncoding | str = 'utf8',
low_memory: bool = False,
rechunk: bool | None = None,
skip_rows_after_header: int = 0,
row_index_name: str | None = None,
row_index_offset: int = 0,
sample_size: int = 1024,
eol_char: str = '\n',
raise_if_empty: bool = True,
truncate_ragged_lines: bool = False,
decimal_comma: bool = False,
) → BatchedCsvReader
© 2020 Ritchie Vink
© 2022 Polars contributors
Licensed under the MIT License.
https://docs.pola.rs/api/python/stable/reference/api/polars.read_csv_batched.html