Интерактивные дашборды и приложения с Plotly и Dash. Используем полноценный веб-фреймворк в Python на всю мощь - без JavaScript
Покупка
Тематика:
Программирование и алгоритмизация
Издательство:
ДМК Пресс
Автор:
Даббас Элиас
Перевод:
Гинько Александр Юрьевич
Год издания: 2023
Кол-во страниц: 306
Дополнительно
Вид издания:
Практическое пособие
Уровень образования:
ВО - Специалитет
ISBN: 978-5-97060-988-0
Артикул: 817287.01.99
Прочитав эту книгу, вы в полной мере освоите фреймворк Dash от Plotly, предоставляющий разработчикам Python блестящие возможности по созданию полноценных интерактивных веб-приложений и дашбордов без знания языка JavaScript.
Вы научитесь создавать различные типы диаграмм; вставлять в приложение разнообразные элементы управления, включая кнопки, выпадающие списки, флажки, календари и т.д., и снабжать приложения динамическими страницами со ссылками. По прочтении книги вы будете обладать необходимыми навыками развертывания полноценных интерактивных приложений и дашбордов, выполнения многоступенчатого рефакторинга кода и оптимизации написанных вами приложений.
Издание адресовано специалистам по работе с данными и аналитикам, желающим больше узнать о своих исходных данных при помощи интерактивных дашбордов.
- Полная коллекция по информатике и вычислительной технике
- Аналитика данных
- Веб-разработка
- ДМК Пресс. Информационные системы и технологии
- ДМК Пресс. ИТ-технологии для профессионалов
- Интермедиатор. Информационные системы и технологии (сводная)
- Интермедиатор. ИТ-технологии для профессионалов (сводная)
- Программирование и алгоритмизация
- Программирование на Python
Тематика:
ББК:
УДК:
ОКСО:
- ВО - Бакалавриат
- 09.03.01: Информатика и вычислительная техника
- 09.03.02: Информационные системы и технологии
- 09.03.04: Программная инженерия
ГРНТИ:
Скопировать запись
Фрагмент текстового слоя документа размещен для индексирующих роботов.
Для полноценной работы с документом, пожалуйста, перейдите в
ридер.
Элиас Даббас Интерактивные дашборды и приложения с Plotly и Dash
Interactive Dashboards and Data Apps with Plotly and Dash Harness the power of a fully fledged frontend web framework in Python – no JavaScript required Elias Dabbas BIRMINGHAM – MUMBAI
Москва, 2023 Элиас Даббас Интерактивные дашборды и приложения с Plotly и Dash Используем полноценный веб-фреймворк в Python на всю мощь – без JavaScript
УДК 004.4 ББК 32.372 Д12 Д12 Элиас Даббас Интерактивные дашборды и приложения с Plotly и Dash. Используем полноценный веб-фреймворк в Python на всю мощь – без JavaScript / пер. с англ. А. Ю. Гинько. – М.: ДМК Пресс, 2023. – 306 с.: ил. ISBN 978-5-97060-988-0 Прочитав эту книгу, вы в полной мере освоите фреймворк Dash от Plotly, предоставляющий разработчикам Python блестящие возможности по созданию полноценных интерактивных веб-приложений и даш- бордов без знания языка JavaScript. Вы научитесь создавать различные типы диаграмм; вставлять в приложение разнообразные элементы управления, включая кнопки, выпадающие списки, флажки, календари и т. д. и снабжать приложения динамическими страницами со ссылками. По прочтении книги вы будете обладать необходимыми навыками развертывания полноценных интерактивных приложений и дашбордов, выполнения многоступенчатого рефакторинга кода и оптимизации написанных вами приложений. Издание адресовано специалистам по работе с данными и аналитикам, желающим больше узнать о своих исходных данных при помощи интерактивных дашбордов. Copyright © Packt Publishing 2021. First published in the English language under the title Interactive Dashboards and Data Apps with Plotly and Dash – (9781800568914). Все права защищены. Любая часть этой книги не может быть воспроизведена в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав. Материал, изложенный в данной книге, многократно проверен. Но, поскольку вероятность технических ошибок все равно существует, издательство не может гарантировать абсолютную точность и правильность приводимых сведений. В связи с этим издательство не несет ответственности за возможные ошибки, связанные с использованием книги. ISBN 978-1-80056-891-4 (англ.) Copyright © Packt Publishing, 2021 ISBN 978-5-97060-988-0 (рус.) © Оформление, перевод на русский язык, издание, ДМК Пресс, 2022
Оглавление Предисловие от издательства ..................................................................... 10 Об авторе ....................................................................................................... 11 О рецензенте................................................................................................. 12 Введение ....................................................................................................... 13 Часть I. Построение приложения на Dash ................................................. 17 Глава 1. Знакомство с экосистемой Dash ................................................... 18 Технические требования ..................................................................................18 Настройка окружения ............................................................................................19 Исследование фреймворка Dash и сопутствующих пакетов .........................20 Пакеты, содержащиеся во фреймворке Dash .......................................................21 Введение в базовую структуру приложения Dash ..........................................22 Создание и запуск простого приложения Dash ..............................................23 Добавление HTML и других компонентов в приложение ..............................25 Добавление компонентов HTML в приложение Dash ..........................................26 Проектирование макета и управление темами .............................................28 Темы ........................................................................................................................29 Координатная сетка и чувствительность к изменениям .....................................30 Встроенные компоненты .......................................................................................32 Кодировка цветов ...................................................................................................32 Добавление компонентов Dash Bootstrap в приложение ....................................33 Заключение .......................................................................................................35 Глава 2. Структура приложений Dash ......................................................... 36 Технические требования ..................................................................................36 Использование Jupyter Notebook для запуска приложений Dash..................37 Изоляция функционала для упрощения процесса разработки и отладки .........37 Создание чистой функции на Python ..............................................................39 Знакомство с параметром ID компонентов Dash ................................................40 Использование элементов ввода и вывода .....................................................41 Определение ввода и вывода ................................................................................42 Шаблон функции обратного вызова .....................................................................43 Реализация функции обратного вызова ...............................................................44 Внедрение функции в приложение ......................................................................45 Свойства функций обратного вызова ...................................................................53 Заключение .......................................................................................................55 Глава 3. Работа с объектом Figure ............................................................... 56 Технические требования ..................................................................................56 Введение в объект Figure ..................................................................................57 Знакомство с атрибутом data ...........................................................................59 Знакомство с атрибутом layout........................................................................61 Интерактивное исследование объекта Figure ......................................................62
Оглавление Опции настройки для объекта Figure ...................................................................63 Способы преобразования графиков ................................................................64 Преобразование графиков в HTML .......................................................................64 Работа с настоящим набором данных ..................................................................65 Преобразование данных как важная часть процесса визуализации ..................68 Придание графику интерактивности за счет обратного вызова ........................69 Добавление функционала в приложение .............................................................72 Создание тем для графиков ...................................................................................74 Заключение .......................................................................................................75 Глава 4. Подготовка и преобразование данных. Введение в Plotly Express .............................................................................................. 76 Технические требования ..................................................................................76 Длинный формат данных (tidy) .......................................................................77 Примеры графиков Plotly Express .........................................................................77 Основные атрибуты длинного формата данных (tidy) ........................................80 Роль навыков в области преобразования данных ..........................................81 Исследование исходных файлов ...........................................................................82 Отмена свертывания датафреймов ......................................................................91 Сведение датафреймов ..........................................................................................93 Объединение датафреймов ...................................................................................95 Знакомство с Plotly Express ..............................................................................97 Plotly Express и объекты Figure ............................................................................102 Создание диаграммы Plotly Express на основе набора данных ........................104 Добавление данных и столбцов в набор .............................................................106 Заключение .....................................................................................................107 Часть II. Расширение функционала приложений ....................................109 Глава 5. Интерактивное сравнение данных при помощи столбчатых диаграмм и выпадающих списков .......................................110 Технические требования ................................................................................111 Построение вертикальных и горизонтальных столбчатых диаграмм........111 Создание вертикальных столбчатых диаграмм со множеством значений......118 Связывание столбчатых диаграмм с выпадающими списками ..................119 Разные способы отображения столбчатых диаграмм с несколькими рядами данных .........................................................................................123 Создание датафрейма с данными о доходах ......................................................124 Внедрение изменений в приложение .................................................................128 Использование ячеистой структуры для вывода множественных диаграмм (фасетирование) ......................................................................130 Исследование дополнительных возможностей выпадающих списков (множественный выбор, заместители текста и т. д.) ..............................133 Добавление заместителя текста для выпадающего списка ..............................133 Изменение темы приложения .............................................................................134 Изменение размеров компонентов ....................................................................136 Заключение .....................................................................................................137
Оглавление 7 Глава 6. Исследование переменных при помощи точечной диаграммы и фильтрация наборов данных ............................................. 139 Технические требования ................................................................................140 Различные способы использования точечных диаграмм: маркеры, линии и текст ............................................................................................140 Маркеры, линии и текст .......................................................................................141 Отображение нескольких рядов данных на одной точечной диаграмме .... 144 Настройка цветов на точечной диаграмме ...................................................147 Дискретные и непрерывные переменные .........................................................147 Использование цветов с непрерывными переменными ..................................148 Создание цветовых шкал вручную .....................................................................151 Использование цветов с дискретными переменными .....................................153 Управление наложениями и выбросами при помощи прозрачности, символов и масштаба ...............................................................................156 Прозрачность и размер маркеров .......................................................................157 Использование логарифмических шкал .............................................................158 Знакомство со слайдерами, включая слайдеры диапазонов .......................160 Настройка подписей и значений слайдеров.................................................163 Заключение .....................................................................................................168 Глава 7. Работа с географическими картами и обогащение дашбордов при помощи языка разметки Markdown .............................. 169 Технические требования ................................................................................170 Знакомство с картограммами ........................................................................170 Использование анимации для добавления нового слоя в визуализацию .... 172 Использование функций обратного вызова с картами ...............................174 Создание компонента Markdown...................................................................177 Знакомство с проекциями карты ..................................................................182 Использование точечных карт.......................................................................183 Использование карт Mapbox ..........................................................................185 Другие опции и инструменты для работы с картами ..................................190 Внедрение интерактивной карты в приложение .........................................191 Заключение .....................................................................................................192 Глава 8. Определение частотности данных с помощью гистограмм и построение интерактивных таблиц .......................................................193 Технические требования ................................................................................194 Создание гистограммы ..................................................................................194 Настройка гистограммы, включая изменение количества столбиков и отображение множественных данных ...................................................195 Использование цвета для детализации гистограммы.......................................197 Отображение множественных гистограмм ........................................................198 Добавление гистограммам интерактивности ..............................................201 Создание двумерной гистограммы ...............................................................205 Создание DataTable .........................................................................................207 Настройка отображения таблицы данных (ширина и высота ячеек, отображение текста и т. д.) .......................................................................208
Оглавление Добавление гистограмм и таблиц данных в приложение ...........................210 Заключение .....................................................................................................212 Что мы узнали из первых двух частей книги ...........................................214 Часть III. Развитие приложений. Новый уровень ....................................215 Глава 9. Машинное обучение: пусть данные говорят сами за себя ........216 Технические требования ................................................................................217 Кластеризация данных ...................................................................................217 Поиск оптимального количества кластеров .................................................221 Кластеризация стран по численности населения ........................................224 Подготовка данных с использованием библиотеки scikit-learn..................226 Заполнение пропущенных значений .................................................................227 Масштабирование данных при помощи scikit-learn .........................................228 Создание интерактивного приложения с применением кластеризации по методу k-средних ................................................................................229 Заключение .....................................................................................................234 Глава 10. Ускорение работы приложений с помощью улучшений функций обратного вызова .......................................................................235 Технические требования ................................................................................236 Знакомство с элементом State .......................................................................236 Различия между элементами Input и State ........................................................237 Создание взаимосвязанных компонентов ...................................................241 Добавление пользователем динамических компонентов в приложение .... 246 Введение в шаблонные обратные вызовы ....................................................248 Заключение .....................................................................................................253 Глава 11. Ссылки и многостраничные приложения ................................255 Технические требования ................................................................................256 Знакомство с компонентами Location и Link ...............................................256 Работа с компонентом Link .................................................................................257 Разбор ссылок и использование их составляющих для изменения приложения ..............................................................................................259 Адаптирование приложения под множественные макеты .........................260 Отображение содержимого на основе ссылки ...................................................263 Добавление динамически сгенерированных ссылок в приложение ..........264 Внедрение в приложение интерактивности на основе ссылок ...................265 Заключение .....................................................................................................268 Глава 12. Развертывание приложения ......................................................269 Технические требования ................................................................................270 Основы рабочего процесса разработки, развертывания и обновления приложений ..............................................................................................270 Аренда виртуального сервера и настройка аккаунта ..................................272 Подключение к серверу при помощи Secure Shell (SSH) .............................274 Запуск приложения на сервере ......................................................................276
Оглавление 9 Настройка и запуск приложения через WSGI-сервер ..................................279 Настройка и конфигурирование веб-сервера ..............................................280 Поддержка приложения и его обновление ...................................................282 Исправление ошибок и внесение изменений в приложение ...........................282 Обновление пакетов Python ................................................................................283 Поддержка сервера ...............................................................................................284 Развертывание и масштабирование приложений Dash с помощью Dash Enterprise ......................................................................285 Инициализация приложения ..............................................................................285 Создание приложения (необязательная фаза) ...................................................286 Подготовка папки проекта ..................................................................................286 Развертывание приложения в Dash Enterprise ...................................................287 Заключение .....................................................................................................288 Глава 13. Следующие шаги .........................................................................290 Технические требования ................................................................................290 Развитие навыков в области анализа и подготовки данных .......................291 Исследование новых техник визуализации ..................................................292 Знакомство с другими компонентами Dash .................................................293 Создание собственных компонентов Dash ...................................................293 Реализация и визуализация моделей машинного обучения ......................294 Повышение эффективности и использование инструментов для работы с большими данными ...........................................................294 Масштабирование с Dash Enterprise .............................................................298 Dash Design Kit ......................................................................................................299 App Manager ..........................................................................................................299 Snapshot Engine ....................................................................................................299 Повышение производительности с помощью Job Queue ..................................300 Корпоративная безопасность ..............................................................................300 Консультационная служба ...................................................................................300 Заключение .....................................................................................................300 Предметный указатель ...............................................................................302
Предисловие от издательства Отзывы и пожелания Мы всегда рады отзывам наших читателей. Расскажите нам, что вы думаете об этой книге – что понравилось или, может быть, не понравилось. Отзывы важны для нас, чтобы выпускать книги, которые будут для вас максимально полезны. Вы можете написать отзыв на нашем сайте www.dmkpress.com, зайдя на страницу книги и оставив комментарий в разделе «Отзывы и рецензии». Также можно послать письмо главному редактору по адресу dmkpress@gmail.com; при этом укажите название книги в теме письма. Если вы являетесь экспертом в какой-либо области и заинтересованы в написании новой книги, заполните форму на нашем сайте по адресу http://dmkpress. com/authors/publish_book/ или напишите в издательство по адресу dmkpress@gmail. com. Список опечаток Хотя мы приняли все возможные меры для того, чтобы обеспечить высокое качество наших текстов, ошибки все равно случаются. Если вы найдете ошибку в одной из наших книг – возможно, ошибку в основном тексте или программном коде, – мы будем очень благодарны, если вы сообщите нам о ней. Сделав это, вы избавите других читателей от недопонимания и поможете нам улучшить последующие издания этой книги. Если вы найдете какие-либо ошибки в коде, пожалуйста, сообщите о них главному редактору по адресу dmkpress@gmail.com, и мы исправим это в следующих тиражах. Нарушение авторских прав Пиратство в интернете по-прежнему остается насущной проблемой. Издательства ДМК Пресс и Packt Publishing очень серьезно относятся к вопро сам защиты авторских прав и лицензирования. Если вы столкнетесь в интернете с незаконной публикацией какой-либо из наших книг, пожалуйста, пришлите нам ссылку на интернет-ресурс, чтобы мы могли применить санкции. Ссылку на подозрительные материалы можно прислать по адресу электронной почты dmkpress@gmail.com. Мы высоко ценим любую помощь по защите наших авторов, благодаря которой мы можем предоставлять вам качественные материалы.
Об авторе Элиас Даббас – практикующий специалист по онлайн-маркетингу, а также обработке и анализу данных. Совместив эти области, он нашел себя в проектировании программного обеспечения с открытым кодом для создания дашбордов и приложений для работы с данными. Также он специализируется на создании программ для интернет-маркетинга. Элиас является автором популярной библиотеки advertools для Python, предлагающей богатый выбор маркетинговых инструментов с уклоном в оптимизацию поисковых систем (SEO), поисковый маркетинг (SEM), сбор данных и текстовый анализ.
О рецензенте Леонардо Феррейра – бухгалтер, самостоятельно освоивший обработку и анализ данных до уровня Kaggle Grandmaster и выступающий разработчиком платформ в области аналитики данных. Он начал свое обучение в 2017 году и уже через несколько месяцев приступил к работе по изучаемой специальности. С тех пор Леонардо успел поработать в крупных бразильских и международных компаниях, реализовав более сотни проектов с открытым исходным кодом с портфолио на GitHub и Kaggle. Обладает статусом Top Rated Plus на фрилан- серской платформе Upwork, в рамках которой реализовал более 20 проектов по анализу данных. Также интересуется решениями на базе блокчейн-платформы Cardano.
Введение Фреймворк Dash от Plotly позволяет разработчикам Python создавать полноценные приложения для аналитической работы с данными и интерактивные дашборды. Книга, которую вы держите в руках, призвана помочь вам исследовать богатый функционал фреймворка Dash по визуализации данных и научиться извлекать максимум возможного из исходной информации. Начнем мы с описания экосистемы Dash, основных пакетов, входящих в состав этого фреймворка, а также сторонних библиотек, позволяющих структурировать данные для вашего приложения. После этого приступим к созданию первого приложения с использованием фреймворка Dash и добавлению в него базового функционала. Далее вы познакомитесь с такими специфическими элементами приложений, как выпадающий список, флажок, ползунок, календарь и др., а также научитесь связывать их с диаграммами и прочими элементами вывода. В зависимости от данных, которые вы визуализируете, вы будете использовать наиболее подходящие типы диаграмм, включая точечные диаграммы, линейные графики, столбчатые диаграммы, гистограммы, карты и пр., и узнаете, как можно адаптировать их под собственные нужды. Прочитав эту книгу, вы сможете разрабатывать и развертывать сложные интерактивные дашборды, производить многоступенчатый рефакторинг кода и оптимизировать написанные вами приложения. Для кого эта книга Книга, которую вы начинаете читать, предназначена для специалистов по работе с данными и аналитиков, желающих больше узнать о своих исходных данных при помощи интерактивных дашбордов, включающих полный спектр визуализаций. Предполагается, что вы хотя бы на базовом уровне знаете язык программирования Python. Это поможет вам быстрее и лучше усвоить техники, описанные в книге. Структура книги Глава 1. Знакомство с экосистемой Dash. В данной главе вы познакомитесь с общей экосистемой фреймворка Dash, пакетами, входящими в его состав, а также сторонними библиотеками. Прочитав эту вводную главу, вы научитесь отличать разные элементы приложения и узнаете, для чего предназначен каждый из них. В качестве бонуса вы даже создадите свое первое простое приложение. Глава 2. Структура приложений Dash. Из этой главы вы узнаете, как можно добавить созданному ранее приложению интерактивности. Здесь вы познакомитесь с концепцией обратных вызовов (callback) и научитесь объединять разные визуальные элементы приложения. Вы также увидите, как
Введение с помощью функций обратного вызова можно позволить пользователю управлять содержимым одного визуального элемента посредством другого. Глава 3. Работа с объектом Figure. В третьей главе книги вы познакомитесь с ключевым объектом Figure, узнаете о его компонентах, а также о способах управления им и преобразовании его в различные форматы. Позже мы используем полученные навыки для создания особых типов диаграмм для нашего приложения. Глава 4. Подготовка и преобразование данных. Введение в Plotly Express. Здесь вы узнаете о форматах данных, наиболее пригодных для анализа. Также вы познакомитесь с пакетом Plotly Express и увидите, с какой легкостью можно с его помощью создавать диаграммы и связывать данные с элементами визуализации. Глава 5. Интерактивное сравнение данных при помощи столбчатых диаграмм и выпадающих списков. В этой главе мы немного глубже погрузимся в функционал диаграмм и изучим дополнительные возможности визуализации данных. После этого вы узнаете, как можно дать пользователю возможность выбрать сравниваемые элементы при помощи выпадающих списков. Глава 6. Исследование переменных при помощи точечной диаграммы и фильтрация наборов данных. В данной главе мы подробно рассмотрим один из наиболее популярных видов визуализации, а именно диаграмму рассеяния или точечную диаграмму. Как и в случае со столбчатой диаграммой, мы рассмотрим различные варианты настройки этого типа визуализации. Точечные диаграммы отличаются очень богатыми возможностями для настройки, включая управление размером точек в зависимости от выбранной переменной, исключение наложения точек друг на друга и вывод диаграммы с большим количеством точек данных. Глава 7. Работа с географическими картами и обогащение дашбордов при помощи языка разметки Markdown. В этой главе вы познакомитесь с еще одним распространенным типом визуализации. Существует множество способов отображения данных на карте. Мы рассмотрим два наиболее часто используемых: точечный (scatter map) и картограмма (choropleth map). Глава 8. Определение частотности данных с помощью гистограмм и построение интерактивных таблиц. Эта глава посвящена разным способам построения гистограмм и их настройки, а также разделению данных различными методами с последующим подсчетом результирующих значений. Глава 9. Машинное обучение: пусть данные говорят сами за себя. В этой главе вы узнаете о том, как работает кластеризация данных, и научитесь оценивать качество анализа. Также мы рассмотрим технику оценки кластеров и даже разработаем интерактивное приложение с реализацией кластеризации по методу k-средних. Глава 10. Ускорение работы приложений с помощью улучшений функций обратного вызова. Здесь мы поговорим об использовании обратных вызовов на базе шаблонов с целью динамической модификации приложения на основе взаимодействия с пользователем и других факторов.
Введение 15 Глава 11. Ссылки и многостраничные приложения. В данной главе будет представлена новая архитектура, позволяющая создавать многостраничные приложения. Также мы рассмотрим технику использования ссылок в качестве элементов ввода или вывода со взаимодействием с другими элементами приложения. Глава 12. Развертывание приложения. В этой главе мы обсудим вопросы развертывания созданного приложения на сервере с возможностью доступа к нему пользователям из любой точки мира. Здесь возможны разные варианты, и мы рассмотрим пару простых опций, которые могут оказаться полезными. Глава 13. Следующие шаги. В заключительной главе книги мы поговорим о том, как можно вывести написанное приложение на новый уровень. Здесь мы дадим определенные рекомендации, советы и ресурсы, которые вам, возможно, захочется изучить самостоятельно. Как извлечь максимум из книги Для выполнения примеров из книги вам понадобится стабильное соединение с интернетом. Если вы читаете книгу в формате PDF, мы рекомендуем вводить программный код вручную или использовать загруженный код из хранилища на GitHub (ссылка будет указана ниже). Это позволит вам избежать ошибок, связанных с копированием и вставкой текста. Загрузите сопроводительные файлы Сопроводительные файлы можно загрузить на странице книги на сайте издательства www.dmkpress.com. Загрузите цветные изображения По следующей ссылке вы можете скачать в виде PDF все рисунки и диаграммы, использованные в книге: https://static.packt-cdn.com/downloads/9781800568914_ ColorImages.pdf. Книга в видеофрагментах Сопроводительные видеофрагменты к этой книге можно посмотреть по адресу https://bit.ly/3vaXYQJ. Условные обозначения На протяжении книги мы будем использовать следующие условные обозначения и шрифты. Код в тексте: так в тексте книги мы будем обозначать код, имена таблиц баз данных, имена папок, файлов, расширения файлов, пути, ссылки, пользовательский ввод. Пример: «Наш набор данных будет состоять из файлов в папке data, находящейся в корне репозитория».