Превратите пайплайны Pandas в панель управления с помощью hvPlot .interactive
Авторы София Янг и Марк Сков Мэдсен
Эта статья покажет вам самый простой способ создать интерактивную информационную панель в Python из любого DataFrame. Если вы уже знакомы с некоторыми пандами, вы можете почти сразу же использовать hvPlot .interactive и Panel, чтобы превратить свой конвейер обработки DataFrame в панель инструментов! Чтобы создать такую интерактивную информационную панель, потребуется всего несколько строк знакомого кода:
Что такое hvPlot?
hvPlot был разработан моими коллегами по Anaconda Филиппом Рюдигером, Жаном-Люком Стивенсом и Джимом Беднаром. Это то же самое, что и знакомый API Pandas .plot(), но с использованием .hvplot() для создания интерактивных графиков в веб-браузере. По моему опыту, это самый простой способ создания интерактивных графиков в Python для фреймов данных Pandas, Dask и XArray. hvPlot — одна из семи библиотек в экосистеме HoloViz. Если вы хотите узнать больше о HoloViz, прочтите мою предыдущую запись в блоге Почему я люблю HoloViz.
Материалы
- Проверьте мой репозиторий Github для этой статьи.
- Проверьте блокнот и приложение в Binder: Jupyter Notebook Binder, Jupyter Labs Binder, Panel Apps или Google Colab.
Настройка
Давайте сначала установим несколько пакетов в командной строке:
Затем в файле Python или файле записной книжки импортируйте необходимые модули:
Начиная с панд
Давайте сначала начнем с фрейма данных Pandas:
Представьте, что вы хотите обработать эти данные с помощью следующего конвейера обработки данных Pandas:
Что, если мы хотим превратить значения cyl
, значения mfr
и переменную hp
в интерактивные виджеты, которые мы можем изменять и контролировать? Является ли это возможным? Да, и с hvPlot это даже не сложно. Вот шаги:
- Во-первых, нам нужно обернуть наш фрейм данных
.interactive()
:idf = df.interactive()
, чтобы этот фрейм данных стал интерактивным, и мы могли использовать виджеты Panel в этом фрейме данных.
«.interactive хранит копию вашего конвейера (серии вызовов методов или других выражений ваших данных) и динамически воспроизводит конвейер при каждом изменении этого виджета».
- Во-вторых, мы можем определить виджеты панели, которые мы хотели бы использовать. Здесь я определил виджет панели для цилиндров, виджет для производителя и виджет для выбора оси Y.
- Наконец, мы можем заменить значения или переменные из исходного конвейера Pandas на эти виджеты, которые мы только что определили. Мы определяем вывод конвейера как ipipeline:
Создание интерактивного графика и таблицы
Когда дело доходит до построения графиков, интерактивный фреймворк данных работает как обычный фреймворк данных Pandas. Мы можем использовать наш обычный метод .plot, или здесь я попробовал свой любимый метод построения графиков .hvplot. И волшебным образом наш сюжет становится интерактивным!
Подобно кадру данных Pandas, наш интерактивный кадр данных поддерживает метод .pipe, поэтому мы можем передать функцию или класс, например pn.widgets
.Tabulator, в этот кадр данных. Результат показывает интерактивную таблицу.
Создание информационной панели
Теперь, когда у нас есть график, таблица и три виджета, как нам расположить их на информационной панели?
Здесь мы можем создавать объекты Panel из наших интерактивных конвейеров, используя .panel()
, а затем использовать Panel для упорядочивания вещей, как нам нравится. Здесь мы поместим наш график и таблицу в объект pn.Column
, а затем воспользуемся шаблоном, который помещает виджеты на боковую панель, чтобы создать полную панель инструментов:
Развертывание панели управления
Чтобы запустить эту панель управления в качестве веб-сервера, мы можем просто запустить panel serve hvplot_interactive.ipynb
, и теперь ваш браузер должен открыться с вкладкой, показывающей панель управления из начала этой статьи. Это все, что нужно!
Для получения подробной информации о том, как развернуть панель мониторинга на сервере, ознакомьтесь с Документацией по панели или моей предыдущей статьей о развертывании панели мониторинга в Google Cloud App Engine и Google Cloud Run.
Рекомендуемые учебные ресурсы
- Ознакомьтесь с официальной документацией: hvPlot .interactive и hvplot.holoviz.org.
- Филипп Рюдигер представил hvPlot .interactive на конференции PyData в этом году, вот видео.
- У Марка Скова Мэдсена есть отличный пример использования hvPlot .interactive.
Надеюсь, вам понравится использовать hvPlot .interactive! Если у вас есть вопросы или вы хотите связаться с другими пользователями HoloViz, посетите https://discourse.holoviz.org/.
Подтверждение:
- Спасибо, Джим Беднар, за ваше руководство и поддержку!
- Спасибо Simon Høxbro Hansen за исправление ошибки для нас. Мы очень ценим вашу помощь!
Ссылки:
https://www.youtube.com/watch?v=-GcA0SEJaJM
https://gist.github.com/MarcSkovMadsen/e666503df2aa1d8d047dcb9555b5da6d
https://holoviz.org/tutorial/Interactive_Pipelines.html?highlight=interactive
София Янг и Марк Сков Мэдсен, 14 января 2022 г.