PYTHONOMANIA
273 subscribers
195 photos
3 videos
1 file
616 links
Откройте для себя мир Python в PYTHONOMANIA!

Идеально подходит как для начинающих, так и для опытных разработчиков. Присоединяйтесь к нам, чтобы достичь совершенства в Python!

Сайт: https://pythonomania.github.io/
Download Telegram
📱CleverCSV.

CleverCSV — это пакет на Python, который призван решить некоторые проблемы CSV файлов, сохраняя при этом их преимущества.

✅Пакет автоматически определяет (с высокой точностью) формат (диалект) CSV файлов, что упрощает загрузку файла без необходимости его ручной проверки.

✅CleverCSV основан на научных данных. Были изучены тысячи реальных CSV файлов, чтобы найти надежный способ автоматического определения диалекта файла. Это может показаться простой задачей, но для компьютера CSV файл — это просто длинная строка, и каждый диалект даст вам некоторую таблицу.

✅В CleverCSV используется метод, основанный на паттернах длины строк и типах данных полученных ячеек. С этим методом достигается 97% точности в определении диалектов, что на 21% лучше для нестандартных (неупорядоченных) CSV файлов по сравнению со стандартной библиотекой Python.

💡CleverCSV — отличная замена стандартному пакету Python csv с улучшенным определением диалектов для неупорядоченных CSV файлов. Также включает удобный инструмент командной строки, который может стандартизировать неупорядоченные файлы или генерировать Python код для их импорта.

#Python #CSV #CleverCSV #DataScience #MachineLearning #DataCleaning #DataWrangling #OpenSource #DataAnalysis #DataEngineering

📱Ссылка на репозиторий:
https://github.com/alan-turing-institute/CleverCSV
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥33👍2⚡1
📱DeltaBase.

DeltaBase — это легкое и комплексное решение для управления Delta Tables как в локальных, так и в облачных средах.

✅Построенный на высокопроизводительных фреймворках polars и deltalake, DeltaBase упрощает работу с данными, предоставляя такие функции, как upsert, delete, commit и контроль версий.

✅Этот инструмент специально создан для дата-инженеров, аналитиков и разработчиков, обеспечивая консистентность данных, эффективное управление версиями и легкую интеграцию в рабочие процессы.

#DataEngineering #DeltaTables #DataVersioning #CloudData #DataManagement #DataOps #Polars #DeltaLake #DataConsistency

📱Ссылка на репозиторий:
https://github.com/uname-n/deltabase
Please open Telegram to view this post
VIEW IN TELEGRAM
2👍3🔥2
📱PyFunctional.

PyFunctional
— мощная Python-библиотека для работы с потоками данных в функциональном стиле!

🔹Возможности:

🔘Цепочки операций: seq(1, 2, 3).map(...).filter(...).reduce(...).

🔘Поддержка чтения/записи файлов: text, csv, json, jsonl, sqlite, сжатые форматы.

🔘Параллельное выполнение через pseq.

🔘Полное покрытие тестами и стабильный CI.

🔘Вдохновлена Scala, Apache Spark и LINQ.

#Python #PyFunctional #DataPipeline #FunctionalProgramming #BigData #DataProcessing #SQLite #Pandas #DataEngineering #PythonTips #OpenSource #DevTools

📱Ссылка на репозиторий:
https://github.com/EntilZha/PyFunctional
Please open Telegram to view this post
VIEW IN TELEGRAM
1👍2🔥2
📱Aiosqlitepool.

aiosqlitepool — пул соединений для SQLite в asyncio-приложениях.

aiosqlitepool — это высокопроизводительный пул соединений для асинхронных SQLite-приложений. Он устраняет издержки на создание/закрытие соединений и ускоряет работу с БД за счёт повторного использования «горячих» соединений.

⚠️Это не драйвер SQLite, а надстройка над aiosqlite, повышающая производительность.

❓Зачем использовать aiosqlitepool:

