Original size 736x1136

120 лет Олимпийских игр: эволюция участников, стран и медалей

PROTECT STATUS: not protected

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, чтобы агрегировать медали и спортсменов по полноценному названию страны в графиках и таблицах.

big
Original size 736x552

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

Рост масштаба Игр Линейный график, где по оси X — годы Олимпиад (1896-2016), а по двум линиям — • число национальных делегаций, • число спортсменов. Так мы наглядно увидим, как Олимпиада выросла c 14 стран и 241 атлета до 207 стран и 11 тыс. участников. Гендерная динамика Линия «доля женщин-участниц» (процент спортсменок от общего числа) с 1900 по 2016. Пунктир на уровне 50% показывает момент, когда Олимпиада приблизилась к гендерному паритету. Медальная карта мира Горизонтальный bar-чарт с топ-20 странами по суммарному количеству медалей за все Игры. График отвечает, кто исторически доминировал и каков разрыв между лидерами. Возраст призёров Гистограмма распределения возраста всех спортсменов, завоевавших медали. Позволяет увидеть «типичный» возраст чемпиона и улавливает редкие случаи очень юных или возрастных призёров. Эти четыре визуализации в сумме дают целостную картину: сколько стран и людей участвовало, как росла роль женщин, кто брал больше всего медалей и в каком возрасте спортсмены чаще всего поднимаются на подиум.

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

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

Original size 556x196

Затем считал два готовых CSV-файла датасета «120 лет Олимпийской истории» и сразу объединила их по трёхбуквенному коду НОК:

Original size 938x146

После подготовки таблиц построил четыре итоговых графика — линейные кривые роста Олимпиады, долю женщин-участниц, 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, чтобы сохранить единый стиль.

Original size 1786x880
Original size 1658x792

График № 2 — «Гендерная динамика»

Мы хотим увидеть, как менялась доля женщин-участниц на Олимпийских играх с 1900 по 2016 год. Одна линия покажет, когда женское участие превысило 10%, 25%, 40% и почти дошло до паритета.

Инструменты: pandas—агрегируем число женщин и общее число спортсменов по каждому году matplotlib / seaborn—строим линию «процент женщин», задаём стиль, палитру и шрифт

Original size 1794x934
Original size 1638x788

График № 3 — «Медальная карта мира»

Мне нужно показать, какие государства исторически доминируют на Олимпиадах. Для этого беру суммарное число медалей (золото + серебро + бронза) у каждой страны за все Игры 1896–2016, сортирую и вывожу Top-20 горизонтальным bar-чартом — так названия стран читаются легче, чем на круговой диаграмме.

Инструменты pandas—склеиваю athlete_events.csv с noc_regions.csv, группирую и считаю медали matplotlib / seaborn—строю горизонтальный bar-чарт, задаю цвета и шрифт

Original size 1788x998
Original size 1416x906

График № 4 — «Возраст призёров»

Хотим узнать, в каком возрасте спортсмены чаще всего поднимаются на олимпийский пьедестал и насколько широк «хвост» распределения (юные таланты 16–18 лет и ветераны 35+). Для этого строю гистограмму возраста только медалистов всех Игр (1896–2016) со сглаженной KDE-кривой.

Инструменты pandas—фильтрую строки с медалью и не-пустым возрастом seaborn histplot + kde—быстро рисует распределение matplotlib—задаю размеры, подписи, сохраняю PNG

Original size 1790x776
Original size 1392x786
120 лет Олимпийских игр: эволюция участников, стран и медалей
Project created at 15.07.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