Original size 1240x1750

Анализ Японских фестивалей

PROTECT STATUS: not protected

Почему я выбрала данные о японских традиционных фестивалях

Я выбрала эту тему, потому что японские фестивали — это не просто праздники, а живое культурное наследие, которое объединяет религию, историю, искусство и современную жизнь. Мне было интересно взглянуть на них не через туристические фотографии, а через данные: сколько людей приезжает, какие типы фестивалей существуют, есть ли у них сезонность, как менялась их популярность с веками.

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

Структуирование данных

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

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

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

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

Визуализация

· Горизонтальная столбчатая диаграмма · Кольцевая диаграмма · Тепловая карта · Столбчатая диаграмма · Линейный график

Графики оформлены в прилушенных и в ярких оттенках, создавая динамику самого прздника, как сочетание нежного розовых цветов сакуры и ярких воздушных змеев.

Загрузка данных

Для работы я импортировала библиотеки: pandas для обработки и анализа данных, matplotlib.pyplot и seaborn для визуализации, а также numpy для математических операций. Все графики я создавала в Google Colab.

Поскольку я решила исследовать именно японские традиционные фестивали, я создала собственный датасет на основе открытых источников (Japan National Tourism Organization, официальные сайты префектур). В таблицу вошли 50 фестивалей с такими характеристиками: название, город, префектура, тип фестиваля, месяц проведения, количество посетителей и год основания.

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns

# Создание датасета
data = {… } # словарь с данными
df = pd.DataFrame (data)

После загрузки данных я провела предварительный анализ с помощью df.info () и df.describe (), чтобы понять структуру и основные статистики. Затем добавила два новых столбца: season (время года) на основе месяца и century (век основания) на основе года. Это позволило глубже изучить сезонность и историческую динамику.

Горизонтальная диаграмма

Original size 1188x690

Для того чтобы определить, какие японские фестивали привлекают наибольшее количество зрителей, я построила горизонтальную столбчатую диаграмму. Сначала я отсортировала данные по столбцу visitors (количество посетителей) и выбрала первые 10 строк с максимальными значениями. Это позволило сконцентрироваться на самых масштабных праздниках.

Построение графика выполнено с помощью библиотеки matplotlib.pyplot. Для наглядности значения посещаемости переведены в миллионы человек, а столбцы расположены горизонтально — так удобнее читать названия фестивалей, которые могут быть длинными. Каждый столбец подписан значением посещаемости, чтобы зритель сразу видел точные цифры.

top10 = df.nlargest (10, 'visitors')
bars = ax1.barh (top10['festival_name'], top10['visitors']/1e6, color='#ff7f0e')
for bar in bars:
    width = bar.get_width ()
    ax1.text (width \+ 0.05, bar.get_y () \+ bar.get_height ()/2, f'{width:.1f} млн',
             ha='left', va='center')

Для стилизации я использовала единую светлую тему (seaborn-v0_8-whitegrid), подобрала акцентный оранжевый цвет для столбцов и настроила размеры шрифтов, чтобы подписи оставались читаемыми.

Вывод: Лидерами по посещаемости стали фестивали Aomori Nebuta, Nebuta Matsuri и Tenjin Matsuri — каждый из них собирает более 1,3 миллиона человек. Самый популярный фестиваль (Aomori Nebuta) привлекает около 3 миллионов зрителей, что сопоставимо с населением крупного города. Это подтверждает, что традиционные праздники в Японии сохраняют массовый интерес и играют важную роль в культурной жизни.

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

Загрузка данных и подготовка Данные были загружены в pandas в виде DataFrame. Для построения диаграммы я сначала отсортировала строки по убыванию количества посетителей и отобрала первые 10 записей:

top10 = df.nlargest (10, 'visitors')

Значения посещаемости переведены в миллионы человек для удобства чтения.