🔘Устраняет накладные расходы на соединения.

🔘Ускоряет запросы за счёт кэша в памяти.

🔘Увеличивает пропускную способность при высокой нагрузке.

🔹Пример базового использования:
async with pool.connection() as conn:
await conn.execute("INSERT INTO users VALUES (?)", ("Alice",))
await conn.commit()


❓Когда стоит использовать:

🔘5–10 запросов к БД в секунду.

🔘30 запросов в секунду от фоновых воркеров.

🔘P99 латентность < 50 мс.

🔘минимизация нагрузки на CPU/диск.

#Python #SQLite #AsyncIO #FastAPI #aiosqlite #aiosqlitepool #Backend #Performance #DevTools #WebDev #DataEngineering #Database

📱Ссылка на репозиторий:
https://github.com/slaily/aiosqlitepool
Please open Telegram to view this post
VIEW IN TELEGRAM
4👍2⚡1
📱FastLanes.

FastLanes — это сверхбыстрый, независимый от внешних библиотек формат хранения табличных данных с открытым исходным кодом и поддержкой Python, C++ и Rust.

🔹Особенности:

🔘Без зависимостей, полностью автономен.

🔘SIMD-дружественный (но без ручных SIMD-инструкций).

🔘40% лучшее сжатие по сравнению с Parquet.

🔘Чётко описанная структура формата + типизированное API.

🔘Официальная документация и публикации в PVLDB, SIGMOD, DaMoN.

🔻Пример:
import pyfastlanes

conn = pyfastlanes.connect()
conn.inline_footer().read_csv("data/csv_dir").to_fls("data.fls")

reader = conn.read_fls("data.fls")
reader.to_csv("decoded.csv")


#FastLanes #BigData #Compression #ParquetAlternative #Python #Rust #Cplusplus #DataEngineering #OpenSource #GPU #SIMD #DataProcessing #SIGMOD #VLDB #CSV #FLS #Разработка #Производительность #НаучныеИсследования

📱Ссылка на репозиторий:
https://github.com/cwida/FastLanes
Please open Telegram to view this post
VIEW IN TELEGRAM
1⚡3👍2🔥1
📱Riffq.

riffq — это инструмент на Python и Rust, который позволяет делать из ваших данных и кода полноценную базу данных с интерфейсом PostgreSQL.

🔹Возможности:

🔘Wire-протокол PostgreSQL (simple + extended) реализован на Rust для скорости и многопоточности.

🔘SQL-запросы перенаправляются в Python (DuckDB, Polars, Pandas и др.).

🔘Поддержка pg_catalog (совместимость с клиентами Postgres).

🔘Подключение к внешним источникам (CRM, аналитические БД) и объединение их в единый SQL-интерфейс.

🔘Сервинг DataFrame как виртуальных таблиц.

🔘Программируемый движок федеративных запросов.

🔻Примеры использования:

🔘Поднять Pandas DataFrame как PostgreSQL-таблицу для BI-инструментов.

🔘Построить federated query engine из нескольких API и БД.

🔘Реализовать фронтенд для data lake.

🔘Экспонировать динамические ML feature-stores для обучения и продакшн-инференса.

#Python #Rust #PostgreSQL #DataEngineering #DuckDB #Polars #Pandas #BI #FederatedQuery #riffq

📱Ссылка на репозиторий:
https://github.com/ybrs/riffq
Please open Telegram to view this post
VIEW IN TELEGRAM
1331
📱Fenic.

fenic
— это фреймворк на Python (вдохновлён PySpark) для построения AI и агентных приложений.
Он объединяет привычные DataFrame-операции с семантическим интеллектом и оптимизацией под работу с LLM.

🔹Возможности:

🔘Преобразование структурированных и неструктурированных данных в инсайты.

🔘Семантические операторы: semantic.extract, semantic.join, semantic.classify и др.

🔘Поддержка markdown, транскриптов, JSON и сложных текстовых форматов.

