Доброго времени суток Дамы и Господа! Многим приходилось сталкиваться с необходимостью анализа большого количества данных при помощи Python по запросам начальства или коллег. Однотипные запросы поступают с определенной периодичностью, и не составляет труда подставить новые данные в свой код и провести анализ. Но иногда из-за определенной нагрузки не всегда хочется заниматься таким анализом. Намного проще сделать скрипт с графическим интерфейсом, чтобы сам заказчик для анализа данных мог нажать пару кнопок и получить желаемый результат. Тем более, можно изначально вложить в интерфейс столько «хотелок» заказчика для анализа, сколько будет душе угодно.

Покажу вам, как достичь желаемого на примере библиотеки для Python PySimpleGUI.

На сайте разработчиков размещены примеры по функционалу библиотеки, а также простые скрипты.

Пример скрипта вывода окна для ознакомления с функционалом библиотеки:

import PySimpleGUI as sg

sg.theme('DarkAmber')   
# Устанавливаем цвет внутри окна 
layout = [  [sg.Text('Некоторый текст в строке №1')],
            [sg.Text('Введите «хоть что-нибудь» в строку №2'), sg.InputText()],
            [sg.Button('Ввод'), sg.Button('Отмена')] ]

# Создаем окно
window = sg.Window('Название окна', layout)
# Цикл для обработки "событий" и получения "значений" входных данных
while True:
    event, values = window.read()
    if event == sg.WIN_CLOSED or event == 'Отмена': 
# если пользователь закрыл окно или нажал «Отмена»
        break
    print('Молодец, ты справился с вводом', values[0])

window.close()

Код понятен, легко можно адаптировать под свои задачи и вкусы. Мы можем менять в всплывающих окнах как цветовую схему окна, шрифта, так и цвет выделения текста (заднего фона текста). Поменяем настройки предыдущего окна:

Text('This is some text', font='Courier 12', text_color='blue', background_color='green')

И фраза «давай поиграем со шрифтами и цветом» звучит не так страшно.

Библиотека постоянно обновляется, так, в версии 4.6. количество тем было значительно увеличено и теперь их более 100.

Достаточно добавить в код theme('Название желаемой темы'), чтобы выбрать наиболее подходящую тему для задачи. Чтобы увидеть тему и список доступных тем библиотеки нужно вызвать функцию theme_previewer().

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

У библиотеки достаточно широкие возможности, вплоть до использования в написании игр (шахматы и пинг-понг описаны на сайте разработчиков).

Перейдем к простой визуализации кода для анализа данных дата-сета.

Для анализа данных нам на помощь приходят библиотеки Pandas DataFrame, NumPy, Matplotlib, воспользуемся кодом для анализа данных от разработчиков.

Для примера возьмем данные из файла sp500.csv в котором находится моментальный снимок индекса S&P500. В первой строке файла содержатся имена столбцов, а остальные 500 строк содержат информацию о пятистам крупнейших компаний США. 

После запуска скрипта работа происходит только в оконном режиме.

Открываем необходимый нам файл для анализа.

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

При ответе на вопрос «Данный файл содержит имена столбцов?» если указать «No» то согласно прописанному скрипту столбцам будут присвоены имена по типу 'Столбец0', 'Столбец1', и т.д. Далее выбираем необходимые параметры по имеющемуся датасету.

При просмотре загруженных данных мы видим данные в виде таблицы по нашему файлу.

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

Окно со статистикой включает расчет метрик, прописанных нами в скрипте, в примере включены такие данные как квартили, средняя, минимум, количество и медиану.

Статистика в примере представлена по всем данным датасета.

Выбор анализа можно представить по-разному:

  • в виде выпадающего списка:

  • обычного списка:

Библиотека также позволяет комбинировать различные элементы.

Вариантов визуализации достаточно, чтобы угодить самым искушенным аналитикам, можно вставить анимированные GIF изображения (с помощью UpdateAnimation ) или просто картинки.

После закрытия окна всплывает следующий вопрос – Хотим ли мы увидеть график по нашим данным.

Ну и ответ на данный вопрос вполне очевиден.

ИМХО: анализ без визуализации – не анализ.

При визуализации сразу видно наиболее прибыльные акции. График строится на основе загруженной библиотеки Matplotlib.pyplot. Для визуализации можно построить любой график, который заложен в данной библиотеке, так же можно использовать любую другую.

Не во всех организациях приветствуется использование и создание exe-файлов, но если разрешено, то это намного проще для конечного пользователя, чем работать с файлом скрипта и «тетрадкой».

Для создания exe-файла для нашего скрипта анализа, нам нужно установить PyInstaller или cx_freeze и использовать инструмент PySimpleGUI EXE Maker, его можно найти на GitHub в учетной записи PySimpleGUI. Это простой интерфейс для pyinstaller,  ссылка с инструкцией по работы с инструментом.

В итоге у нас получится файл, который заказчик анализа может запускать самостоятельно и производить свой анализ без отвлечения вас от других задач. PySimpleGUI одинаково хорошо работает на Mac, Linux и Windows, также разработчики библиотеки отвечают на вопросы и проблемы на GitHub.

Успехов в решении задач!

Комментарии (1)


  1. PosyaginK
    27.04.2022 09:23
    +1

    Круто. Я даже не слышал раньше об этой библиотеке. Теперь точно буду использовать ее.