
Описание
Я работала с датасетом с сайта Kaggle о нарушениях сна у людей разных возрастов и профессий. Сама страдаю бессонницей, так что тема мне близка.
В проекте я использовала (1) точечную диаграмму (2) круговую диаграмму (3) столбчатую диаграмму (4) линейный график потому что они по разному устроены и наглядно представляют изученные данные.
Этапы работы и описание применения генеративной модели
Я работала с готовой палитрой с сайта Coolors, потому что она напоминает оттенки ночного неба и то, как выглядят объекты при лунном свете.
Вот использованные цвета в порядке от светлого к тёмному 22223B 4A4E69 9A8C98 C9ADA7 F2E9E4
Также для графиков использован шрифт Golos text, потому что он спокойный, не привлекающей излишнего внимания — то что нужно для сна.
Графики отредактированы мной вручную в программе Adobe Illustrator.
Обложка сделана в нейросети Recraft. Она использована, чтобы показать отстранённость данных от реальности и сохранить палитру проекта. https://www.recraft.ai/projects
1. Зависимость продолжительности сна от возраста

import pandas as pd import matplotlib.pyplot as plt import seaborn as sns
df = pd.read_csv («Sleep_health_and_lifestyle_dataset.csv»)
sleep_age_df = df[['Age', 'Sleep Duration']].dropna ()
plt.figure (figsize=(10, 6)) sns.scatterplot (data=sleep_age_df, x='Age', y='Sleep Duration', alpha=0.6)
plt.title ('Зависимость продолжительности сна от возраста') plt.xlabel ('Возраст') plt.ylabel ('Продолжительность сна (часы)') plt.grid (True) plt.tight_layout ()
plt.show ()
2. Самые популярные нарушения сна
import pandas as pd import matplotlib.pyplot as plt import seaborn as sns
df = pd.read_csv («Sleep_health_and_lifestyle_dataset.csv»)
df['Sleep Disorder'] = df['Sleep Disorder'].fillna ('None')
sleep_disorder_counts = df['Sleep Disorder'].value_counts ()
plt.figure (figsize=(8, 8)) plt.pie ( sleep_disorder_counts, labels=sleep_disorder_counts.index, autopct='%1.1f%%', startangle=140, colors=sns.color_palette («pastel») )
plt.title ('Распределение расстройств сна (в процентах)') plt.axis ('equal') # Делает круг ровным plt.tight_layout () plt.show ()
3. Связь профессии с уровнем стресса
import pandas as pd import matplotlib.pyplot as plt import seaborn as sns
data = pd.read_csv ('Sleep_health_and_lifestyle_dataset.csv')
stress_by_occupation = data.groupby ('Occupation')['Stress Level'].mean ().sort_values (ascending=False)
plt.figure (figsize=(12, 6)) sns.set_style («whitegrid») sns.set_palette («coolwarm»)
ax = sns.barplot (x=stress_by_occupation.index, y=stress_by_occupation.values)
plt.title ('Средний уровень стресса по профессиям', fontsize=16, pad=20) plt.xlabel ('Профессия', fontsize=12) plt.ylabel ('Средний уровень стресса (1-10)', fontsize=12) plt.xticks (rotation=45, ha='right') plt.ylim (0, 10)
for p in ax.patches: ax.annotate (f"{p.get_height ():.1f}», (p.get_x () + p.get_width () / 2., p.get_height ()), ha='center', va='center', xytext=(0, 9), textcoords='offset points')
plt.tight_layout () plt.show ()
4. Корелляция качества сна и уровня физической активности
import pandas as pd import matplotlib.pyplot as plt import seaborn as sns
df = pd.read_csv («Sleep_health_and_lifestyle_dataset.csv»)
data = df[['Physical Activity Level', 'Quality of Sleep']].dropna ()
grouped = data.groupby ('Physical Activity Level')['Quality of Sleep'].mean ().reset_index ()
plt.figure (figsize=(10, 6)) sns.lineplot (data=grouped, x='Physical Activity Level', y='Quality of Sleep', marker='o')
plt.title ('Зависимость качества сна от физической активности') plt.xlabel ('Уровень физической активности') plt.ylabel ('Качество сна (в среднем)') plt.grid (True) plt.tight_layout ()
plt.show ()
Выводы
Представленные графики отражают взаимосвязь сна, физической активности, уровня стресса и возраста, а также распространённость расстройств сна.
1. Продолжительность сна и возраст — Сон сокращается с возрастом: в 30–40 лет люди спят около 8 часов, к 60 годам — 6–6.5 часов. Это соответствует научным данным о возрастном снижении потребности во сне.
2. Качество сна и физическая активность — Чем выше уровень активности (особенно в возрасте 30–60 лет), тем лучше качество сна (оценка 7–8/10). Это подтверждает, что спорт улучшает глубину и восстановительный эффект сна.
3. Стресс и профессия — Наиболее стрессовые профессии — врач, учитель, менеджер, юрист (уровень стресса 8–10/10). Менее стрессовые — учёный, инженер, бухгалтер (4–6/10). Стресс напрямую влияет на бессонницу, что видно в следующем графике.
4. Расстройства сна — 20,6% людей страдают бессонницей, ещё 20,6% — апноэ. Это может быть связано со стрессом и низкой физической активностью.
Итог: - После 40 лет сон становится короче, но его качество можно поддерживать спортом. - Стрессовые профессии чаще приводят к нарушениям сна. - Каждый пятый взрослый сталкивается с бессонницей или апноэ, что требует внимания к образу жизни.
Рекомендации: - Увеличить физическую активность для улучшения сна. - Контролировать стресс. - После 50 лет — проверять здоровье сна, так как возраст и стресс усиливают риски.