Работать с Data Science в Jupyter, конечно, очень приятно, но если вы хотите пойти дальше и развернуть свой проект или модель на облачном сервере, то здесь есть много отличных решений — с помощью Flask, Django или Streamlit. Хотя облачные решения по-прежнему самые популярные, часто хочется создать быстрое приложение с графическим интерфейсом. Например:
- Модель ML тестируется на различных наборах данных. Вы можете перетащить файлы CSV в модель и отрисовать кривую AUS/ROC. Здесь GUI проявит себя прекрасно, правда?
- Построить случайную переменную или статистическое распределение в заданном диапазоне и динамически управлять параметрами с помощью графического интерфейса.
- Быстро запустить некоторые задачи обработки или предварительной обработки данных в наборе с помощью GUI вместо того, чтобы писать кучу кода.
В этой статье мы покажем, как создать такой графический интерфейс, потратив минимум усилий на изучение библиотеки Python.
Что такое PySimpleGUI?
В экосистеме Python есть несколько очень популярных GUI-фреймворков, таких как Tkinter, PyQt и т. д. Но часто они несколько раздуты и трудны в изучении для специалистов по Data Science, которые могут захотеть написать простое приложение с минимумом кода, а не тратить время на разработку крупной программы с графическим интерфейсом на уровне энтерпрайза.
Обёртка, которую легко изучить
На сайте PySimpleGUI написано: «Python GUI для людей —трансформирует Tkinter, Qt, Remi, WxPython в портативные Pythonic-интерфейсы, дружественные людям». По сути, этот GUI-фреймворк берёт все эти популярные и хорошо зарекомендовавшие себя GUI-фреймворки и обёртывает их в единую библиотеку, которую просто изучить и затем собирать приложения. Вам даже не нужно писать определение класса, чтобы создать GUI-приложение! Часто специалисты по Data Science не имеют достаточно опыта в разработке. Они могут извлечь огромную пользу из изучения и применения инструмента, который даёт возможность создавать небольшие целевые приложения с графическим интерфейсом для изучения данных, их анализа, экспериментов с моделями ML и т. д. Поэтому я создал репозиторий, чтобы заполнять его короткими, целенаправленными скриптами, которые при запуске создают настольные приложения. Вот этот репозиторий. В сети уже есть несколько хороших туториалов о PySimpleGUI. В моём репозитории я уделяю особое внимание созданию простых демонстрационных программ, связанных с наукой о данных (простая аналитика, статистическое моделирование, визуализации и базовое машинное обучение), с использованием этого мощного инструмента построения графического интерфейса.
Преимущества обёртки
- Не нужно никаких обратных вызовов.
- Чтобы сократить объём кода, используются конструкции Python. Например, виджет настраивается прямо на месте, в котором он должен быть, а не на расстоянии нескольких строк кода от этого места.
- Зависит от одного пакета: обёртывает Tkinter и не требует установки других пакетов.
- Одна и та же программа с GUI может выполняться на нескольких платформах, включая веб-браузер, без изменения исходного кода, за исключением оператора импорта.
- Можно разрабатывать интерфейс для нескольких платформ ОС — Windows, Linux, Raspberry Pi и Android (PyDroid3) — с очень незначительными изменениями.
![Как сделать Data Science приложение для Windows (и не только) с графическим интерфейсом с помощью PySimpleGUI - 2 Как сделать Data Science приложение для Windows (и не только) с графическим интерфейсом с помощью PySimpleGUI - 2](https://www.pvsm.ru/images/2021/01/23/kak-sdelat-Data-Science-prilojenie-dlya-Windows-i-ne-tolko-s-graficheskim-interfeisom-s-pomoshyu-PySimpleGUI-2.png)
В принципе, можно начать создавать работающие (и полезные) приложения с GUI, имея базовые знания Python, и вы справитесь за день.
Примеры приложений
Установите библиотеку вот так: pip install pysimplegui
. Чтобы запустить примеры, вам также понадобятся эти библиотеки:
- Numpy.
- Pandas.
- Matplotlib.
- Scikit-learn.
- Seaborn.
Data Science «Hello World»
Простейшая программа в PySimpleGUI отобразит строку Hello World в маленьком окне. Но, в духе DS, давайте сделаем нашу вводную программу интереснее и полезнее! Вот скрипт. Назовём его GenRandom.py
.
![Как сделать Data Science приложение для Windows (и не только) с графическим интерфейсом с помощью PySimpleGUI - 3 Как сделать Data Science приложение для Windows (и не только) с графическим интерфейсом с помощью PySimpleGUI - 3](https://www.pvsm.ru/images/2021/01/23/kak-sdelat-Data-Science-prilojenie-dlya-Windows-i-ne-tolko-s-graficheskim-interfeisom-s-pomoshyu-PySimpleGUI-3.png)
Перейдите в каталог с этим скриптом, выполните команду python GenRandom.py
. Вы увидите простое всплывающее окно, в котором можно нажать кнопку, чтобы вызвать функцию обновления (см. код выше), чтобы сгенерировать случайное число от 1 до 99.
![Как сделать Data Science приложение для Windows (и не только) с графическим интерфейсом с помощью PySimpleGUI - 4 Как сделать Data Science приложение для Windows (и не только) с графическим интерфейсом с помощью PySimpleGUI - 4](https://www.pvsm.ru/images/2021/01/23/kak-sdelat-Data-Science-prilojenie-dlya-Windows-i-ne-tolko-s-graficheskim-interfeisom-s-pomoshyu-PySimpleGUI-4.gif)
Хотя это очень простой сценарий, в нём есть:
- макет (с аргументами стиля, например
size
иfont
) и окно; - элемент кнопки, который вызывает внешнюю функцию (событие);
- функция обновления текстового элемента в объекте окна.
По сути, чтобы создать мощные приложения для анализа данных, мы можем пойти по тому же пути и добавить больше слоёв макета, событий, логики и виджетов.
Другие виджеты
Вот еще один сценарий, иллюстрирующий другие виджеты. Просто запустите команду:
python FontUpdate.py
Вы увидите всплывающее окно, в котором сможете динамически обновлять шрифт текста. Вот демонстрационное видео:
![Как сделать Data Science приложение для Windows (и не только) с графическим интерфейсом с помощью PySimpleGUI - 5 Как сделать Data Science приложение для Windows (и не только) с графическим интерфейсом с помощью PySimpleGUI - 5](https://www.pvsm.ru/images/2021/01/23/kak-sdelat-Data-Science-prilojenie-dlya-Windows-i-ne-tolko-s-graficheskim-interfeisom-s-pomoshyu-PySimpleGUI-5.gif)
Решатель уравнений
Запустите команду python QuadraticEquation.py и вы увидите всплывающее окно, в котором можно ввести коэффициенты квадратного уравнения, чтобы решить его (даже если корни окажутся комплексными числами!).
![Как сделать Data Science приложение для Windows (и не только) с графическим интерфейсом с помощью PySimpleGUI - 6 Как сделать Data Science приложение для Windows (и не только) с графическим интерфейсом с помощью PySimpleGUI - 6](https://www.pvsm.ru/images/2021/01/23/kak-sdelat-Data-Science-prilojenie-dlya-Windows-i-ne-tolko-s-graficheskim-interfeisom-s-pomoshyu-PySimpleGUI-6.png)
Анализатор Pandas DataFrame
В этом примере мы показываем, как легко создать GUI, который взаимодействует с широко используемым объектом, например с Pandas DataFrame. Как обычно, вы запускаете скрипт командой python SimpleDataFrame.py. Вначале он запросит у вас файл набора данных (CSV).
![Как сделать Data Science приложение для Windows (и не только) с графическим интерфейсом с помощью PySimpleGUI - 7 Как сделать Data Science приложение для Windows (и не только) с графическим интерфейсом с помощью PySimpleGUI - 7](https://www.pvsm.ru/images/2021/01/23/kak-sdelat-Data-Science-prilojenie-dlya-Windows-i-ne-tolko-s-graficheskim-interfeisom-s-pomoshyu-PySimpleGUI-7.png)
При нажатии на кнопку «Обзор» сначала появится диалоговое окно просмотра файлов. Убедитесь, что вы выбрали подходящий для этой демонстрации набор данных.
![Как сделать Data Science приложение для Windows (и не только) с графическим интерфейсом с помощью PySimpleGUI - 8 Как сделать Data Science приложение для Windows (и не только) с графическим интерфейсом с помощью PySimpleGUI - 8](https://www.pvsm.ru/images/2021/01/23/kak-sdelat-Data-Science-prilojenie-dlya-Windows-i-ne-tolko-s-graficheskim-interfeisom-s-pomoshyu-PySimpleGUI-8.png)
После выбора cars.csv
появятся другие запросы:
![Как сделать Data Science приложение для Windows (и не только) с графическим интерфейсом с помощью PySimpleGUI - 9 Как сделать Data Science приложение для Windows (и не только) с графическим интерфейсом с помощью PySimpleGUI - 9](https://www.pvsm.ru/images/2021/01/23/kak-sdelat-Data-Science-prilojenie-dlya-Windows-i-ne-tolko-s-graficheskim-interfeisom-s-pomoshyu-PySimpleGUI-9.png)
![Как сделать Data Science приложение для Windows (и не только) с графическим интерфейсом с помощью PySimpleGUI - 10 Как сделать Data Science приложение для Windows (и не только) с графическим интерфейсом с помощью PySimpleGUI - 10](https://www.pvsm.ru/images/2021/01/23/kak-sdelat-Data-Science-prilojenie-dlya-Windows-i-ne-tolko-s-graficheskim-interfeisom-s-pomoshyu-PySimpleGUI-10.png)
![Как сделать Data Science приложение для Windows (и не только) с графическим интерфейсом с помощью PySimpleGUI - 11 Как сделать Data Science приложение для Windows (и не только) с графическим интерфейсом с помощью PySimpleGUI - 11](https://www.pvsm.ru/images/2021/01/23/kak-sdelat-Data-Science-prilojenie-dlya-Windows-i-ne-tolko-s-graficheskim-interfeisom-s-pomoshyu-PySimpleGUI-11.png)
Если вы нажмёте Yes на последней подсказке, то увидите набор данных, который был прочитан в новом окне:
![Как сделать Data Science приложение для Windows (и не только) с графическим интерфейсом с помощью PySimpleGUI - 12 Как сделать Data Science приложение для Windows (и не только) с графическим интерфейсом с помощью PySimpleGUI - 12](https://www.pvsm.ru/images/2021/01/23/kak-sdelat-Data-Science-prilojenie-dlya-Windows-i-ne-tolko-s-graficheskim-interfeisom-s-pomoshyu-PySimpleGUI-12.png)
После закрытия этого окна появится новое всплывающее окно с вопросом о том, хотите ли вы посмотреть описательную статистику этого набора данных. Если вы нажмете Yes, то увидите нечто подобное:
![Как сделать Data Science приложение для Windows (и не только) с графическим интерфейсом с помощью PySimpleGUI - 13 Как сделать Data Science приложение для Windows (и не только) с графическим интерфейсом с помощью PySimpleGUI - 13](https://www.pvsm.ru/images/2021/01/23/kak-sdelat-Data-Science-prilojenie-dlya-Windows-i-ne-tolko-s-graficheskim-interfeisom-s-pomoshyu-PySimpleGUI-13.png)
После закрытия этого окна ещё одно всплывающее окно спросит о том, хотите ли вы увидеть пример графика. Если вы нажмете Yes, то увидите что-то вроде этого:
![Как сделать Data Science приложение для Windows (и не только) с графическим интерфейсом с помощью PySimpleGUI - 14 Как сделать Data Science приложение для Windows (и не только) с графическим интерфейсом с помощью PySimpleGUI - 14](https://www.pvsm.ru/images/2021/01/23/kak-sdelat-Data-Science-prilojenie-dlya-Windows-i-ne-tolko-s-graficheskim-interfeisom-s-pomoshyu-PySimpleGUI-14.png)
Генератор случайных диаграмм рассеяния
Это приложение предназначено, чтобы продемонстрировать возможность создания динамического графика, который взаимодействует с пользователем. Скрипт лежит здесь. Когда вы запустите его, появится окно с простой кнопкой, которую вы можете нажимать столько раз, сколько хотите, каждый раз генерируя график случайного рассеяния. Под капотом, конечно, Numpy и Matplotlib.
![Как сделать Data Science приложение для Windows (и не только) с графическим интерфейсом с помощью PySimpleGUI - 15 Как сделать Data Science приложение для Windows (и не только) с графическим интерфейсом с помощью PySimpleGUI - 15](https://www.pvsm.ru/images/2021/01/23/kak-sdelat-Data-Science-prilojenie-dlya-Windows-i-ne-tolko-s-graficheskim-interfeisom-s-pomoshyu-PySimpleGUI-15.gif)
Приложение для подгонки кривой
Специалисты по DS и аналитики всегда подгоняют кривые или аналитические функции под некоторые данные. Легко создать простое приложение, где вы сможете продемонстрировать это с помощью PySimpleGUI.
Ядро — это скрипт. При запуске появляется окно с кнопками для генерации и установки полиномиальной функции 2-й степени. Более того, мы также установили небольшой ползунок, чтобы настроить уровень гауссовского шума, который добавляется к данным. Вкратце в этом примере показывается, как основные функции подбора данных интегрируются в легкий графический интерфейс:
![Как сделать Data Science приложение для Windows (и не только) с графическим интерфейсом с помощью PySimpleGUI - 16 Как сделать Data Science приложение для Windows (и не только) с графическим интерфейсом с помощью PySimpleGUI - 16](https://www.pvsm.ru/images/2021/01/23/kak-sdelat-Data-Science-prilojenie-dlya-Windows-i-ne-tolko-s-graficheskim-interfeisom-s-pomoshyu-PySimpleGUI-16.gif)
Пример обучения модели Scikit-learn
Наконец-то мы снисходим до примера настоящего ML. Мы покажем, как построить простое приложение, позволяющее загрузить набор данных Pima Indians diabetes и обучить модель Случайного леса на этих данных с помощью Scikit-learn в фоновом режиме. Скрипт лежит здесь. На рисунке ниже показывается работа этой программы с графическим интерфейсом. Обратите внимание, что она охватывает стандартные процессы, как ожидается от программы машинного обучения:
- загрузка набора данных;
- опции для сброса значений NaN и указания на то, есть ли в колонках заголовки;
- отображение набора данных;
- отображение описательной статистики;
- выбор выходного столбца из списка, который автоматически заполняется, когда загружается набор данных;
- простая проверка на ошибки для выходной колонки;
- запуск алгоритма классификации в фоновом режиме и отображение точности в графическом интерфейсе:
![Как сделать Data Science приложение для Windows (и не только) с графическим интерфейсом с помощью PySimpleGUI - 17 Как сделать Data Science приложение для Windows (и не только) с графическим интерфейсом с помощью PySimpleGUI - 17](https://www.pvsm.ru/images/2021/01/23/kak-sdelat-Data-Science-prilojenie-dlya-Windows-i-ne-tolko-s-graficheskim-interfeisom-s-pomoshyu-PySimpleGUI-17.gif)
Резюме
Мы описали простую и мощную библиотеку Python для построения GUI программ и обсудили её преимущества по сравнению с более устоявшимися библиотеками. Уже написано много отличных учебников по программированию с использованием графического интерфейса на Python, но в этой статье мы показали ориентированные примеры, связанные с наукой о данных и математическим программированием, с аспектом, которого не хватает в традиционных учебниках. Вот официальная «книга рецептов» библиотеки.
Cookbook — PySimpleGUI не так давно вернула в название слово Cookbook, поэтому использовалась устаревшая документация pysimplegui.readthedocs.io.
В этой статье мы показали примеры из списка ниже:
- различные виды виджетов для управления;
- ввод и вывод данных — чтение файлов и генерация графиков;
- традиционные библиотеки DS: Numpy, Pandas, Matplotlib, и Scikit-learn.
Очевидно, что на этих примерах можно построить гораздо больше интуитивно понятных GUI-приложений для работы с данными. Я планирую продолжать добавлять такие примеры в свой репозиторий на Github, их вы можете форкнуть или отметить звёздочкой, если захотите. Посмотрите мои репозитории, там есть не только код, но идеи и ресурсы по ML и Data Science.
А если хотите учиться ML и Data Science — приходите к нам, будет сложно но интересно. А промокод HABR, добавляющий 10% к скидке на баннере, вам поможет.
![Как сделать Data Science приложение для Windows (и не только) с графическим интерфейсом с помощью PySimpleGUI - 18 image](https://www.pvsm.ru/images/2021/01/23/kak-sdelat-Data-Science-prilojenie-dlya-Windows-i-ne-tolko-s-graficheskim-interfeisom-s-pomoshyu-PySimpleGUI-18.png)
- Профессия Data Scientist
- Профессия Data Analyst
- Курс по Machine Learning
- Курс «Математика и Machine Learning для Data Science»
- Профессия Frontend-разработчик
- Профессия Веб-разработчик
- Профессия Этичный хакер
- Профессия C++ разработчик
- Профессия Java-разработчик
- Профессия Разработчик игр на Unity
- Профессия iOS-разработчик с нуля
- Профессия Android-разработчик с нуля
КУРСЫ
- Курс по JavaScript
- Курс «Алгоритмы и структуры данных»
- Курс «Python для веб-разработки»
- Курс по аналитике данных
- Курс по DevOps
Автор: Picard