# Polars

[Polars](https://pola.rs/) — это библиотека для работы с DataFrame в оперативной памяти, построенная на базе движка запросов [OLAP](https://en.wikipedia.org/wiki/Online_analytical_processing). Она быстрая, удобная в использовании и [с открытым исходным кодом](https://github.com/pola-rs/polars/).

Начиная с версии `1.2.0`, Polars обеспечивает _нативную_ поддержку файловой системы Hugging Face. Это означает, что применяются все преимущества оптимизатора запросов Polars (например, pushdown предикатов и проекций), и Polars загружает только те данные, которые необходимы для выполнения запроса. Это значительно ускоряет чтение, особенно для больших наборов данных (см. [оптимизации](./datasets-polars-optimizations))

Вы можете использовать пути Hugging Face (`hf://`) для доступа к данным на Hub:

## Начало работы

Для начала просто выполните `pip install` для установки Polars в ваше окружение:

```bash
pip install polars
```

После установки Polars можно напрямую выполнять запросы к набору данных по URL Hugging Face. Для этого не требуются другие зависимости.

```python
import polars as pl

pl.read_parquet("hf://datasets/roneneldan/TinyStories/data/train-00000-of-00004-2d5a1467fff1081b.parquet")
```

> [!TIP]
> Polars предоставляет два API: ленивый API (`scan_parquet`) и немедленный API (`read_parquet`). Мы рекомендуем использовать немедленный API для интерактивных задач, а ленивый API — для производительности, поскольку он позволяет лучше оптимизировать запросы. Подробнее об этой теме можно узнать в [пользовательском руководстве Polars](https://docs.pola.rs/user-guide/concepts/lazy-api/#when-to-use-which).

Polars поддерживает globbing для загрузки нескольких файлов сразу в один DataFrame.

```python
pl.read_parquet("hf://datasets/roneneldan/TinyStories/data/train-*.parquet")
```

### URL-адреса Hugging Face

URL Hugging Face можно составить из имени пользователя `username` и имени набора данных `dataset` следующим образом:

- `hf://datasets/{username}/{dataset}/{path_to_file}`

The path may include globbing patterns such as `**/*.parquet` to query all the files matching the pattern. Additionally, for any non-supported [file formats](./datasets-polars-file-formats) you can use the auto-converted parquet files that Hugging Face provides using the `@~parquet branch`:

- `hf://datasets/{my-username}/{my-dataset}@~parquet/{path_to_file}`

