Выборы прошли 17-19 сентября, и новости о них постепенно уходят из повестки. Однако, результаты выборов - это не только таблица с итоговым процентом голосов за партии и кандидатов. Это большой массив данных, который был сформирован при участии миллионов людей. Эти данные содержат в себе тысячи историй, которые не расскажет итоговая таблица.

Сразу после выборов быстро появилась аналитика результатов выборов от Сергея Александровича Шпилькина. Меня заинтересовала методика, по которой строились графики зависимостей результатов партий на участках от явки на участках. Я участвовал в наблюдении за ходом выборов по месту жительства и у меня были данные результатов по каждой участковой избирательной комиссии (УИК) по моему округу. Я построил график по этой методике для двух партий - "Единая Россия" и "КПРФ", так как эти две партии лидировали в моем районе.

Так как точек было не много, можно было подписать каждую точку номером УИКа и задать узнаваемую геометрию - синий квадрат для "Единой России" и красный круг для "КПРФ". Получилось очень нагрядно. Часть участков сгрупировались в одной области. Результаты "КПРФ" и "Единой России" в этой области практически совпадали. Две точки расположились в области более высокой явки и результаты партий там существенно расходились. Это были УИКи с номерами 3611 и 4002. На сайте ЦИК я нашел местонахождение этих УИКов. Оказалось, что один располагался в Институте хирургии им. А.В.Вишневского, а другой - на Павелецком вокзале. То есть эти участки, очевидно, имели электорат, который существенно отличался в своих предпочтениях от среднего по району. На остальных участках аномального голосования не происходило.

Вскоре появились данные по всем участкам России в файле .xlsx. Точно не знаю кто парсил сайт ЦИКа, но выражаю огромную благодарность за эту работу! Я подумал, что мог бы создать веб приложение, которое смогло бы строить подобные графики для всех районов Москвы, а заодно и платформу, на основе которой можно было бы легко визуализировать данные в других разрезах.

Для своих целей я выбрал веб фреймворк Django, так как это один из самых популярных фреймворков на Python. А на Python, как известно, существует много мощных библиотек для работы с данными. Для обработки данных я импортировал библиотеку Pandas. Для построения графиков - MatplotLib. Исходные данные я переписал из .xls файла в базу данных SQLite. На основе этой платформы мне удалось довольно быстро создать демо приложение. Оно не отличается изысканным дизайном, но работает. Для начала я посчитал итоги выборов. Они сошлись с результатами ЦИКа. Значит данные полные. Приложение я разместил на домене duma-21.ru. Исходный код и данные находятся на GitHub.

Возможно, среди сообщества Хабра, найдутся люди, которым интересен анализ данных по прошедшим выборам и они смогут использовать эту платформу для реализации своего проекта. Напишите, пожалуйста, что вы думаете. Нужен ли еще один проект с визуализацией данных по итогам выборов или достаточно инструментов, которые присутствуют на сайте ЦИКа? Есть ли у вас идеи, как еще можно использовать данные выборов, чтобы они рассказали интересную историю?

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


  1. mtex
    11.10.2021 17:50
    +4

    Инструменты нужны, разумеется. То, что предоставляет ЦИрК, сложно назвать инструментами.

    Данные, я думаю, пригодятся в дальнейшем для народного трибунала.


  1. Okmor
    12.10.2021 12:02

    Мне кажется, что данные ЦИК уже никого не интересуют. Они настолько крывые, что их анализировать даже не интерестно.

    Очень грустная история.


    1. zzzzbh Автор
      12.10.2021 12:33
      +1

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


      1. Fragster
        12.10.2021 14:06
        +1

        Как бы пометить участки с наблюдателями, без наблюдателей и с удаленными наблюдателями. Но такой информации в открытом виде нет :(


        1. zzzzbh Автор
          12.10.2021 15:00

          Это хорошая идея! По наблюдателям, наверно, только у партий есть информация, но по составу комиссий на УИКах есть открытые данные. Можно посмотреть как будет итоговый результат меняться в выборке УИКов, где есть/нет от определенной партии члена комиссии.


    1. il--ya
      10.11.2021 00:11

      Не соглашусь, из любых, даже фальсифицированных итогов, можно сделать много разных выводов. В частности, можно понять, что, где, как и почему фальсифицировали, и (что важнее, по-моему) - где как и почему не фальсифицировали.

      Мне вот, в частности, стало интересно, в каких регионах было меньше всего фальсификаций (где вбрасывали больше всего - мы и так знаем, это не так интересно).


  1. il--ya
    10.11.2021 00:22

    Большое спасибо, очень круто.

    Было бы совсем круто ещё карту прикрутить, и на ней показывать разные параметры по регионам, в частности heatmap процента голосов по выбранной партии, явки.

    И было бы совсем здорово какой-то отдельный параметр сделать "аномальное голосование" - и опять же с heatmap по регионам. Можно конечно использовать голоса за ЕР в качестве оценки аномальных голосов в первом приближении, но это грубовато - где-то ведь действительно больше голосуют за ЕР, а где-то меньше.

    В любом случае, то что уже сделано - очень здорово, спасибо.

    PS: опечатка: "Выбарите город"