Построение диаграммы График создан с помощью matplotlib.pyplot. Я выбрала горизонтальную ориентацию (barh), чтобы длинные названия фестивалей полностью помещались на оси. Столбцам задан акцентный оранжевый цвет (#ff7f0e). Для каждого столбца добавлена текстовая подпись с точным значением посещаемости.

fig1, ax1 = plt.subplots ()
bars = ax1.barh (top10['festival_name'], top10['visitors']/1e6, color='#ff7f0e')
for bar in bars:
    width = bar.get_width ()
    ax1.text (width \+ 0.05, bar.get_y () \+ bar.get_height ()/2, f'{width:.1f} млн',
             ha='left', va='center', fontsize=10)

Стилизация Для всех графиков я использовала единый светлый стиль (seaborn-v0_8-whitegrid), чтобы визуализации выглядели аккуратно и профессионально. Размеры шрифтов подобраны так, чтобы подписи оставались читаемыми.

Кольцевая диаграмма

Original size 665x690

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

Подготовка данных Сначала я посчитала количество фестивалей каждого типа с помощью value_counts ():

type_counts = df['type'].value_counts ()

Поскольку некоторые типы встречаются только 1–2 раза, я объединила их в одну группу «Другие». Для этого я задала порог threshold = 3 и суммировала все категории, частота которых ниже порога.

threshold = 3
other = type_counts[type_counts < threshold].sum ()
main_types = type_counts[type_counts >= threshold]
if other > 0:
    main_types['Другие'] = other

Теперь у нас есть несколько основных типов и одна собирательная категория.

Построение диаграммы Для визуализации я использовала библиотеку matplotlib.pyplot. Кольцевая диаграмма создаётся с помощью plt.pie с параметром wedgeprops={'width': 0.3}, который делает отверстие в центре (в отличие от обычной круговой). Цвета взяты из палитры pastel библиотеки seaborn, чтобы они были приятными и не отвлекали от данных.

colors = sns.color_palette («pastel», len (main_types))
wedges, texts, autotexts = ax2.pie (main_types, labels=main_types.index, autopct='%1.1f%%',
                                    colors=colors, startangle=90, pctdistance=0.85,
                                    wedgeprops=dict (width=0.3))
ax2.set_title ('Разнообразие типов фестивалей', fontweight='bold')

Я добавила процентные доли (autopct) и расположила подписи внутри колец, сдвинув их наружу (pctdistance=0.85). Начальный угол startangle=90 позволяет развернуть диаграмму так, чтобы самые крупные сектора оказались сверху.

Тепловая карта

Original size 1117x790

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

Подготовка данных Сначала я создала сводную таблицу с помощью pivot_table, где строки — префектуры, столбцы — месяцы, а значения — количество фестивалей (агрегация через count). Пропущенные значения (месяцы, в которых в данной префектуре нет фестивалей) были заполнены нулями.

pivot = pd.pivot_table (df, values='festival_name', index='prefecture', columns='month',
                       aggfunc='count', fill_value=0)

Поскольку префектур много, я решила сосредоточиться на десяти регионах с наибольшим количеством фестивалей. Для этого я выбрала топ‑10 префектур по частоте встречаемости и отфильтровала сводную таблицу:

top_prefs = df['prefecture'].value_counts ().head (10).index
pivot_top = pivot.loc[top_prefs]

Построение тепловой карты Для визуализации я использовала библиотеку seaborn — функцию heatmap. Я задала аннотацию ячеек (annot=True) с целыми числами (fmt='d'), чтобы на каждой ячейке было видно точное количество фестивалей. Цветовая гамма выбрана YlOrRd (от жёлтого к красному), что интуитивно связывает насыщенность цвета с интенсивностью событий. Дополнительно добавлена цветовая шкала (colorbar) с подписью «Количество фестивалей».

fig3, ax3 = plt.subplots (figsize=(12, 8))
sns.heatmap (pivot_top, annot=True, fmt='d', cmap='YlOrRd', linewidths=0.5,
            cbar_kws={'label': 'Количество фестивалей'}, ax=ax3)
ax3.set_title ('Тепловая карта фестивалей: префектуры × месяцы', fontweight='bold')
ax3.set_xlabel ('Месяц')
ax3.set_ylabel ('Префектура')

Стилизация В рамках общего стиля проекта я использовала светлый фон и чёткие подписи. Размеры шрифтов были увеличены для лучшей читаемости, а сетка между ячейками (linewidths=0.5) облегчает визуальное разделение.

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

Original size 1189x590

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

Подготовка данных Сначала я сгруппировала данные по типу фестиваля и вычислила среднее количество посетителей с помощью groupby () и mean (). Затем отсортировала результаты по убыванию, чтобы самые посещаемые типы оказались в начале.

avg_visitors = df.groupby ('type')['visitors'].mean ().sort_values (ascending=False)

Поскольку типов достаточно много, я решила отобразить только топ‑10, чтобы диаграмма оставалась читаемой:

top_types = avg_visitors.head (10)

Значения посещаемости переведены в миллионы человек для наглядности.

Построение диаграммы График создан с помощью matplotlib.pyplot. Я использовала вертикальные столбцы (bar) и выбрала спокойную голубую заливку с тёмной обводкой, чтобы столбцы хорошо выделялись на светлом фоне. Для каждого столбца добавлена текстовая подпись со значением в миллионах.

bars = ax4.bar (top_types.index, top_types.values / 1e6, color='skyblue', edgecolor='navy')
for bar in bars:
    height = bar.get_height ()
    ax4.text (bar.get_x () \+ bar.get_width ()/2., height \+ 0.05,
             f'{height:.1f} млн', ha='center', va='bottom', fontsize=9)

Подписи на оси X были повёрнуты на 45 градусов, чтобы длинные названия типов не наезжали друг на друга.

ax4.tick_params (axis='x', rotation=45, labelsize=10)

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

Линейный график

Original size 1189x690

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

Подготовка данных Для анализа я преобразовала год основания каждого фестиваля в век. Это позволило объединить события, происходившие в пределах одного столетия, и увидеть долгосрочную динамику. Расчёт века выполнен по формуле: (год основания // 100) + 1.

df['century'] = (df['year_founded'] // 100) \+ 1

Затем я сгруппировала данные по векам и подсчитала количество фестивалей, возникших в каждом столетии, с помощью value_counts () с последующей сортировкой по индексу (векам).

century_counts = df['century'].value_counts ().sort_index ()

Построение графика График создан с помощью matplotlib.pyplot. Я использовала линию с маркерами (marker='o'), чтобы подчеркнуть конкретные точки данных, и добавила заливку под линией (fill_between) для визуального акцента на площади. Цвет линии выбран ярко‑голубой (cyan), заливка — полупрозрачная того же оттенка.

ax5.plot (century_counts.index, century_counts.values, marker='o', linestyle='-', color='cyan', linewidth=2)
ax5.fill_between (century_counts.index, century_counts.values, alpha=0.3, color='cyan')

Для каждой точки добавлена аннотация с точным количеством фестивалей в данном веке, что облегчает чтение значений.

for i, (cent, cnt) in enumerate (zip (century_counts.index, century_counts.values)):
    ax5.annotate (f'{cnt}', (cent, cnt), textcoords="offset points», xytext=(0,10), ha='center')

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

Использованные генеративные модели

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

· исправить ошибку в коде при построении boxplot (я заменила его на столбчатую диаграмму), · сформулировать описания графиков в едином стиле, · структурировать текст презентации.

Таким образом, роль ИИ свелась к технической консультации и редактуре, а все ключевые решения — выбор датасета, методы анализа, стилизация, интерпретация результатов — я принимала самостоятельно.

Заключение

В этом проекте я исследовала 50 крупнейших традиционных фестивалей Японии с помощью методов описательной статистики и визуализации данных. Были построены пять типов графиков: горизонтальная столбчатая диаграмма топ‑10 фестивалей по посещаемости, кольцевая диаграмма распределения типов, тепловая карта сезонности по префектурам и месяцам, столбчатая диаграмма средней посещаемости по типам и линейный график исторической динамики основания фестивалей.

Анализ показал, что:

· Фестивали с фонарями (Lantern) и огненные (Fire) собирают наибольшую аудиторию (до 3 млн человек); · Летние месяцы (июль–август) являются пиком сезона фестивалей, особенно в префектурах Токио, Киото и Аомори; · Традиция проведения праздников имеет древние корни (VII–VIII века), но наибольший расцвет пришёлся на XVII век (период Эдо) и XX век.

Все визуализации выполнены в едином стиле (светлая тема, читаемые шрифты, акцентные цвета), что позволило представить данные в аккуратном и профессиональном виде. Проект демонстрирует, как с помощью Pandas и Matplotlib можно анализировать культурные явления и находить в них скрытые закономерности.

Анализ Японских фестивалей
Project created at 24.03.2026
We use cookies to improve the operation of the website and to enhance its usability. More detailed information on the use of cookies can be fo...
Show more