
Концепция финального проекта
Мы живем не только в цифровом пространстве искусственного интеллекта и программирования, но и в мире реальном. Именно в реальности мы имеем огромное количество проблем и ужасов, которые приходится не только решать, но и собирать о них статистику. Сбор статистики преступлений и её разумный анализ в будущем может помочь выделить сильные и слабые стороны государственной системы. Или как минимум может показать интересные и необычные результаты.
Я выбрала тему насилия потому что она всегда актуальна, ведь жестокость не имеет конца и способна принимать разнообразные формы.
Общие задачи задания по анализу данных и визуализации: 1. Выбрать данные, которые мне интересны, предпочтительно в табличной форме (Excel, CSV) 2. С помощью Pandas провести анализ данных и визуализацию 3. Стилизовать визуализацию, чтобы получить некоторую консистентную инфографику в оригинальном стиле


Вводная часть
О чем эта часть проекта: — Какие данные вы выбрали и где вы их нашли. — Объясните, почему вам было интересно проанализировать именно эти данные — возможно, они имеют особую ценность? — Какой вид графиков вы решили сделать (например, есть линейные, гистограммы, столбчатые диаграммы, сложенные графики, круговые диаграммы и т. д.) и почему?
Данные собраны из http://crimestat.ru/opendata — это портал правовой статистики с открытыми данными о состоянии преступности. Формат файлов на сайте: XML (eXtensible Markup Language — расширяемый язык разметки, язык программирования для создания логической структуры данных) и XSD (это язык описания структуры XML документа, содержит схему проекта).
Мне было интересно проанализировать эти данные, потому что нет ничего более увлекательного, чем считать статистику и выявлять причинно-следственные связи между данными. Люблю статистику нежной любовью.


Этапы работы
О чем эта часть проекта: — Расскажите, как вы обрабатывали данные. Желательно поэтапно прикреплять свой код. — Если пользовались нейросетями, то какими, для чего, какие промпты писали. — Как вы стилизовали графики. Возможно, вы выбрали какую-то референсную картинку или вдохновились чем-то и решили создать графики в определённом стиле. Если это так, покажите свои источники вдохновения.
Какие данные я собрала и как я обрабатывала имеющиеся данные?
Моя цель: вычислить сколько преступлений по 4 категориям было зарегистрировано и в каком соотношении. Попробую вычислить соотношения преступлений за период времени с 2014 по 2022 по регионам и в общем. Плюс сделаю инфографики с информацией за 2020, 2021 и 2022 годы отдельно, так как это наиболее актуальная сейчас информация. Буду сравнивать несколькие больших файлов с официально предоставленной информацией.
Преступления 4 категорий: 1. Особая тяжесть преступления 2. Тяжкие преступления 3. Средняя тяжесть преступления 4. Небольшая тяжесть преступления
Категории данных для сбора с сайта: 1. Всего зарегистрированных преступлений (чтобы код смог высчитать из него все что нужно) 2. Зарегистрировано преступлений особой тяжести 3. Зарегистрировано тяжких преступлений 4. Зарегистрировано преступлений средней тяжести 5. Зарегистрировано преступлений небольшой тяжести
Для написания рабочего кода я изучала дополнительную литературу и видео по теме, привожу список с основными источниками: 1. https://www.youtube.com/watch?v=MVtrwcrdRgY 2. https://www.youtube.com/watch?v=ejigSICOlrs 3. https://datastart.ru/blog/read/top-10-bibliotek-python-dlya-data-science 4. https://habr.com/ru/companies/piter/articles/745860/ 5. https://habr.com/ru/articles/809181/ 6. https://pandas.pydata.org/docs/ 7. https://cpp-python-nsu.inp.nsk.su/textbook/sec4/ch8 8. https://devpractice.ru/files/books/python/Matplotlib.book.pdf
Переформатировать файлы из XML в CSV или таблицы Excel для меня оказалось задачей сложной — слишком большой массив данных и ни один конвертер бесплатно браться за это дело не хотел. Поэтому я решила работать с исходными файлами, подстраиваясь под ситуацию.
В процессе работы над кодом я выявила специфику самого кода с данными файлами формата XML. Для того, чтобы адаптировать код под структуру XML файлов для меня было важно учесть, что сами данные имеют особенную структуру. В файлах содержатся теги под разные задачи. Например, есть < indicatorData >, внутри которых находятся строки < row >, данные о количестве преступлений содержатся в теге < value >. А ещё каждый < row > имеет временные метки и название региона.
Исходя из этого я извлекала данные из XML с использованием библиотеки Pandas (и внутренней структуры DataFrame). Помимо этой библиотеки пришлось воспользоваться библиотекой ElementTree XML API, потому что именно эта библиотека дает возможность нормально работать и редактировать XML-файлы. Ещё я попыталась поработать с библиотеками Matplotlib и Numpy, так как это достаточно популярные пакеты для визуализации и обработки данных в Python.
Подробнее про мои XML-файлы и то, как я их пыталась понять.
В файлах я нашла корневой элемент < data >, элемент < indicatorData > (группа данных по конкретному индикатору), элемент < row > (Каждый элемент < row > представляет собой отдельную запись для региона за определённый период)
Внутри них конкретные данные для каждого включая: < value > — Число зарегистрированных преступлений < report_period_begin > — начало отчетного периода (например, 1 января 2020 года) < region_name > — название региона, для которого собраны данные (например, «Псковская область» или «г.Санкт-Петербург») < report_period_end > — конец отчетного периода, в этих файлах он совпадает для всех строк
Скриншот исходных данных XML-файлов, с которым я работала
Какой общий алгоритм у меня был при работе над сбором данных для проекта: 1. Зайти на сайт: http://crimestat.ru/opendata 2. Выбрать нужные файлы формата XML, так как других вариантов нет (eXtensible Markup Language — это расширяемый язык разметки, предназначенный для хранения и передачи данных в структурированном виде) 3. Скачать их на свой ПК 4. Открыть https://colab.google/ 5. Создать там свой документ для кода, подписать его 6. Положить в документ файлы (положила 2-мя путями: загрузка файлов в соответствующий раздел вручную в среду Google Colab и через код: from google.colab import files uploaded = files.upload ()) 7. Пишу код, основываясь на вышеописанных учебниках и видеоуроках 8. Ищу и максимально быстро изучаю различные библиотеки Python по теме создания графиков и работы с XML-файлами 9. Правлю и редактирую код до тех пор, пока не получу удобоваримый, читаемый график того вида, который я хочу. Сначала я пробовала написать коды просто чтобы у меня получался график, потом перешла на работу с реальными массивами данных, подстраиваясь под ситуацию.