🔘Батч-инференс через любых LLM-провайдеров (OpenAI, Anthropic, Gemini, Cohere).

🔘Встроенный ретрай, лимиты, подсчёт токенов и стоимости

❓Зачем использовать fenic?

🔘Делает пайплайны для AI такими же надёжными, как традиционные дата-пайплайны.

🔘Удобен для построения агентных систем и сложных рабочих процессов.

🔘Поддерживает SQL-стиль запросов и API, знакомый по pandas / PySpark.

🚀Установка:

pip install fenic


#Python #AI #LLM #DataFrame #Fenic #PySpark #NLP #DataEngineering #MachineLearning

📱Ссылка на репозиторий:
https://github.com/typedef-ai/fenic
Please open Telegram to view this post
VIEW IN TELEGRAM
2🔥32⚡1👍1
📱Caniscrape.

caniscrape — это инструмент разведки для парсинга.

Он анализирует сайт и показывает, насколько сложно будет его скрапить — до того, как вы напишете хоть строчку кода.

❓Что умеет:

🔘Определяет WAF, CAPTCHA, лимиты, ботов-защитников (Cloudflare, Akamai, DataDome и др.).

🔘Выставляет оценку сложности (0–10): от “Easy” до “Very Hard”.

🔘Даёт рекомендации, какие инструменты, прокси и методы нужны.

🔘Показывает историю изменений защиты сайта (☁️ cloud tracking с v1.0.0).

💡Для кого:

🔘Разработчиков — чтобы понять, стоит ли вообще парсить этот сайт.

🔘Data-инженеров — для оценки затрат на CAPTCHA/прокси.

🔘Исследователей — для анализа антибот-защит.

🔘Команд — с централизованной историей и diff’ом изменений.

#Python #WebScraping #Caniscrape #BotDetection #Playwright #DataEngineering #OpenSource #AIReconnaissance

📱Ссылка на репозиторий:
https://github.com/ZA1815/caniscrape
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥4👍2⚡1
📱Tablediff.

tablediff — это минималистичный CLI‑инструмент для diff’а данных между двумя таблицами (dev vs prod, разные БД, миграции и пр.), построенный поверх reladiff и уже проверенный с DuckDB и Snowflake.
​
🔹Что делает:

🔘Сравнивает две таблицы по первичному ключу и даёт краткий сводный отчёт: совпадают ли данные или нет.
​
🔘С флагом --extended показывает:

✔️общие и уникальные колонки;

✔️по 5 id, которые не совпадают, и по 5 id, которые есть только в каждой из таблиц.
​
🔘Поддерживает --where, чтобы сравнивать только нужный срез данных (например, последние 7 дней или только status = 'active').
​
⚙️Установка:

🔘DuckDB: pip install "tablediff-cli[duckdb]"

🔘Snowflake: pip install "tablediff-cli[snowflake]"
​
🔻Базовый вызов:
tablediff TABLE_A TABLE_B --pk id --conn duckdb://./sample.duckdb
или
tablediff DEV.MART.USERS PROD.MART.USERS --pk USER_ID --conn "snowflake://..."


​#tablediff #Python #CLI #DataEngineering #DuckDB #Snowflake #DataQuality #DataDiff #ETL #Analytics
​
📱Ссылка на репозиторий:
https://github.com/oleg-agapov/tablediff
Please open Telegram to view this post
VIEW IN TELEGRAM
13👍1
📱Jetbase.

Jetbase — это лёгкий миграционный инструмент для БД в Python‑проектах: SQL‑файлы с версиями, апгрейды/роллбеки, валидация и блокировка миграций, плюс поддержка Postgres, SQLite, Snowflake и MySQL.

❓Что умеет:

🔘Простая инициализация: pip install jetbase → jetbase init создаёт каталог jetbase/ c migrations/ и env.py.

