Превратите пайплайны Pandas в панель управления с помощью hvPlot .interactive

Авторы София Янг и Марк Сков Мэдсен

Эта статья покажет вам самый простой способ создать интерактивную информационную панель в Python из любого DataFrame. Если вы уже знакомы с некоторыми пандами, вы можете почти сразу же использовать hvPlot .interactive и Panel, чтобы превратить свой конвейер обработки DataFrame в панель инструментов! Чтобы создать такую ​​интерактивную информационную панель, потребуется всего несколько строк знакомого кода:

Что такое hvPlot?

hvPlot был разработан моими коллегами по Anaconda Филиппом Рюдигером, Жаном-Люком Стивенсом и Джимом Беднаром. Это то же самое, что и знакомый API Pandas .plot(), но с использованием .hvplot() для создания интерактивных графиков в веб-браузере. По моему опыту, это самый простой способ создания интерактивных графиков в Python для фреймов данных Pandas, Dask и XArray. hvPlot — одна из семи библиотек в экосистеме HoloViz. Если вы хотите узнать больше о HoloViz, прочтите мою предыдущую запись в блоге Почему я люблю HoloViz.

Материалы

Настройка

Давайте сначала установим несколько пакетов в командной строке:

Затем в файле 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 г.

Следуйте за мной на Medium, Twitter, Linkedin и YouTube :)