Всем привет, меня зовут Владислав, и в этом году я заканчиваю бакалавриат по направлению «Бизнес‑информатика». Данная статья является изложением моего личного опыта по разработке системы аналитики и презентации данных.

Я постарался сделать свою курсовую работу не просто формальной отпиской, а действительно полезным делом. Мне было важно разобраться в теме, научиться писать и понимать грамотный Python-код, анализировать результаты работы (я же всё-таки, Бизнес-информатик :) ) и предложить практические выводы — так, чтобы работа принесла реальную пользу и мне, и тем, кто с ней столкнётся.

Описание процесса работы

В рамках академической деятельности и выполнения курсовых работ, я занимался разработкой системы, которая могла бы из логов формата .txt строить интересную аналитику, на основе которой можно делать определённые выводы по течению процесса.

  • Исходные данные и требования — .txt файл (лог) системы F; Необходимо с помощью парсинга выделить основные моменты, по которым можно построить аналитику.

  • Выбор технологий — Python: streamlit, pandas, pm4py.

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

Архитектура системы F
Архитектура системы F

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

"Сырой" лог системы F
"Сырой" лог системы F

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

Полученный DataFrame по итогам парсинга лога
Полученный DataFrame по итогам парсинга лога

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

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

ДатаФрейм с общим временем, проведённым в системе
ДатаФрейм с общим временем, проведённым в системе

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

Диаграмма общего времени, проведённого на сервере в разрезе пользователей
Диаграмма общего времени, проведённого на сервере в разрезе пользователей
Здесь можно отследить кто, в какое время и сколько по длительности занимал систему F
Здесь можно отследить кто, в какое время и сколько по длительности занимал систему F

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

В результате, после отработки функционала и построенияотчёта — на почту приходит письмо:

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

Полный отчёт в web-интерфейсе на streamlit
Полный отчёт в web-интерфейсе на streamlit

Использовать может каждый

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

Вклад в развитие open-source
Вклад в развитие open-source

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

Результаты и выводы

В результате работы получился инструмент, который создаёт готовое веб-приложение с базовой аналитикой, учитывая специфику системы F.

Я отправил письмо команде разработчиков системы F с предложением оценить мой подход. Если они заинтересуются, это может открыть новые возможности для интеграции или совместного развития функционала.

Заключение

Эта работа стала для меня мощным бустом в освоении Python, особенно в области обработки и анализа данных. Самое неожиданное открытие — я понял, что хочу связать с этим свою карьеру. Теперь я четко вижу свой трек развития: Data Engineering, Data Analysis или даже Machine Learning :-)

Отдельное спасибо моему научному руководителю за терпение, менторство и вдохновение. Его поддержка помогла мне определиться с профессиональными целями.

Я считаю, что для студента нет ничего лучше, чем самостоятельная работа над проектом, который в перспективе может быть полезен для настоящих систем. Возможно, этот проект поможет найти достойную работу, демонстрируя знания и навыки. Надеюсь, что моя работа будет полезна для системы F и в скором времени я получу ответ от владельцев F! А там... Как получится :-)

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