🔘Версионированные миграции в виде SQL‑файлов V<version>__<description>.sql, c блоками -- upgrade и -- rollback, и командами jetbase upgrade, jetbase history, jetbase status.

🔘Безопасность: file checksum’ы, миграционный lock (один процесс за раз), линейная история (всегда один head, конфликт версий падает сразу), repeatable‑миграции.

🔹Поддерживаемые БД и драйверы:

🔘Поддерживаются PostgreSQL, SQLite, Snowflake и MySQL через SQLAlchemy URL в jetbase/env.py.

🔘Для небустроенного SQLite требуются драйверы: например, psycopg2 для Postgres или соответствующий Snowflake/MySQL драйвер.

🔻Пример:

Настройка подключения, затем:
  jetbase new "create users table" -v 1

# редактируем V1__create_users_table.sql
jetbase upgrade

SQL: в -- upgrade создаём таблицы, в -- rollback — удаляем, что упрощает откаты.

#Jetbase #Python #DatabaseMigrations #PostgreSQL #SQLite #Snowflake #MySQL #SQLAlchemy #DevTools #DataEngineering

📱Ссылка на репозиторий:
https://github.com/jetbase-hq/jetbase
Please open Telegram to view this post
VIEW IN TELEGRAM
1👍2🔥11
📱Arbalister.

Arbalister — это расширение для JupyterLab, которое позволяет двойным кликом открывать табличные файлы (Parquet, CSV, Avro, ORC, SQLite и другие Arrow‑совместимые форматы) прямо в интерфейсе без написания кода. Расширение состоит из серверной части на Python и клиентской на TypeScript, общающихся через Arrow IPC‑стримы.

🔹Основные возможности:

🔘Поддерживаемые форматы: Parquet, CSV, Avro, ORC, SQLite, Arrow IPC.

🔘Lazy loading: данные подгружаются чанками по мере прокрутки, поэтому можно смотреть файлы больше объёма памяти.

🔘Prefetching: заранее подгружает следующий чанк для плавного скролла.

🔘Настройки чтения: тулбар для выбора разделителя CSV, таблицы в SQLite и других опций.

🔘Расширяемость: сервер даёт Arrow‑стримы, на которых можно строить свои вьюеры.

🔻Установка:

pip install arbalister (требуется JupyterLab >= 4.5.0).

#JupyterLab #Arbalister #ApacheArrow #Parquet #SQLite #DataEngineering #DataScience #Python #QuantStack #OpenSource

📱Ссылка на репозиторий:
https://github.com/QuantStack/Arbalister
Please open Telegram to view this post
VIEW IN TELEGRAM
1⚡2👍22
📱Silkworm-rs.

silkworm-rs — async‑first фреймворк для веб‑скрейпинга на Python с «двигателем» на Rust: HTTP‑клиент rnet (имперсонация браузера) + быстрый HTML‑парсер scraper-rs, минимальная модель Spider/Request/Response, middlewares и pipelines без тонны бойлерплейта. Он сразу даёт конкурентный движок с backpressure (очередь по умолчанию concurrency * 10), таймаутами на запрос, дедупликацией по URL и структурированным логгированием со статистикой по RPS, памяти, количеству URL и ошибок.

🔹Ключевые возможности:

🔘HTTP‑клиент с «маскарадом» под браузер, поддержкой редиректов с защитой от циклов, мерджем query‑параметров и прокси через request.meta["proxy"].

🔘Типизированные пауки и коллбэки, которые могут возвращать как items, так и новые Request; HTMLResponse даёт удобные селекторы (select, select_first) и response.follow() для переходов.

🔘Готовые middlewares: ротация User‑Agent, прокси, ретраи с экспоненциальным бэкоффом и «sleep‑кодами», гибкие задержки (фикс/рандом/функция), SkipNonHTMLMiddleware для отбрасывания не‑HTML.

