Всем привет, меня зовут Владислав, и в этом году я заканчиваю бакалавриат по направлению «Бизнес‑информатика». Данная статья является изложением моего личного опыта по разработке системы аналитики и презентации данных.
Я постарался сделать свою курсовую работу не просто формальной отпиской, а действительно полезным делом. Мне было важно разобраться в теме, научиться писать и понимать грамотный Python-код, анализировать результаты работы (я же всё-таки, Бизнес-информатик :) ) и предложить практические выводы — так, чтобы работа принесла реальную пользу и мне, и тем, кто с ней столкнётся.
Описание процесса работы
В рамках академической деятельности и выполнения курсовых работ, я занимался разработкой системы, которая могла бы из логов формата .txt строить интересную аналитику, на основе которой можно делать определённые выводы по течению процесса.
Исходные данные и требования — .txt файл (лог) системы F; Необходимо с помощью парсинга выделить основные моменты, по которым можно построить аналитику.
Выбор технологий — Python: streamlit, pandas, pm4py.
Для начала, нужно было построить архитектуру системы, чтобы понять как, что и с чем должно взаимодействовать.

На вход поступает «сырой» лог в формате.txt. В данном логе содержится временная метка, тип действия, само действие и некоторый «исполнитель» данного действия — пользователь системы F.

Затем данный лог преобразовывается в таблицу pandas.DataFrame, разбиваясь на четыре столбца: Дата, Время, Тип действия, Действие:

Затем в работу включается модуль построения статистики. Данный модуль выбирает из получившегося на предыдущем этапе ДатаФрейма необходимые столбцы и строит отдельные ДатаФреймы, которые было бы удобно визуализировать.
Например, метод create_df_total_time() из модуля statistics.py строит ДатаФрейм, в котором для каждого пользователя высчитывается его время, проведённое в системе.

Далее, построенные DataFrame отправлялись прямиком в класс Visualizer, который, используя plotly, делает красивую и ценную аналитику. В этом же классе, построенные диаграммы объединялись в один большой html-отчёт.


Мне показалось, что простой html-отчёт неудобно каждый раз открывать из директории, поэтому было решено добавить функционал отправки отчёта по почте (mail_sender). Здесь у меня, к сожалению, не получилось подключить gmail в силу внешних факторов, поэтому я использовал Яндекс Почту.
В результате, после отработки функционала и построенияотчёта — на почту приходит письмо:

Но в html было неудобно взаимодействовать с диаграммами и хотелось сделать какой‑то красивый интерфейс. Было принято решение создать web‑приложение. В качестве основной библиотеки для создания web'a, моим научным руководителем была порекомендована прекрасная библиотека — streamlit. В итоге получилось сделать интерактивный интерфейс и легко внедрить его в архитектуру.

Использовать может каждый
Следующим шагом является выведение моей системы в «свет». Нужно. чтобы человек, имеющий логи системы F, мог пользоваться моим приложением без особых проблем. В репозитории на GitHub расположена небольшая инструкция по работе с приложением, а также исходный код.

Естественно, выложил библиотеку в PyPi (не без проблем, но... всё получилось!)

Результаты и выводы
В результате работы получился инструмент, который создаёт готовое веб-приложение с базовой аналитикой, учитывая специфику системы F.
Я отправил письмо команде разработчиков системы F с предложением оценить мой подход. Если они заинтересуются, это может открыть новые возможности для интеграции или совместного развития функционала.
Заключение
Эта работа стала для меня мощным бустом в освоении Python, особенно в области обработки и анализа данных. Самое неожиданное открытие — я понял, что хочу связать с этим свою карьеру. Теперь я четко вижу свой трек развития: Data Engineering, Data Analysis или даже Machine Learning :-)
Отдельное спасибо моему научному руководителю за терпение, менторство и вдохновение. Его поддержка помогла мне определиться с профессиональными целями.
Я считаю, что для студента нет ничего лучше, чем самостоятельная работа над проектом, который в перспективе может быть полезен для настоящих систем. Возможно, этот проект поможет найти достойную работу, демонстрируя знания и навыки. Надеюсь, что моя работа будет полезна для системы F и в скором времени я получу ответ от владельцев F! А там... Как получится :-)