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

Создай изображение постера к первому сезону сериала Очень Странные Дела, без надписей, опираясь на реальные постеры сериала
В своем анализе я использовала датасеты Jeffrey Lancaster c веб-сервиса GitHub (1). С помощью нейросети ChatGPT я преобразовала JSON-данные с этого сайта в CSV-таблицы для дальнейшего анализа. Я предпочла оставить данные на английском языке, поскольку некоторые обозначения, в том числе имена персонажей и названия локаций, не очень удачно переводятся на русский язык.
Для визуализации данных я выбрала несколько видов графиков: 1. Круговая диаграмма (наглядно видно количество сцен в кажом эпизоде) 2. Столбчатая диаграмма (хорошо показывает, насколько много есть сцен с участием определенных персонажей) 3. Линейчатая диаграмма с накоплением (соотношение цветов демонстрирует частоту появления определенных локаций) 4. Матричная визуализация в виде тепловой карты (показывает наличие связи между парой)
Палитра
Для оформления графиков я сгенерировала палитру из шести цветов, отсылающих к сериалу, с помощью нейросети ChatGPT. Визуализировала палитру я в виде бельгийских вафель, которые так любит главная героиня Одиннадцать.

Сгенерируй палитру из 6 цветов с кодами на основе цветов сериала Очень Странные Дела
Шрифт
В качестве шрифтового решения я выбрала шрифт ITC Benguiat, поскольку это фирменная гарнитура данного сериала, использованная в названии (2), (3).
Подготовка
В коде я использовала такие библиотеки, как pandas (работа с CSV-данными), matplotlib.pyplot (визуализация данных) и matplotlib.font_manager (загрузка и использование шрифтов). После я загрузила и считала CSV файлы, указав разделитель sep=', '
Количество сцен в каждом эпизоде
Данный график наглядно демонстрирует, что среди этих эпизодов первого сезона третий является самым насыщенным. Можно сделать вывод о том, что это произошло потому, что в первых двух эпизодах зрителя только знакомили с персонажами, миром сериала, а в следующем началась большая нагрузка по количеству сцен.
На основе данных из CVS файлов выше напиши код для создания круговой диаграммы. Название диаграммы должно быть «Количество сцен в каждом эпизоде»
Для начала были сгруппированы строки таблицы с одинаковым значением с помощью операции .groupby, в данном случае это идентификатор эпизода. Далее метод .size () подсчитывает количество строк (сцен) в каждой группе, а метод .reset_index () возвращает результат groupby в обычный DataFrame и создаёт столбец scenes_count с количеством сцен. После была задана цветовая палитра с фирменными цветами с помощью colors. Далее используется функция plt.figure () для создания области графика и plt.pie () для построения круговой диаграммы, где каждый сектор соответствует эпизоду. После идет ограничение количества цветов. Далее устанавливается название диаграммы с нужным шрифтом и цветом с функцией plt.title (), а plt.axis () устанавливает одинаковый масштаб по осям X и Y. Вызывается plt.show () для отображения графика.
Распределение локаций по эпизодам
Данный график демонстрирует, что Дом Байерсов и лес являются главными точками действия, там происходит большая часть событий. Изнанка же используется меньше всего, точечно, для создания драматического эффекта.
На основе данных из CVS файлов выше напиши код для создания линейчатой диаграммы с накоплением чтобы понять, сколько локаций в каждом эпизоде и сколько времени они занимают
Первым делом происходит группировка таблиц с помощью операции .merge, она объединяет таблицы сцены и локации по полю location_id. Далее операция .groupby группирует данные по эпизоду и названию локации. Метод .size () подсчитывает количество строк (сцен) в каждой группе. Далее метод .reset_index () превращает результат groupby обратно в обычный DataFrame и создаёт столбец scene_count. .pivot преобразует таблицу в формат episode_id, Локация 1, Локация 2 и т. д. Метод .fillna заменяет NaN на 0, это нужно для тех моментов, если в эпизоде нет сцен в локации — это 0, а не пропуск. Далее функция plt.figure () Создаёт фигуру с заданным размером. После идет построение самой линейчатой диаграммы с накоплением и настройка шрифтов, а также заголовков с помощью функций plt.title (), plt.xlabel () и plt.ylabel (). Далее функция .legend Добавляет легенду и поясняет, какой цвет соответствует какой локации. tight_layout () автоматически оптимизирует отступы. После график выводится на экран.
Количество сцен с участием персонажей
Исходя из данных этого графика можно сделать вывод, что Уилл Байерс является ключевым персонажем сериала, поскольку сцен с ним больше всего. Также много времени уделено таким персонажам, как Одиннадцать, Майк Уилер и Джойс Байерс, поскольку они имеют очень близкую связь с Уиллом.
На основе данных из CVS файлов выше напиши код для создания столбчатой диаграммы чтобы узнать количество сцен с участием персонажей
Для начала операция .merge объединяет таблицы сцены и персонажи по полю character_id. Затем операция .groupby группирует данные по имени персонажа. Метод .size () Подсчитывает количество строк (сцен) в каждой группе. После метод .reset_index () возвращает результат groupby в обычный DataFrame и создаёт столбец scene_count с количеством сцен. Далее происходит сортировка персонажей по убыванию количества сцен с помощью метода .sort_values (). Затем задается цветовая палитра с фирменными цветами и с помощью bar_colors берётся ровно столько цветов, сколько персонажей в данных. plt.figure () создаёт фигуру (область графика) с заданным размером. Далее функция plt.bar () строит саму столбчатую диаграмму. После оформляются подписи и с помощью функции plt.xticks () подписи персонажей поворачиваются на 45 градусов. Далее идет настройка шрифта и оформление заголовков и подписей с функциями plt.title (), plt.xlabel () и plt.ylabel (). Функция plt.tight_layout () автоматически настраивает отступы и график выводится на экран.
Тепловая карта совместных появлений персонажей
Посмотрев на данный график можно сделать вывод о том, что главными персонажами являются те, у кого много тёмных ячеек в строке и у которых высокая суммарная интенсивность связей. Они взаимодействуют с разными группами и связывают сюжетные линии. Блоки темных ячеек демонстрируют устойчивые группы персонажей, которых обычно связывает дружба или семья. Второстепенных же персонажей можно отличить по светлым или белым ячейкам, они редко пересекаются с кем-либо и выполняют вспомогательную роль в развитии сюжета.
На основе данных из CVS файлов выше напиши код для создания тепловой карты (adjacency/co-occurrence matrix) чтобы показать интенсивность/наличие связи между персонажами
Для начала для тепловой карты была импортирована библиотека itertools для получения нескольких удобных функций. Далее была импортирована библиотека для визуализации данных Seaborn для создания красивой и сложной диаграммы. После был задан фирменный шрифт. Далее происходит группировка: с помощью операции .merge таблицы сцен и персонажей соединяются, чтобы вместо character_id использовать читаемые имена персонажей, операция .groupby создаёт структуру одна строка = одна сцена, а значение = список персонажей, присутствующих в этой сцене. Следом идет удаление дубликатов и сортировка: функция set () убирает повторяющихся персонажей в одной сцене, а sorted () упорядочивает имена для корректного подсчёта пар. После функция combinations () модуля itertools создаёт все возможные пары персонажей, которые появились вместе в сцене. Далее модель pair_counts считает, сколько раз каждая пара персонажей появлялась вместе во всех сценах сериала. Дальше идет непосредственно создание матрицы смежности. Структура DataFrame создаёт квадратную матрицу, где строки и столбцы — это персонажи, а значения — интенсивность связи, матрица создается симметричной. После заполняется матрица, где co_matrix.loc отражает, что связь персонажей двусторонняя. Визуализация самой тепловой карты происходит с помощью функции sns.heatmap, она преобразует числовую матрицу в наглядную визуализацию, светлый цвет обозначает слабую или отсутствующую связь, а тёмный цвет — сильную связь. Далее с помощью функций plt.title (), plt.xticks () и plt.yticks () из библиотеки Matplotlib улучшается читаемость и подчеркивается смысл визуализации.
Заключение
В процессе изучения датасета по сериалу «Очень Странные Дела», я смогла получить важные выводы, основанные не на восприятии сериала во время просмотра, а на данных и их сравнении. Я выделила главных героев сериала, смогла изучить, насколько тесная связь между ними, поняла, какие локации являются ключевыми и какой из нескольких эпизодов был самым насыщенным по количеству сцен.
Таким образом, главными героями сериала в изученных сезонах по отведенному времени являются Уилл Байерс, Одиннадцать, Майк Уилер и Джойс Байерс. Семейная связь Уилла и Джойс Байерс занимает больше всего экранного времени, но немаловажной также является компания друзей: Майкл, Дастин, Лукас и Уилл. Самым насыщенным эпизодом из изученных стал третий, а действие в основном происходит в лесу или в доме Байерсов.
Описание применения генеративной модели
ChatGPT - генерация цветовой палитры (промпт указан в описании под ней) - преобразование JSON-данных с сайта в CSV-таблицы - обращения с целью генерации некоторого кода и рекомендаций для его улучшения, доработка проводилась вручную без его использования (например, добавление одинаковой палитры и шрифта в каждый график) (промпты для них указаны в описании под каждым) Gemini 3 Pro - создание обложки и нескольких изображений (промпты для них указаны в описании) Промпт для обложки: Создай изображение постера к первому сезону сериала Очень Странные Дела, без надписей, опираясь на реальные постеры сериала, разрешение 1140×1600 px Промпт для палитры: Создай изображение палитры из шести цветов 0B0C1A, B11226, FF6A00, 9A9A9A, 2E86AB, 040825, где цвета будут визуализировать 6 одинаковых бельгийских вафель в стиле минимализм
Источники
(1) https://github.com/jeffreylancaster/stranger-things (дата обращения 21.12.2025) (2) https://stranger-site.com/stranger-font.html?utm_referrer=https%3A%2F%2Fwww.google.com%2F (дата обращения 21.12.2025) (3) https://a-g-i.org/design/itc-benguiat-font (дата обращения 21.12.2025)