120 лет Олимпийских игр: эволюция участников, стран и медалей (1896 — 2016)
Олимпиада начиналась как соревнование 14 стран и 241 спортсмена в Афинах-1896; к Рио-2016 в Играх участвовали уже 207 национальных сборных и более 11 тыс. атлетов. Этот проект визуализирует, как за 120 лет менялись--
масштаб Игр — число стран-участниц и спортсменов; гендерный баланс — рост доли женщин в соревнованиях; распределение медалей — какие государства и в какие эпохи доминировали; «возраст чемпиона» — как менялась возрастная структура призёров. Анализ построен на открытом датасете «120 Years of Olympic History: Athletes & Results» (Kaggle). С помощью pandas, matplotlib и seaborn мы очищаем данные, агрегируем их по нужным признакам и получаем четыре законченные инфографики в едином визуальном стиле. Результат показывает ключевые тренды Олимпийского движения за век с небольшим — от первых шагов женского спорта до современной глобальной «медальной гонки».
Источники данных и их роль в анализе
athlete_events.csv Kaggle-датасет «120 Years of Olympic History: Athletes & Results» (раздел athlete_events) Основная фактура анализа: считаем количество спортсменов, строим гистограммы возраста призёров, выделяем медали по дисциплинам и годам, рассчитываем долю женщин. noc_regions.csv GitHub-копия из того же Kaggle-набора, ветка data/noc_regions.csv Объединяется (merge) с athlete_events.csv, чтобы агрегировать медали и спортсменов по полноценному названию страны в графиках и таблицах.

В проекте будет четыре базовые инфографики, каждая отвечает на свой вопрос об эволюции Олимпийских игр:
Рост масштаба Игр Линейный график, где по оси X — годы Олимпиад (1896-2016), а по двум линиям — • число национальных делегаций, • число спортсменов. Так мы наглядно увидим, как Олимпиада выросла c 14 стран и 241 атлета до 207 стран и 11 тыс. участников. Гендерная динамика Линия «доля женщин-участниц» (процент спортсменок от общего числа) с 1900 по 2016. Пунктир на уровне 50% показывает момент, когда Олимпиада приблизилась к гендерному паритету. Медальная карта мира Горизонтальный bar-чарт с топ-20 странами по суммарному количеству медалей за все Игры. График отвечает, кто исторически доминировал и каков разрыв между лидерами. Возраст призёров Гистограмма распределения возраста всех спортсменов, завоевавших медали. Позволяет увидеть «типичный» возраст чемпиона и улавливает редкие случаи очень юных или возрастных призёров. Эти четыре визуализации в сумме дают целостную картину: сколько стран и людей участвовало, как росла роль женщин, кто брал больше всего медалей и в каком возрасте спортсмены чаще всего поднимаются на подиум.
Обработка данных
Для начала я импортировал основные библиотеки анализа и визуализации данных: pandas — для работы с таблицами, numpy — для базовых вычислений, matplotlib.pyplot и seaborn — для построения графиков.
Затем считал два готовых CSV-файла датасета «120 лет Олимпийской истории» и сразу объединила их по трёхбуквенному коду НОК:
После подготовки таблиц построил четыре итоговых графика — линейные кривые роста Олимпиады, долю женщин-участниц, bar-чарт медального зачёта и гистограмму возраста призёров — и сохранил их в папку figures/
Визуализация данных
Для визуализации я использовал связку Matplotlib + Seaborn — классический «дуэт» для аналитики в Python.
Matplotlib 3.8 служит базовым движком. Сначала я создал холст, далее задал размеры будущего рисунка и разрешение. Затем через plt.title (), plt.xlabel (), plt.ylabel () подписал элементы, добавил сетку или вспомогательные линии (plt.axvline (), plt.grid ()), а в конце сохранил результат в папку figures/
Seaborn 0.13 стоит поверх Matplotlib и ускоряет сам процесс построения: sns.lineplot () — кривые роста (количество стран, количество спортсменов и доля женщин), sns.histplot () с kde=True — гистограмма возраста призёров со сглаженной KDE-кривой, sns.barplot () — горизонтальный рейтинг стран по медалям.
Lifelines мне понадобился только для специальных графиков выживаемости; в основные четыре визуализации он не вошёл, но при необходимости я могу вызвать kmf.plot_survival_function () и получить стилизованную кривую Kaplan–Meier.
Встроенный метод pandas.plot () я использовал лишь на этапе чернового EDA, чтобы быстро проверить агрегаты. Финальные рисунки я перевёл на Seaborn, чтобы сохранить единый стиль.
График № 2 — «Гендерная динамика»
Мы хотим увидеть, как менялась доля женщин-участниц на Олимпийских играх с 1900 по 2016 год. Одна линия покажет, когда женское участие превысило 10%, 25%, 40% и почти дошло до паритета.
Инструменты: pandas—агрегируем число женщин и общее число спортсменов по каждому году matplotlib / seaborn—строим линию «процент женщин», задаём стиль, палитру и шрифт
График № 3 — «Медальная карта мира»
Мне нужно показать, какие государства исторически доминируют на Олимпиадах. Для этого беру суммарное число медалей (золото + серебро + бронза) у каждой страны за все Игры 1896–2016, сортирую и вывожу Top-20 горизонтальным bar-чартом — так названия стран читаются легче, чем на круговой диаграмме.
Инструменты pandas—склеиваю athlete_events.csv с noc_regions.csv, группирую и считаю медали matplotlib / seaborn—строю горизонтальный bar-чарт, задаю цвета и шрифт
График № 4 — «Возраст призёров»
Хотим узнать, в каком возрасте спортсмены чаще всего поднимаются на олимпийский пьедестал и насколько широк «хвост» распределения (юные таланты 16–18 лет и ветераны 35+). Для этого строю гистограмму возраста только медалистов всех Игр (1896–2016) со сглаженной KDE-кривой.
Инструменты pandas—фильтрую строки с медалью и не-пустым возрастом seaborn histplot + kde—быстро рисует распределение matplotlib—задаю размеры, подписи, сохраняю PNG




