# Polars AB Utils

Polars плагин, представлюющий собой набор различных утилит для AB-тестов

### Разделение пользователей на группы

Таблица с пользователями


| user_id   | age |
|-----------|-----|
| 576802932 | 31  |
| 412120092 | 16  |
| 579966747 | 24  |
| 494077766 | 44  |
| 560109803 | 21  |

Получение группы пользователя в AB тесте

```python3
import polars as pl
from polars_ab_utils import get_bucket
df = pl.DataFrame(
    {
        "user_id": [
            "576802932",
            "412120092",
            "579966747",
            "494077766",
            "560109803",
        ],
        "age": [
            31,
            16,
            24,
            44,
            21,
        ]
    }
)

print(
    df.select(
        get_bucket(
            pl.col("user_id"), 
            hash_algorithm="md5", 
            num_buckets=20,
        )
    )
)
```

Вывод результата

```bash
┌─────────┐
│ user_id │
│ ---     │
│ u8      │
╞═════════╡
│ 12      │
│ 13      │
│ 1       │
│ 18      │
│ 12      │
└─────────┘
```

Аргументы функции `get_bucket`

**Обязательные**

- Название строковой колонки, по которой необходимо получить номер бакета, к которому следует отнести пользователя

**Необязательные**

- hash_algorithm - алгоритм хэширования, используемый для разделения пользователей на бакеты. Поддерживаемые алгоритмы 
[md5](https://en.wikipedia.org/wiki/MD5) и [sha256](https://en.wikipedia.org/wiki/SHA-2);
- num_buckets - количество бакетов (групп), на которые делим пользователей;
- salt - некоторая строка, которая будет добавлена к строковой колонке