Как создавать простые приложения для Windows / GUI в области Data Science с минимальным обучением?

Почему приложение для ПК / Windows?

Наука о данных на ноутбуке Jupyter великолепна. Но вы хотите пойти дальше и развернуть свой проект / модель на облачном сервере. Для этого есть много отличных решений - с использованием таких библиотек, как Flask, Django или Streamlit.

См. Мою статью об использовании Streamlit для создания приложений для анализа данных.



Хотя облачные решения остаются наиболее популярным выбором, вы часто можете захотеть создать быстрое приложение с графическим интерфейсом для своих проектов в области науки о данных и машинного обучения. Например,

  • Чтобы протестировать модель машинного обучения с различными наборами данных. Вы можете просто перетащить CSV-файл на модель и построить кривую AUC / ROC. Приложение с графическим интерфейсом было бы неплохо, не так ли?
  • Постройте случайную переменную или статистическое распределение в заданном диапазоне и динамически управляйте параметрами с помощью графического интерфейса.
  • Быстро запускайте некоторые задачи обработки / предварительной обработки данных в наборе данных, взаимодействуя через графический интерфейс (вместо написания кучи повторяющегося кода)

В этой статье мы покажем, как создать такой графический интерфейс после минимальной кривой обучения и с помощью интуитивно понятного кода Python.

Что такое PySimpleGUI?

В экосистеме Python есть несколько очень популярных GUI-фреймворков, таких как Tkinter, PyQt и т. Д. Но часто они несколько раздуты и трудны для изучения для специалистов по данным, которые могут захотеть создавать простые приложения с минимальным кодированием, а не сосредотачиваться на создании крупные программы с графическим интерфейсом на уровне предприятия.

Обертка с простой кривой обучения

Согласно их веб-сайту, PySimpleGUI - это «Python GUI для людей - превращает Tkinter, Qt, Remi, WxPython в портативные удобные для людей интерфейсы Pythonic». По сути, он берет все эти популярные и хорошо зарекомендовавшие себя фреймворки графического интерфейса и объединяет их в единую библиотеку, которая чрезвычайно проста для изучения и создания приложений.

По сути, можно начать создавать работающие (и полезные) приложения с графическим интерфейсом с использованием этой библиотеки, приложив все усилия после полудня и начав базовое (не продвинутое) знакомство с Python. Вам даже не нужно писать одно определение класса для создания приложения с графическим интерфейсом!

Часто специалисты по обработке данных не имеют большого опыта в разработке программного обеспечения. Они могут получить огромную пользу от обучения и использования инструмента, который дает им возможность создавать небольшие целевые приложения с графическим интерфейсом для исследования данных, анализа и экспериментов с моделями машинного обучения и т. Д.

Поэтому я начал следующее репо с целью наполнить его короткими и целенаправленными скриптами Python, которые при запуске будут создавать настольные приложения.



В Интернете уже есть несколько качественных руководств по PySimpleGUI. Однако в этом репо я специально сосредоточен на создании простых демонстрационных программ, связанных с наукой о данных (простая аналитика, статистическое моделирование, визуализация и базовое машинное обучение), с использованием этого мощного инструмента построения графического интерфейса.

… Они несколько раздуты и сложны для изучения для специалистов по данным, которые могут захотеть создавать простые приложения с минимальным кодированием, а не сосредотачиваться на создании крупных программ с графическим интерфейсом на уровне предприятия.

Удивительные преимущества

  • Функции обратного вызова не требуются
  • Он использует конструкции Python для сокращения объема кода. Например, виджет настраивается на месте, а не на расстоянии нескольких строк кода.
  • Зависимость от одного пакета - обертывает Tkinter и не требует установки каких-либо других пакетов.
  • Одна и та же программа с графическим интерфейсом пользователя может выполняться на нескольких платформах с графическим интерфейсом пользователя, включая веб-браузер, без изменения исходного кода (только за исключением оператора импорта).
  • Возможность создавать графический интерфейс для нескольких платформ ОС - Windows, Linux, Raspberry Pi и Android (PyDroid3) - с очень незначительными изменениями.

По сути, с помощью этой библиотеки можно начать создавать работающие (и полезные) приложения с графическим интерфейсом пользователя, потратив на это один день после полудня и начав базовое (не продвинутое) знакомство с Python.

Примеры приложений

Установите библиотеку,

pip install pysimplegui

Вам также понадобится следующее для запуска примеров, показанных в этой статье,

  • Numpy
  • Панды
  • Матплотлиб
  • Scikit-Learn
  • Сиборн

(Наука о данных) Hello World

Простейшая программа в PySimpleGUI может печатать «Hello World» в маленьком окне. Но в духе науки о данных давайте сделаем нашу вводную программу более интересной и полезной, не так ли?

Вот такой скрипт. Назовем его GenRandom.py.

Перейдите в каталог, в котором находится этот скрипт, и запустите,

python GenRandom.py

Вы увидите простое всплывающее окно, в котором вы можете щелкнуть кнопку, чтобы вызвать функцию update (см. Код выше) столько раз, сколько хотите, чтобы сгенерировать случайное целое число от 1 до 99. Обратите внимание на цикл while True в коде для это действие бесконечного цикла.

