Сделай то, сделай это, сделай сам

Доброго времени суток Дамы и Господа! Многим приходилось сталкиваться с необходимостью анализа большого количества данных при помощи 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.

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

8
3 комментария

Спасибо, интересно. Не программист, но попробую)

1
Ответить
Автор

Рады помочь!

Ответить

Комментарий недоступен

Ответить