🔘Богатый набор pipelines «из коробки»: JSONL, CSV, XML, SQLite, MsgPack, Polars/Parquet, Excel, YAML, Avro, куча БД (Postgres, MySQL, Mongo, Cassandra, DynamoDB, DuckDB и др.), S3, FTP/SFTP, Elasticsearch, Google Sheets, Snowflake, вебхуки и Taskiq‑очереди.

🔘Поддержка разных event loop’ов: стандартный asyncio (run_spider), uvloop на *nix, winloop на Windows и trio‑бэкенд (run_spider_trio) — для I/O‑bound задач это даёт 2–4x прирост.

🔘JavaScript‑страницы можно рендерить через экспериментальную интеграцию с Lightpanda/Chrome по CDP (fetch_html_cdp, CDPClient и spider‑примеры).

🚀Быстрый старт:

pip install silkworm-rs
# или (рекомендуется)
uv pip install --prerelease=allow silkworm-rs

Дальше — наследуете Spider, реализуете async def parse(...), yield’ите словари или Request, а run_spider(...) берёт на себя конкурентный движок, middleware’ы и выгрузку данных в нужные пайплайны.

#Python #Rust #WebScraping #AsyncIO #silkworm #rnet #scraperRS #DataEngineering #ETL #uvloop

📱Ссылка на репозиторий:
https://github.com/BitingSnakes/silkworm
Please open Telegram to view this post
VIEW IN TELEGRAM
5👍2🔥1
📱Pointblank.

Pointblank — это Python‑библиотека для проверки качества табличных данных (Polars, Pandas, SQL/файлы через Ibis) с упором на удобство и понятные отчёты.

🔹Особенности:

🔘AI‑DraftValidation: LLM сам предлагает план проверок по вашему датасету — отличный старт без «пустого файла».

🔘Chainable API: читаемые цепочки .Validate(...).col_vals_...().interrogate() и интерактивные HTML‑отчёты.

🔘Пороги и алерты: warning/error/critical + действия (например, Slack‑уведомления) при проблемах с данными.

🔘YAML и CLI pb: храните правила в git и гоняйте валидацию в CI/CD одной командой.

🐱Установка:

pip install pointblank


#python #datavalidation #dataquality #pointblank #datascience #dataengineering

📱Ссылка на репозиторий:
https://github.com/posit-dev/pointblank
Please open Telegram to view this post
VIEW IN TELEGRAM
👍32⚡1
📱Docglow.

Docglow — это генератор документации нового поколения для проектов dbt™ Core, который берет ваши метаданные и превращает их в современное, быстрое и интерактивное SPA-приложение. И самое главное — для этого больше не нужен платный dbt Cloud!

🔹Ключевые фичи, которые меняют правила игры:

🔘Продвинутый Lineage: Интерактивный граф зависимостей, который работает не только для моделей, но и на уровне отдельных колонок (Column-level lineage).

🔘Health Score проекта: Автоматический трекинг "здоровья" данных — оценивает покрытие кода тестами и полноту описаний.

🔘Однофайловый режим: Всю документацию (со стилями, скриптами и данными) можно собрать в один-единственный .html файл. Идеально, чтобы просто скинуть коллегам в Slack!

🔘Встроенный AI-чат: Подключаете свой ключ Anthropic (BYOK) и задаете вопросы по архитектуре данных на человеческом языке прямо в админке доков.

🔘Интеграция с IDE (MCP): Docglow может передавать контекст вашего dbt-проекта в ИИ-ассистенты вроде Cursor, Claude Code или Copilot.

🔘CI/CD Quality Gate: Умеет ронять пайплайн, если качество документации упало ниже заданного порога (флаг --fail-under).

🚀Быстрый старт:

pip install docglow
docglow generate --project-dir /path/to/dbt/project --output-dir ./site
docglow serve --dir ./site


#dbt #DataEngineering #DataAnalytics #Python #DataOps #AnalyticsEngineering #OpenSource #Docglow

