Original size 1024x1536

Кровавая астрология

PROTECT STATUS: not protected

Концепция

В своем проекте я исследую связь между известными серийными убийцами и астрологией. С помощью визуализации данных я попыталась проследить возможные закономерности между знаком зодиака, страной, полом преступника и числом жертв. Исследование построено на основе открытого датасета (Serial Killers by Zodiac Sign, kaggle.com) и не претендует на научную достоверность. Также я сама не верю в астрологию, поэтому мне было еще интереснее провести эксперимент, чтобы вывести, возможно, интересную статистику.

Данные

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

Виды графиков

Круговая диаграмма — процентное распределение знаков зодиака среди всех преступников Четкая наглядная визуализация, подходящая для подобных данных.

Столбчатая диаграмма — распределение пола маньяков по знакам зодиака Разделение по полу позволяет посмотреть, есть ли перекос в каких-либо знаках.

Тепловая карта (heatmap) — количество маньяков по странам и знакам зодиака Помогает увидеть региональные паттерны.

Lollipop chart — количество подтверждённых жертв у преступников каждого знака зодиака Редкий тип графика, визуально отличающийся от других.

Оформление

Тематика проекта — маньяки и убийства — напрямую связана с мраком и кровью. Кроваво-бордовая палитра подчёркивает настроение исследования и при этом остаётся стилистически сдержанной и графически выразительной.

Этапы работы

1. Использование нейросети

Для реализации проекта я активно использовала ChatGPT в качестве помощника по анализу данных и генерации кода. Я писала подробные промпты, описывая желаемый результат: от очистки данных до стилизации графиков. ChatGPT: — Помог с предобработкой данных (очисткой от пропусков, фильтрацией по признакам) — Предлагал подходящие типы визуализаций для разных задач — Генерировал код на Python (с использованием pandas, matplotlib, seaborn) — Помогал со стилистикой графиков и разработкой цветовой палитры — Создал обложку проекта в генеративной нейросети на основе промпта

2. Обработка данных

#Импорт и первичный осмотр

import pandas as pd from google.colab import files

file_name = list (uploaded.keys ())[0]

df = pd.read_excel (file_name)

df.head (10)

#Убираем строки со значением «Unknown» для более чистой статистики

birth_s = df['Birthdate'].astype (str).str.strip ().str.lower () zodiac_s = df['Zodiac sign'].astype (str).str.strip ().str.lower ()

mask = (birth_s ≠ 'unknown') & (zodiac_s ≠ 'unknown')

df = df[mask].reset_index (drop=True)

print («Остаток строк:», len (df)) print (df[['Name', 'Country', 'Birthdate', 'Zodiac sign']].head ())

3. Построение графиков

#Настраиваем общие параметры

import matplotlib.pyplot as plt import seaborn as sns

#Пастройка палитры my_palette = ['4B1F1F', '6E2C2C', '8C3B3B', 'B05050', 'D96767']

#Применяем палитру к seaborn sns.set_palette (my_palette)

#Круговая диаграмма

import matplotlib.pyplot as plt

zodiac_counts = df_clean['Zodiac sign'].value_counts ()

bordo_red_palette = ['4B000F', '6A0D1E', '800020', 'A52A2A', '8B0000', 'B22222', '7B1B1B', '9B2D30', '5C1A1A', '7F3A3A', '6F1E1E', '531818']

plt.figure (figsize=(8,8)) plt.pie ( zodiac_counts, labels=zodiac_counts.index, autopct='1.1f', colors=bordo_red_palette, textprops={'fontsize': 14, 'color': '330000'}, labeldistance=1.1)

plt.title ('Распределение маньяков по знакам зодиака', fontsize=18, color='#330000') plt.show ()

#Столбчатая диаграмма

plt.figure (figsize=(12,6)) sns.barplot (data=zodiac_gender_counts, x='Zodiac sign', y='Count', hue='Gender')

plt.title ('Распределение знаков зодиака по полу', fontsize=18,) plt.xlabel ('Знак зодиака', fontsize=14) plt.ylabel ('Количество маньяков', fontsize=14) plt.legend (title='Пол')

plt.show ()

#Heatmap

import matplotlib.pyplot as plt import seaborn as sns from matplotlib.colors import LinearSegmentedColormap

bordo_colors = ['4B000F', '7B1B1B', 'A52A2A', 'B22222', 'D42E2E', 'E06666', 'F2A6A6']

#Инветируем палитру, чтобы темные цвета соответствовали большим значениям bordo_cmap = LinearSegmentedColormap.from_list ('bordo_cmap', bordo_colors[: -1], N=256)

#Создаем сводную таблицу heatmap_data = df_clean.pivot_table (index='Country', columns='Zodiac sign', values='Name', aggfunc='count', fill_value=0)

plt.figure (figsize=(14,10)) sns.heatmap ( heatmap_data, cmap=bordo_cmap, linewidths=0.5, linecolor='gray', annot=True, fmt='d', cbar_kws={'label': 'Количество маньяков'})

plt.title ('Распределение маньяков по странам и знакам зодиака', fontsize=18, color='#4B000F') plt.xlabel ('Знак зодиака', fontsize=14, color='#4B000F') plt.ylabel ('Страна', fontsize=14, color='#4B000F') plt.xticks (rotation=45) plt.yticks (rotation=0) plt.show ()

#Lollipop chart

import matplotlib.pyplot as plt

#Считаем среднее количество жертв zodiac_victims_mean = df_clean.groupby ('Zodiac sign')['Proven victims'].mean ().sort_values ()

line_color = '800000' dot_color = 'FF4D4D'

plt.figure (figsize=(12, 6)) plt.hlines (y=zodiac_victims_mean.index, xmin=0, xmax=zodiac_victims_mean.values, color=line_color, linewidth=2) plt.plot (zodiac_victims_mean.values, zodiac_victims_mean.index, «o», color=dot_color, markersize=8)

plt.title ('Среднее число жертв по знакам зодиака', fontsize=16, color='#4B000F') plt.xlabel ('Среднее число жертв', fontsize=12) plt.ylabel ('Знак зодиака', fontsize=12) plt.grid (axis='x', linestyle='--', alpha=0.5) plt.tight_layout () plt.show ()

Визуализация данных

Круговая диаграмма

Original size 688x663

Круговая диаграмма, показывающая распределение маньяков по знакам зодиака, выявила явное преобладание некоторых знаков — например, козерогов, скорпионов и рыб — и заметную редкость других, таких как львов и дев, что указывает на неравномерность, хотя теоретически все знаки должны были бы быть представлены примерно равномерно. Несмотря на то что это может быть статистическим совпадением, визуализация цепляет внимание и задаёт интригующий тон всему исследованию: а вдруг за этим действительно стоит нечто большее?

Столбчатая диаграмма

Original size 1005x561

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

Heatmap

Original size 1203x927

Тепловая карта показывает, что в разных странах преобладают разные знаки, но явной универсальной закономерности нет, однако заметно выделяются Россия (СССР) и Соединенные Штаты, что объясняется большим количеством убийц в сравнении с остальными государствами. В основном, в контексте этого графика можно говорить скорее о культурных и демографических особенностях, чем о зодиакальной зависимости.

Lollipop chart

Original size 1177x577

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

Источники

Serial Killers by Zodiac Sign [Электронный ресурс] // Kaggle. — URL: https://www.kaggle.com/datasets/carolineamaro/serial-killers-by-zodiac-sign (дата обращения: 13.06.2025).

Кровавая астрология
We use cookies to improve the operation of the HSE website and to enhance its usability. More detailed information on the use of cookies can be fou...
Show more