![](https://habrastorage.org/getpro/habr/upload_files/067/c87/0fc/067c870fcaa73e22d7bf6ff274bb6adf.png)
Доброго времени суток Дамы и Господа! Многим приходилось сталкиваться с необходимостью анализа большого количества данных при помощи 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')
И фраза «давай поиграем со шрифтами и цветом» звучит не так страшно.
![](https://habrastorage.org/getpro/habr/upload_files/3b3/cbc/c5d/3b3cbcc5d825711432423c745e76432e.png)
Библиотека постоянно обновляется, так, в версии 4.6. количество тем было значительно увеличено и теперь их более 100.
Достаточно добавить в код theme('Название желаемой темы')
, чтобы выбрать наиболее подходящую тему для задачи. Чтобы увидеть тему и список доступных тем библиотеки нужно вызвать функцию theme_previewer().
![](https://habrastorage.org/getpro/habr/upload_files/c95/9ac/2e6/c959ac2e6d05a26903ee7be618402007.png)
Библиотека позволяет работать с большим количеством работающих окон, которые работают независимо с несколькими вкладками в каждом окне и счетчиками прогресса, которые обновляются одновременно.
![](https://habrastorage.org/getpro/habr/upload_files/339/2ce/b70/3392ceb700c8bdc96b96d3682508e9a8.png)
У библиотеки достаточно широкие возможности, вплоть до использования в написании игр (шахматы и пинг-понг описаны на сайте разработчиков).
Перейдем к простой визуализации кода для анализа данных дата-сета.
Для анализа данных нам на помощь приходят библиотеки Pandas DataFrame, NumPy, Matplotlib, воспользуемся кодом для анализа данных от разработчиков.
Для примера возьмем данные из файла sp500.csv в котором находится моментальный снимок индекса S&P500. В первой строке файла содержатся имена столбцов, а остальные 500 строк содержат информацию о пятистам крупнейших компаний США.
После запуска скрипта работа происходит только в оконном режиме.
Открываем необходимый нам файл для анализа.
![](https://habrastorage.org/getpro/habr/upload_files/edd/623/deb/edd623deb084e9241f67faabba0df87f.png)
После загрузки файла поочередно будут открываться окна согласно скрипту с вопросами для уточнения по данным и необходимому анализу.
При ответе на вопрос «Данный файл содержит имена столбцов?» если указать «No» то согласно прописанному скрипту столбцам будут присвоены имена по типу 'Столбец0', 'Столбец1', и т.д. Далее выбираем необходимые параметры по имеющемуся датасету.
![](https://habrastorage.org/getpro/habr/upload_files/d37/a8a/430/d37a8a43020ed4766ee489e2e8033f8f.png)
![](https://habrastorage.org/getpro/habr/upload_files/8d5/6cf/1da/8d56cf1dac48980c4c61b1a5f2ce4be0.png)
![](https://habrastorage.org/getpro/habr/upload_files/4aa/c79/920/4aac799206486ad45805309d0b4a540b.png)
При просмотре загруженных данных мы видим данные в виде таблицы по нашему файлу.
![](https://habrastorage.org/getpro/habr/upload_files/dd4/e7a/8a0/dd4e7a8a05e15f2cb9e7d03d3e74c178.png)
![](https://habrastorage.org/getpro/habr/upload_files/380/8d0/40a/3808d040a7b00d2575542e136562804d.png)
Библиотека позволяет работать как с загруженными в код алгоритмами расчета статистики, так и сделать диалоговое окно с выбором нужных расчётов.
![](https://habrastorage.org/getpro/habr/upload_files/503/74b/543/50374b543577a4f61c8c1de24f8de92a.png)
Окно со статистикой включает расчет метрик, прописанных нами в скрипте, в примере включены такие данные как квартили, средняя, минимум, количество и медиану.
![](https://habrastorage.org/getpro/habr/upload_files/fdc/ed2/2e0/fdced22e033ce1de7c0db1177c188fb9.png)
Статистика в примере представлена по всем данным датасета.
Выбор анализа можно представить по-разному:
в виде выпадающего списка:
![](https://habrastorage.org/getpro/habr/upload_files/5e6/d12/e55/5e6d12e55d55f08fa3fcb5f2458279d9.png)
обычного списка:
![](https://habrastorage.org/getpro/habr/upload_files/15f/428/dee/15f428dee1c93796af7e0b4df7d606d9.png)
Библиотека также позволяет комбинировать различные элементы.
![](https://habrastorage.org/getpro/habr/upload_files/e59/d65/dd9/e59d65dd99460c3d7351d1f00d4eef43.png)
Вариантов визуализации достаточно, чтобы угодить самым искушенным аналитикам, можно вставить анимированные GIF изображения (с помощью UpdateAnimation
) или просто картинки.
После закрытия окна всплывает следующий вопрос – Хотим ли мы увидеть график по нашим данным.
![](https://habrastorage.org/getpro/habr/upload_files/c48/2f2/d7f/c482f2d7fc90ff6bfdbccb3752217911.png)
Ну и ответ на данный вопрос вполне очевиден.
ИМХО: анализ без визуализации – не анализ.
![](https://habrastorage.org/getpro/habr/upload_files/d68/195/21c/d6819521ca23fee911addb36a5b6f4f1.png)
При визуализации сразу видно наиболее прибыльные акции. График строится на основе загруженной библиотеки Matplotlib.pyplot. Для визуализации можно построить любой график, который заложен в данной библиотеке, так же можно использовать любую другую.
Не во всех организациях приветствуется использование и создание exe-файлов, но если разрешено, то это намного проще для конечного пользователя, чем работать с файлом скрипта и «тетрадкой».
Для создания exe-файла для нашего скрипта анализа, нам нужно установить PyInstaller или cx_freeze и использовать инструмент PySimpleGUI EXE Maker, его можно найти на GitHub в учетной записи PySimpleGUI. Это простой интерфейс для pyinstaller, ссылка с инструкцией по работы с инструментом.
В итоге у нас получится файл, который заказчик анализа может запускать самостоятельно и производить свой анализ без отвлечения вас от других задач. PySimpleGUI одинаково хорошо работает на Mac, Linux и Windows, также разработчики библиотеки отвечают на вопросы и проблемы на GitHub.
Успехов в решении задач!