📱Ссылка на репозиторий:
https://github.com/docglow/docglow
Please open Telegram to view this post
VIEW IN TELEGRAM
1⚡22👍1
📱Datanomy.

Datanomy - это консольная утилита для изучения "анатомии" ваших столбцевых (columnar) файлов данных.

Она предоставляет удобный интерактивный интерфейс прямо в терминале для просмотра структуры, метаданных и внутренней организации ваших файлов. На данный момент инструмент поддерживает работу с форматом Parquet.

🔹Основные возможности при просмотре Parquet:

🔘Общая структура файла.
🔘Схема (Schema).
🔘Предпросмотр самих данных (Data).
🔘Метаданные (Metadata).
🔘Статистика (Stats).

🔧Установка:

Через современный пакетный менеджер uv:
uv tool install datanomy


или через классический pip:
pip install datanomy


🐱Использование:

datanomy data.parquet


Если не хотите устанавливать пакет глобально, можно запустить на лету (через uvx):
uvx datanomy data.parquet


✅Инструмент написан на Python с использованием мощных библиотек Textual и PyArrow.

#Datanomy #Python #DataEngineering #DataScience #Parquet #CLI #OpenSource #Терминал #BigData

📱Ссылка на репозиторий:
https://github.com/raulcd/datanomy
Please open Telegram to view this post
VIEW IN TELEGRAM
1👍2🔥21
📱Nbpipe.

Nbpipe - это
легковесная утилита, которая позволяет запускать последовательность Jupyter-ноутбуков как единый рабочий процесс (workflow). Вы можете управлять выполнением прямо из командной строки (CLI) или через удобную боковую панель в JupyterLab.

Это идеальное решение для ситуаций, когда ваш процесс разбит на несколько логических шагов (например: подготовка данных -> обучение модели ->генерация отчета), и их нужно выполнять строго друг за другом.

🔧 Установка:

pip install nbpipe


❓Как это работает:

🔘Создайте папку .nbpipe/ в корне вашего проекта.

🔘Опишите ваши шаги в YAML-файле (например, my_workflow.yaml):

name: my_workflow
steps:
- notebook: prepare_data.ipynb
output: data/processed.csv
- notebook: train_model.ipynb


🔘Запустите пайплайн одной командой:

nbpipe run .nbpipe/my_workflow.yaml


💡Что важно знать про шаги:

🔘Поле notebook (обязательное) — указывает путь к ноутбуку относительно корня проекта.

🔘Поле output (опциональное) — файл, который должен быть сгенерирован после выполнения этого шага. Работает как проверка качества: если ноутбук отработал, а нужный файл не появился — пайплайн упадет с ошибкой. Поле поддерживает маски файлов (например, report_*.csv).

#Python #Jupyter #JupyterLab #DataScience #DataEngineering #MachineLearning #DevTools #Workflow #Автоматизация

📱Ссылка на репозиторий:
https://github.com/ngafar/nbpipe
Please open Telegram to view this post
VIEW IN TELEGRAM
1👍3⚡2
📱PyTrendy.

PyTrendy —
это надежное решение для поиска и анализа трендов во временных рядах.

В отличие от большинства других библиотек для тренд-детекшена, PyTrendy устойчива к сильному шуму и плоским («флэт») участкам данных. Она с высокой точностью определяет как плавные (gradual), так и резкие (abrupt) изменения графиков, претендуя на звание лучшего пакета для поиска трендов на Python.

🔹Основные возможности:

🔘Устойчивость к шуму: Отлично фильтрует случайные колебания, не ломая общую картину.

🔘Распознавание боковиков: Четко отделяет реальное движение вверх или вниз от горизонтального коридора (Flat).

🔘Высокая точность: Одинаково хорошо ловит как затяжные плавные тренды, так и внезапные скачки.

🔘Визуализация: Автоматически строит наглядные графики с выделенными зонами трендов.

🚀Быстрый старт:

pip install pytrendy


В коде инструмент используется буквально в несколько строк:

import pytrendy as pt