Графики: от поиска вдохновения до итога
О чем эта часть проекта: — Презентуйте ваши графики. Рекомендуемый объем: 4-5 графиков. — Прикрепите блокнот с кодом и датасет (загрузите их в любое облачное хранилище и дайте ссылку, проверьте доступность для просмотра и скачивания файла)
Поиск вдохновения для графиков по теме преступности
Поиск вдохновения для графиков от ИИ Leonardo AI
Скриншот работы над поиском вдохновения для инфографики от Leonardo AI
Промпты для инфографиков
Промпт 1: Make a simple black and white infographic on crime. The image should only contain a histogram or pie charts. The design is brutal and severe. No anime and realistic graphic.
Промпт 2: Create a detailed and visually striking infographic on the topic of crime.This version focuses on breaking down different aspects of crime, such as types of offenses, offender demographics, and the impact on victims, while maintaining a sleek, informative design. The infographic should feature a combination of colorful charts, maps, and icons to illustrate key crime statistics and trends. Include elements such as: Crime rate trends: A graph or timeline showing the evolution of crime rates over the past decades, using different colors for different crime types like violent crimes, theft, cybercrime and etc.
Графики
Сначала я решила сделать столбчатый и табличный инфографики, но по итогу оказалось, что наглядно они выглядят не очень понятно и красиво.
Поэтому в дальнейшем я решила делать только круговые инфографики, так как они наилучшим образом демонстрируют процентные соотношения различных категорий преступлений.
Преступления небольшой тяжести так же были исключены из инфографики, потому что, согласно теории когнитивной нагрузки Джона Свеллера, визуально человеческий мозг лучше всего воспринимает и запоминает до 3 крупных элементов.
Код для таблицы с четырьмя категориями преступления с 2014 по 2022 год
Код для таблицы с четырьмя категориями преступления с 2014 по 2022 год
Гистограмма всех преступлений по регионам России с 2014 по 2022 года
Код для Гистограммы всех преступлений по регионам России
Круговой график преступлений с 2014–2022 годы про преступления всех категорий по регионам России
Код для кругового графика преступлений с 2014–2022 года про преступления всех категорий по регионам России
Круговая инфографика: общее количество преступлений в России за все время с 2014 по 2022
Код для круговой инфографики


Цвета для круговых графиков отобраны в соотношении с уровнем преступления. Чем преступление тяжелее, тем цвет ярче.
Красный — в английской литературной традиции символизирует насилие и опасность — преступления особой тяжести (к особо тяжким относятся только умышленные преступления, похищение, изнасилование или убийство с особой жестокостью, создание и деятельность в ОПГ и т. д.)
Зеленый — во многих языческих и хтонических культах именно этот цвет являлся символом коварства, экспансивности, искушения, соблазна (даже в диснеевских мультфильмах злодеи часто подсвечиваются зеленым) — тяжкие преступления (посягательства против жизни, здоровья, телесной и половой неприкосновенности личности: убийства, причинения тяжкого вреда здоровью человека, изнасилования, посягательства против свободы: похищения человека, незаконное лишение свободы, торговля людьми, использование рабского труда и т. д.)
Синий — в картинах Пикассо это символ тревоги, страдания, холода — преступления средней тяжести (длительное (более 3 недель) расстройство здоровья; — значительная стойкая утрата общей трудоспособности менее чем на одну треть и т. д.)
Распределение преступлений по трём категориям для 2020 года
Распределение преступлений по трём категориям для 2021 года
Распределение преступлений по трём категориям для 2022 года


Код для распределения преступлений по трём категориям для 2020–2021 годов
Код для круговой диаграммы 2022 года
Описание применения генеративных моделей Модели: Leonardo AI и ChatGPT 4o mini
О чем эта часть проекта: — В случае использования ИИ, согласно новой редакции ПОПАТКУС, в презентацию необходимо добавить раздел «Описание применения генеративной модели», где будет объяснено, как и с какой целью применялся искусственный интеллект, а также указана использованная модель и предоставлена ссылка на неё.
В процессе работы над проектом были использованы такие инструменты, как: 1. https://leonardo.ai/ 2. https://chatgpt.com/
Они использовались в двух обстоятельствах: Первый искусственный интеллект нужен был для получения вдохновения на тему того, какие инфографики могут быть по дизайну, цветовому решению, композиции и т. д. ;
Второй искусственный интеллект был использован для самообучения. Когда я самостоятельно писала код и более 30 раз пыталась исправить код, то были ситуации, когда я не могла физически увидеть/понять ошибку и то, как её исправить. Тогда я просила машину указать мне на ошибки и объяснить почему они получились. Таким образом я повышала свою квалификацию как программистки на языке Python, внимательнее писала код и лучше видела ошибки.


Пример взаимодействия меня с ИИ