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