# Загружаем тестовые данные
df = pt.load_data('series_synthetic')

# Запускаем поиск трендов
results = pt.detect_trends(df, date_col='date', value_col='gradual', plot=True)
results.print_summary()


В консоли вы получите структурированный и понятный отчет:

Detected: - 3 Uptrends. - 3 Downtrends. - 3 Flats. - 0 Noise.

The best detected trend is Down between dates 2025-05-09 - 2025-06-17


Помимо краткой сводки, библиотека возвращает подробный датафрейм, где для каждого найденного участка указаны направление (Up/Down/Flat), даты начала и конца, длительность в днях, общее изменение значения (total_change) и класс тренда.

#Python #TimeSeries #DataScience #Analytics #PyTrendy #DataEngineering #OpenSource #MachineLearning #АнализДанных

📱Ссылка на репозиторий:
https://github.com/RussellSB/pytrendy
Please open Telegram to view this post
VIEW IN TELEGRAM
5⚡4👍3
📱PySuricata.

PySuricata
- это быстрый и легковесный инструмент для исследовательского анализа данных (EDA) на Python, построенный на потоковых алгоритмах.

Главная проблема большинства инструментов профилирования данных — они требуют загрузки всего датасета в оперативную память и выполняют множество тяжелых прогонов. PySuricata считывает данные всего за один проход (single pass), сохраняя фиксированный расход RAM независимо от количества строк в таблице.

🔹Главные фичи и преимущества:

🔘Потоковая архитектура: Данные обрабатываются чанками. Обработка 1 миллиона строк требует не больше памяти, чем 20 тысяч, что позволяет анализировать датасеты, превышающие объем RAM.

🔘Глубокая интеграция с Arrow и экосистемой: Нативно работает с pandas, polars (включая LazyFrame), файлами Parquet, Arrow IPC (.arrow, .feather) и запросами DuckDB без промежуточной материализации всего фрейма.

🔘Честная математика и вероятностные структуры: Для моментов распределений (среднее, дисперсия, асимметрия) используется потоковый алгоритм Уэлфорда/Пебая, для подсчета уникальных значений — скетчи KMV, а для частых элементов — алгоритм Мизры-Гриса. В отчете честно указываются границы погрешностей приближенных оценок.

🔘Автономный HTML-отчет в один файл: На выходе получается единый self-contained HTML-файл со встроенными SVG, стилями и скриптами, который можно пересылать по почте и открывать без подключения к интернету.

🔘Контроль качества и дрейфа данных в CI/CD:

✔️summarize() — отдает чистый версионированный JSON со метриками;

✔️compare() — рассчитывает смещение признаков между двумя выборками;

✔️pysuricata check / официальный GitHub Action — блокирует пайплайн (exit code $\ne 0$), если превышен процент пропусков или обнаружен дрейф данных.

🚀Быстрый старт:

import pandas as pd
from pysuricata import profile

df = pd.read_csv("large_dataset.csv")

# Анализируем данные и сохраняем автономный отчет
profile(df).save_html("report.html")


Анализ файлов напрямую (без загрузки в DataFrame):


from pysuricata import profile

# Потоковое чтение Parquet-файла без перегрузки RAM
report = profile("data/events.parquet")
report.save_html("events_report.html")


📦Установка:

pip install pysuricata
# или через uv:
uv add pysuricata


#Python #PySuricata #DataScience #EDA #Pandas #Polars #DuckDB #DataEngineering #MachineLearning #OpenSource #DevTools

📱Ссылка на репозиторий:
https://github.com/alvarodiez20/pysuricata
Please open Telegram to view this post
VIEW IN TELEGRAM
3🔥3👍21
📱Flowfile.

Flowfile
- это инструмент для визуального построения ETL-пайплайнов, который компилируется в высокопроизводительный код на Polars.

Главная идея проекта — стереть грань между визуальным no-code/low-code и классической разработкой: визуальный холст (canvas) с нодами и Python-код являются двумя синхронными представлениями одного и того же графа вычислений.

