Original size 1024x1365

Расстройства сна

PROTECT STATUS: not protected
41

Описание

Я работала с датасетом с сайта Kaggle о нарушениях сна у людей разных возрастов и профессий. Сама страдаю бессонницей, так что тема мне близка.

В проекте я использовала (1) точечную диаграмму (2) круговую диаграмму (3) столбчатую диаграмму (4) линейный график потому что они по разному устроены и наглядно представляют изученные данные.

Этапы работы и описание применения генеративной модели

Я работала с готовой палитрой с сайта Coolors, потому что она напоминает оттенки ночного неба и то, как выглядят объекты при лунном свете.

Вот использованные цвета в порядке от светлого к тёмному 22223B 4A4E69 9A8C98 C9ADA7 F2E9E4

Также для графиков использован шрифт Golos text, потому что он спокойный, не привлекающей излишнего внимания — то что нужно для сна.

Графики отредактированы мной вручную в программе Adobe Illustrator.

Обложка сделана в нейросети Recraft. Она использована, чтобы показать отстранённость данных от реальности и сохранить палитру проекта. https://www.recraft.ai/projects

1. Зависимость продолжительности сна от возраста

big
Original size 1892x917

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

Загрузка данных из CSV-файла

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. Самые популярные нарушения сна

Original size 3534x1956

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

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

df = pd.read_csv («Sleep_health_and_lifestyle_dataset.csv»)

Обработка данных: заменим пропущенные значения в 'Sleep Disorder' на 'None'

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. Связь профессии с уровнем стресса

Original size 1892x917

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. Корелляция качества сна и уровня физической активности

Original size 1888x903

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 лет — проверять здоровье сна, так как возраст и стресс усиливают риски.

Расстройства сна
41
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