📰 Интерфейс и визуализация данных |
Для создания GUI Python-приложений, связанных с анализом и визуализацией данных, обычно используют Streamlit, Dash, Altair и Bokeh. Недавно к этому арсеналу добавились еще четыре перспективных инструмента – Rich, Trame, Taipy и PyGWalker. Библиотека Rich обеспечивает красивое форматирование и подсветку текста в консоли. С помощью Rich можно реализовать текстовую анимацию – сделать, например, индикаторы прогресса. С учетом всех этих возможностей Rich можно рассматривать как инструмент для создания полноценного и привлекательного текстового пользовательского интерфейса (TUI). Такого интерфейса вполне достаточно для визуализации данных в простых приложениях, которым не нужно трехмерное представление результатов анализа. На RealPython на днях опубликовали очень подробный туториал по визуализации данных о криптовалютных торгах с использованием Rich. |
Rich рисует красивые таблицы в консоли |
Фреймворк Trame упрощает и ускоряет разработку интерактивных, визуально привлекательных веб-приложений. Отличительная черта Trame – создание впечатляющих интерактивных 3D-визуализаций. Под капотом используются Vue.js, VTK, ParaView и Vega, но ничего из этого, как и тонкостей создания фронтенда, Python-разработчику знать не потребуется. Базовый туториал по Trame покажет, как установить и запустить встроенные примеры. Более подробный туториал есть на сайте разработчиков, а детальное обсуждение всех задействованных в Trame технологий – в этом видео. |
Trame визуализирует любые трехмерные данные |
Библиотека Taipy предназначена для быстрой разработки фуллстек-приложений, использующих ИИ. При этом никакие знания HTML/CSS/JS от Python-разработчику не нужны: Taipy возьмет на себя и создание интерфейса, и визуализацию данных. В свежем туториале показано, как интегрировать PySpark с Taipy для обработки больших данных и управления рабочими процессами: - В качестве примера использован набор данных о пингвинах. PySpark применяется для обработки данных, а затем результаты сохраняются и загружаются для дальнейшего использования.
- Рассматриваются настройки конфигурации Taipy для выполнения задачи PySpark.
- Рассказывается о создании интерфейса для отображения результатов и управления процессом обработки данных.
|
Интерфейс Taipy/PySpark приложения из туториала |
PyGWalker визуализирует датафреймы Pandas и Polars, используя удобный интерактивный интерфейс, похожий на Tableau. Интегрируется с Jupyter Notebook (и любыми другими похожими блокнотами), предоставляет большой выбор всевозможных графиков, диаграмм и сводных таблиц. Протестировать PyGWalker онлайн можно на сайте проекта, в Kaggle и в Colab. |
В PyGWalker очень много опций визуализации |
🛠️ Чем новые инструменты лучше старых |
В статье «New open-source vs old open-source» возможности популярных библиотек сравниваются с современными фичами новых инструментов: - Taipy и Streamlit. Taipy работает быстрее, поддерживает многопользовательский режим, предоставляет возможности по созданию более удобных и стильных интерфейсов, и к тому же решает многие ограничения Streamlit (сложности с асинхронными вызовами и обработкой больших данных, совместимость с Jupyter Notebook).
- Polars и Pandas. Polars делает все то же самое, что и Pandas, и при этом работает в 10-100 раз быстрее, потому что написана на Rust с его супер-мощной поддержкой параллелизма. Стоит заметить, что в Pandas для параллельных вычислений можно использовать Numba.
- Dask и PySpark. Dask использует параллельные вычисления, что позволяет ему делать на ноутбуке расчеты, которые в буквальном смысле не влезают в память. И хотя наборы данных более 2 Тб ему не по зубам, он лучше подходит для обработки данных на обычных компьютерах, чем PySpark.
- LightGBM и XGBoost. Оба инструмента предназначены для градиентного бустинга, но LightGBM лучше оптимизирована для работы с большими данными и параллельными вычислениями.
- PyCaret и Scikit-learn. PyCaret упрощает использование машинного обучения по сравнению со Scikit-learn, предоставляя высокоуровневые функции для анализа, обучения и развертывания моделей.
- Darts и tsfresh. Обе библиотеки предназначены для анализа временных рядов, однако у Darts более обширная функциональность – ее даже можно назвать аналогом scikit-learn для временных рядов, в то время как tsfresh используется для автоматической экстракции признаков из временных рядов.
- PyTorch и TensorFlow. Начиная с 2020 года, библиотека PyTorch сравнилась по популярности с TensorFlow. Между ними сложно сделать выбор, однако у PyTorch все же есть преимущество – ее проще освоить и она лучше подходит для проектов, связанных с обработкой естественного языка.
- Arcade и Pygame. Arcade – современная и удобная библиотека для создания 2D-игр, созданная на основе Pyglet и OpenGL. Функциональность у нее обширнее, чем у Pygame, а изучить ее проще, она отлично подходит для детей и начинающих. Здесь собрано множество примеров игр на Arcade.
|
- spaCy и NLTK. Библиотека spaCy отличается большей производительностью в задачах обработки естественного языка, и ее проще изучить.
- Ruff и Pylint. Поскольку Ruff написан на Rust, он работает в 10-100 раз быстрее других линтеров, в том числе Pylint.
|
Супербыстрый ASGI-фреймворк |
У DRF, FastAPI и Django Ninja появился новый многообещающий конкурент – Litestar. По результатам всех тестов Litestar значительно опережает FastAPI, а его синтаксис явно проще DRF: |
from litestar import Litestar, get @get("/") async def hello_world() -> str: return "Hello, world!" app = Litestar([hello_world]) |
Litestar намного превосходит остальные REST API по производительности |
Вот основные возможности Litestar: - Валидация и парсинг данных. Фреймворк использует подсказки типов для определения правил валидации, парсинга и сериализации данных. Интегрируется с dataclasses, Pydantic, msgspec и т. д.
- OpenAPI. Автоматически генерирует OpenAPI схемы для документирования API. Позволяет работать с API через Swagger, Redoc, Stoplight.
- Мiddleware. Предоставляет CORS, защиту от CSRF, сжатие, логирование и т. д.
- Хранилища данных. Предоставляет интерфейсы для подключения хранилищ типа ключ-значение.
- Интеграция с ORM. Полноценная поддержка SQLAlchemy для повторного использования моделей в валидации и сериализации.
- Внедрение зависимостей. Мощная и в то же время очень простая система внедрения зависимостей для использования компонентов на различных уровнях приложения.
- Кэширование. Встроенное кэширование ускоряет получение ответов.
- Поддержка WebSocket с автоматической валидацией данных и сериализацией.
- Безопасность. Строгая проверка кода пользователя на этапе выполнения для минимизации ошибок.
- Аутентификация. Есть утилиты для сессионной и JWT аутентификации.
- (А)синхронность. Фреймворк одинаково хорошо работает и с теми, и с другими типами приложений.
|
API-генератор на базе Flask |
Flask-Muck – новый фреймворк для генерации REST API на базе Flask и SqlAlchemy. Он существенно упрощает и ускоряет разработку типового бэкенда. Создание CRUD с этим фреймворком укладывается в буквально 9(!) строк кода. Основные возможности: - Автоматически генерирует эндпойнты CRUD – не нужно писать рутинный код для базовых операций создания, чтения, обновления и удаления данных.
- Предоставляет встроенные возможности поиска, фильтрации, сортировки и постраничной навигации при выводе списков ресурсов.
- Поддерживает вложенные ресурсы в API, например /api/classrooms/12345/students. Это позволяет строить иерархические структуры данных.
- Полностью совместим с любыми представлениями в Flask (на основе методов или классов). Представления можно комбинировать и использовать отдельно.
- Позволяет задавать коллбеки до и после манипуляций Create, Update, Delete – для добавления произвольной логики в нужные моменты.
|
Генераторы статических сайтов |
Генераторы сайтов идеальны для блогов, портфолио, документации, промо- и посадочных страниц. Преимуществ у них больше, чем недостатков: - Безопасность. Так как сайт генерируется статически, у него нет уязвимого серверного кода, который можно взломать.
- Скорость загрузки. Статические файлы загружаются очень быстро, поскольку им не требуется обработка на сервере. Это важно для SEO и пользовательского опыта.
- Масштабируемость. Статические сайты легче и дешевле масштабировать на большое количество посетителей – нет нагрузки на сервер при любом трафике.
- Дешевизна хостинга. Для хостинга статических сайтов подходят GitHub Pages или Amazon S3. При желании такой сайт можно раздавать даже из Dropbox.
- Простота разработки. Генераторы сайтов позволяют быстро создавать сайты, используя любые готовые HTML/CSS шаблоны и JS-модули.
- Переносимость. Статические сайты легко перенести на любой хостинг, или даже конвертировать в электронную книгу.
В этой статье рассматриваются самые популярные Python-генераторы: - Pelican – мощный и простой в использовании генератор с поддержкой Markdown и reStructuredText. Располагает хорошим выбором плагинов и тем.
- MkDocs – популярный генератор для документации проектов. Прост в настройке и использовании.
- Nikola – богатый возможностями генератор для разных форматов контента. Отличается гибкой архитектурой и предусматривает использование плагинов.
- Sphinx – используется в первую очередь для генерации технической документации, но подходит и для сайтов. Поддерживает PDF.
- Lektor – CMS для удобного управления контентом статического сайта.
|
В отличие от большинства генераторов, у Lektor есть удобная админка | При желании генератор статических сайтов можно запросто сделать на базе Django – с помощью плагина Django Bakery, и на Flask – с модулем Frozen Flask. Мы уже публиковали туториал по созданию портфолио разработчика на базе Flask и Frozen Flask. На этом все, до встречи через неделю! |
|
|
Вы получили это письмо, потому что подписались на нашу рассылку. Если вы больше не хотите получать наши письма, нажмите здесь.
|
|
|
|