Flowfile работает без тяжелых кластеров (вроде Apache Spark): все преобразования выполняются in-process на базе Polars, утилизируя ресурсы одной машины на максимум.

🔹Ключевые возможности:

🔘Холст + Код (Dual-Mode):

✔️49 готовых типов узлов: джойны, нечеткое сопоставление (fuzzy matching), сводные таблицы (pivot), оконные функции, агрегации, древовидное разворачивание (bill-of-materials explosion) и ветвление.

✔️Редактор формул с 95 встроенными функциями.

✔️Узел произвольного Polars-кода для специфической логики, не покрытой стандартными блоками.

✔️Живое интерактивное превью данных (Live Data Preview) на каждом этапе пайплайна.

🔤Генерация чистого Python-кода: Вы можете быстро спроектировать логику визуально, а затем экспортировать её в лаконичный независимый скрипт на чистом Polars (import polars as pl) без необходимости тащить Flowfile на прод. Графы сохраняются в человекочитаемом YAML для версионирования в Git.

🔤Встроенный AI-ассистент: Позволяет генерировать и модифицировать структуру пайплайна прямо на холсте по текстовому описанию задачи (поддерживаются ключи OpenAI, Anthropic, Google, Groq, OpenRouter или локальная Ollama).

🔤Каталог данных на Delta Lake и SQL: Встроенный каталог таблиц с поддержкой версионирования, Time Travel и предикатного пушдауна (pushdown) в виртуальных таблицах. Для исследовательской работы есть встроенный SQL-редактор (Polars SQLContext) и модуль визуализации графиков Graphic Walker (аналог Tableau).

🔤Источники и коннекторы: Локальные файлы (CSV, Parquet, Excel, JSON), СУБД (PostgreSQL, DuckDB, MySQL, SQLite, SQL Server), облачные хранилища (S3, GCS, ADLS с поддержкой Delta Lake и Iceberg на чтение), Kafka (consumer) и внешние REST API.

🔤Запуск в любом окружении:

✔️В браузере: мгновенная работа через WebAssembly / Pyodide на demo.flowfile.org без установки и сервера;

✔️Локально на ноутбуке: установка в одну команду через pip или готовые десктопные приложения (Tauri);

✔️В команде: развертывание через Docker Compose с авторизацией, ролями пользователей, общим каталогом, планировщиком задач (scheduler) и изолированными Jupyter-подобными Python-кернелами.

💻Пример кода на Python:

Вы можете описать пайплайн кодом через API в стиле Polars и в один вызов открыть его в визуальном редакторе:

import flowfile as ff
from flowfile import col, open_graph_in_editor

# Загрузка и трансформация данных
df = ff.from_dict({
"category": ["A", "B", "A", "C", "B"],
"value": [100, 200, 150, 300, 250]
})

result = (
df.filter(col("value") > 150)
.with_columns((col("value") * 2).alias("double_value"))
.group_by("category")
.agg(col("value").sum().alias("total"))
)

# Открытие собранного графа в визуальном интерфейсе
open_graph_in_editor(result.flow_graph)


🚀Быстрый запуск:

Установка и запуск UI на локальной машине (Python 3.10–3.13):

pip install Flowfile
flowfile run ui


Командный запуск в Docker Compose:


git clone https://github.com/edwardvaneechoud/Flowfile.git
cd Flowfile
docker compose up -d
# Веб-интерфейс будет доступен по адресу http://localhost:8080


✅Проект распространяется под свободной лицензией MIT.

#Flowfile #Python #Polars #ETL #DataEngineering #DataScience #SQL #DeltaLake #DuckDB #OpenSource #DevTools #DataPipelines

📱Ссылка на репозиторий:
https://github.com/Edwardvaneechoud/Flowfile
Please open Telegram to view this post
VIEW IN TELEGRAM
👍41