tgoop.com/dsproglib/6594
Create:
Last Update:
Last Update:
Dataframely — это мощная библиотека для валидации данных в Polars DataFrame с поддержкой как runtime-проверок, так и статической типизации.
Пример определения схемы пользователя:
import polars as pl
import dataframely as dy
class UserSchema(dy.Schema):
user_id = dy.Int64(primary_key=True, min=1, nullable=False)
age = dy.Int64(nullable=False)
email = dy.String(nullable=False, regex=r"^[^@]+@[^@]+\.[^@]+$")
score = dy.Float64(nullable=False, min=0.0, max=100.0)
@dy.rule()
def age_in_range() -> pl.Expr:
return pl.col("age").is_between(18, 80, closed="both")
— Объявляем типы и ограничения для колонок (в том числе primary key)
— Добавляем регулярные выражения для проверки email
— Пишем кастомные правила через декоратор
@dy.rule()
(например, проверка возраста)Проверка данных и автоматическое приведение типов:
validated_data = UserSchema.validate(user_data, cast=True)
cast=True
помогает автоматически привести типы колонок к нужным (например, если числа загружены как строки).Dataframely не просто выбрасывает ошибку, а даёт подробный отчёт о невалидных строках:
good_data, failure_info = UserSchema.filter(user_data, cast=True)
print("Количество валидных строк:", len(good_data))
print("Статистика ошибок:", failure_info.counts())
print("Анализ совмещённых ошибок:", failure_info.cooccurrence_counts())
print("Не прошедшие проверку данные:", failure_info.invalid())
— Типобезопасность и проверка на этапе выполнения
— Интеграция с Polars — современным и быстрым DataFrame-фреймворком
— Гибкие правила валидации (включая regex и кастомные функции)
— Подробный разбор ошибок с возможностью работать с валидными и невалидными строками отдельно
Библиотека дата-сайентиста #буст