Хотя это очень простой сценарий, в нем есть

  • макет (с аргументами стиля, например, size и font) и окно
  • элемент кнопки, который вызывает внешнюю функцию (событие)
  • функция обновления текстового элемента оконного объекта

По сути, мы можем пойти по тому же пути и добавить больше слоев макета, событий, логики и виджетов, чтобы создать мощные приложения для анализа данных.

Другие виджеты

Вот еще один сценарий, иллюстрирующий другие виджеты. Просто запустите команду python FontUpdate.py, и вы увидите всплывающее окно, в котором вы можете динамически обновить шрифт текста. Вот демонстрационное видео,

Сделайте это с помощью решателя уравнений

Запустите команду сценария python QuadraticEquation.py, и вы увидите всплывающее окно, в котором вы можете ввести коэффициенты квадратного уравнения и получить решение (даже если корни оказываются комплексными числами!)

Анализатор Pandas DataFrame

В этом примере мы показываем, насколько легко создать графический интерфейс, который взаимодействует с широко используемым объектом исследователями данных, например. Фрейм данных Pandas. Как обычно, вы запускаете скрипт,

python SimpleDataFrame.py

Вначале он попросит вас предоставить файл набора данных (CSV).

Когда вы нажимаете кнопку «Обзор», сначала отображается диалоговое окно браузера файлов. Убедитесь, что вы выбрали правильный набор данных для этой демонстрации из каталога data.

После того, как вы выберете cars.csv, вы увидите другие всплывающие подсказки,

Если вы нажмете «Да» в последнем запросе, вы увидите набор данных, который был прочитан в новом окне,

После того, как вы закроете это окно, появится новое всплывающее окно с вопросом, хотите ли вы увидеть описательную статистику по этому набору данных. Если вы нажмете «Да», вы увидите что-то вроде этого:

После того, как вы закроете это окно, другое всплывающее окно спросит, хотите ли вы увидеть образец графика. Если вы нажмете «Да», вы увидите что-то вроде этого:

Генератор случайных диаграмм рассеяния

Это приложение предназначено для демонстрации возможности создания динамического сюжета при взаимодействии с пользователем. Скрипт находится здесь. Когда вы запустите его, появится окно с простой кнопкой, которую вы можете нажимать столько раз, сколько захотите, каждый раз генерируя случайную диаграмму рассеяния. Конечно, в фоновом режиме он использует Numpy и Matplotlib.

Приложение для подбора кривой

Специалисты по обработке данных и аналитики всегда подгоняют кривые или аналитические функции к некоторым данным. Легко создать простое приложение, в котором вы сможете продемонстрировать это с помощью PySimpleGUI.

Вот - сценарий. Когда вы запустите его, появится окно с кнопками для создания и установки полиномиальной функции 2-й степени. Более того, мы также добавили небольшой ползунок для регулировки уровня гауссовского шума, добавляемого к данным. Короче говоря, этот пример показывает, как интегрировать основные функции подгонки данных в облегченный графический интерфейс.

Пример подгонки модели Scikit-learn

Наконец, мы подошли к настоящему примеру машинного обучения. Мы покажем, как создать простое приложение, которое позволяет вам загрузить набор данных диабет индейцев пима и подобрать модель случайного леса к этим данным с помощью Scikit-learn в фоновом режиме.

Скрипт находится здесь. На рисунке ниже показан запуск этой программы с графическим интерфейсом. Обратите внимание, что он охватывает стандартные процессы, как вы ожидаете от программы машинного обучения.

  • загрузка набора данных
  • параметры для удаления значений NaN и указания, есть ли у столбцов заголовки
  • отображение набора данных
  • отображение описательной статистики
  • выбор выходного столбца из списка, который заполняется автоматически при загрузке набора данных
  • простая программа проверки ошибок для выходного столбца
  • запуск алгоритма классификации машинного обучения в фоновом режиме и отображение точности в графическом интерфейсе

Резюме

Мы описали простую и мощную библиотеку Python для создания программ с графическим интерфейсом пользователя и обсудили ее преимущества по сравнению с более известными библиотеками. Было написано множество отличных руководств по программированию графического интерфейса пользователя с помощью Python, но в этой статье мы показали конкретные примеры, связанные с наукой о данных и математическим программированием, аспект, который отсутствует в традиционных руководствах.

Вот официальная поваренная книга библиотеки.



В этой статье мы показали примеры, охватывающие

  • различные типы виджетов для управления пользователем
  • ввод и вывод данных - чтение файла и построение графика
  • традиционные библиотеки науки о данных, например Numpy, Pandas, Matplotlib и Scikit-learn.

Очевидно, что на этих примерах можно построить гораздо больше для создания интуитивно понятных приложений с графическим интерфейсом для обработки данных. Я планирую продолжать добавлять такие примеры в свое репозиторий Github, которые вы можете разветвить или пометить, если хотите.

Понравилась статья? Станьте средним участником, чтобы продолжить обучение без ограничений. Я получу часть вашего членского взноса, если вы воспользуетесь следующей ссылкой, без дополнительных затрат.