Книжная полка Сохранить
Размер шрифта:
А
А
А
|  Шрифт:
Arial
Times
|  Интервал:
Стандартный
Средний
Большой
|  Цвет сайта:
Ц
Ц
Ц
Ц
Ц

Интерактивные дашборды и приложения с Plotly и Dash. Используем полноценный веб-фреймворк в Python на всю мощь - без JavaScript

Покупка
Артикул: 817287.01.99
Прочитав эту книгу, вы в полной мере освоите фреймворк Dash от Plotly, предоставляющий разработчикам Python блестящие возможности по созданию полноценных интерактивных веб-приложений и дашбордов без знания языка JavaScript. Вы научитесь создавать различные типы диаграмм; вставлять в приложение разнообразные элементы управления, включая кнопки, выпадающие списки, флажки, календари и т.д., и снабжать приложения динамическими страницами со ссылками. По прочтении книги вы будете обладать необходимыми навыками развертывания полноценных интерактивных приложений и дашбордов, выполнения многоступенчатого рефакторинга кода и оптимизации написанных вами приложений. Издание адресовано специалистам по работе с данными и аналитикам, желающим больше узнать о своих исходных данных при помощи интерактивных дашбордов.
Даббас, Э. Интерактивные дашборды и приложения с Plotly и Dash. Используем полноценный веб-фреймворк в Python на всю мощь - без JavaScript : практическое руководство / Э. Даббас ; пер. с англ. А. Ю. Гинько. - Москва : ДМК Пресс, 2023. - 306 с. - ISBN 978-5-97060-988-0. - Текст : электронный. - URL: https://znanium.com/catalog/product/2109589 (дата обращения: 10.05.2024). – Режим доступа: по подписке.
Фрагмент текстового слоя документа размещен для индексирующих роботов. Для полноценной работы с документом, пожалуйста, перейдите в ридер.
Элиас Даббас

Интерактивные дашборды 
и приложения с 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, находящейся в корне репозитория».