
Описание
«Пусть мне приснится, что я выспался…» Для исследования я взяла датасет с сайта Kaggle о факторах, влияющих на эффективность сна. Интересно, сможем ли мы, используя эти знания, выспаться.
Для визуализации я использовала, в зависимости от задачи, разные виды графиков: (1) Столбчатая диаграмма (2) Круговая диаграмма (3) Линейный график (4) Тепловая карта
В заключении исследования представлен вывод и рекомендации.
Описание применения генеративной модели
Для некоторых фрагментов кода использовалась нейросеть Perplexity. Пример промпта: «Построй тепловую карту, показывающую зависимость эффективности сна от употребления алкоголя и курения. Используй синие и голубые тона»
Цветовая палитра графиков тоже была предложена Perplexity, оттенки синего ассоциируются с расслаблением и ночным небом, что отвечает теме исследования: - Насыщенный синий: #0033A0 - Светло-голубой: #7FB3D5 - Бирюзовый: #009999 - Градиент синих оттенков для тепловой карты (Blues)
Обложка сгенерирована при помощи нейросети Leonardo.ai. Изображение в выбранной для исследования цветовой гамме передает состояние крепкого и здорового сна в глубокой фазе.
1. Продолжительность глубокого сна
import pandas as pd import matplotlib.pyplot as plt import seaborn as sns
df = pd.read_csv ('Sleep_Efficiency.csv')
bins = [0, 0.8, 0.9, 0.95, 1] labels = ['<80%', '80-90%', '90-95%', '>95%'] df['Efficiency Category'] = pd.cut (df['Sleep efficiency'], bins=bins, labels=labels, right=False)
phase_cols = ['REM sleep percentage', 'Deep sleep percentage', 'Light sleep percentage'] grouped = df.groupby ('Efficiency Category')[phase_cols].mean ()
colors = ['0033A0', '00BFFF', '009999']
ax = grouped.plot (kind='bar', color=colors, figsize=(10, 6))
plt.title ('Распределение длительности фаз сна по категориям эффективности', fontsize=16) plt.xlabel ('Категория эффективности сна', fontsize=12) plt.ylabel ('Средний процент фазы сна', fontsize=12) plt.xticks (rotation=0, fontsize=10) plt.yticks (fontsize=10) plt.legend (title='Фаза сна', fontsize=10, title_fontsize=10) plt.grid (axis='y', alpha=0.3) plt.tight_layout () plt.show ()
2. Эффективность сна у мужчин и женщин
high_eff = df[df['Sleep efficiency'] > 0.95]
gender_counts = high_eff['Gender'].dropna ().value_counts ()
labels = gender_counts.index
plt.figure (figsize=(6, 6)) plt.pie (gender_counts, labels=labels, autopct='%1.1f%%', startangle=90, counterclock=False, colors=['7FB3D5', '0033A0']) plt.title ('Эффективность сна > 95% у мужчин и женщин', fontsize=16) plt.tight_layout () plt.show ()
3. Физическая активность
df = df[['Exercise frequency', 'Sleep efficiency']].dropna ()
df['Exercise frequency'] = df['Exercise frequency'].astype (int)
grouped = df.groupby ('Exercise frequency')['Sleep efficiency'].mean ()
plt.figure (figsize=(8, 5)) grouped.plot (kind='bar', color='#0033A0') plt.title ('Зависимость эффективности сна от физической активности', fontsize=16) plt.xlabel ('Физическая активность (раз в неделю)', fontsize=12) plt.ylabel ('Средняя эффективность сна', fontsize=12) plt.xticks (rotation=0, fontsize=10) plt.yticks (fontsize=10) plt.grid (axis='y', alpha=0.3) plt.tight_layout () plt.show ()
4. Возраст
df = df[['Age', 'Sleep efficiency']].dropna ()
df = df[df['Age'] > 18]
grouped = df.groupby ('Age')['Sleep efficiency'].mean ().sort_index ()
plt.figure (figsize=(9, 5)) plt.plot (grouped.index, grouped.values, marker='o', linestyle='-', color='#0033A0', label='Средняя эффективность сна') plt.plot (grouped.index, p (grouped.index), color='#009999', linestyle='--', linewidth=2, label='Линия тренда') plt.title ('Зависимость эффективности сна от возраста', fontsize=18) plt.xlabel ('Возраст', fontsize=12) plt.ylabel ('Средняя эффективность сна', fontsize=12) plt.xticks (fontsize=10) plt.yticks (fontsize=10) plt.grid (True, alpha=0.3) plt.legend (fontsize=10) plt.tight_layout () plt.show ()
z = np.polyfit (grouped.index, grouped.values, 1) p = np.poly1d (z)
5. Вредные привычки
df = df[['Alcohol consumption', 'Smoking status', 'Sleep efficiency']].dropna ()
pivot = df.pivot_table ( index='Alcohol consumption', columns='Smoking status', values='Sleep efficiency', aggfunc='mean' )
plt.figure (figsize=(8, 6)) sns.heatmap ( pivot, annot=True, fmt=».2f», cmap='Blues', linewidths=0.5, cbar_kws={'label': 'Средняя эффективность сна'} ) plt.title ('Эффективность сна vs алкоголь и курение', fontsize=16) plt.xlabel ('Курение', fontsize=12) plt.ylabel ('Потребление алкоголя', fontsize=12) plt.xticks (fontsize=12) plt.yticks (fontsize=12) plt.tight_layout () plt.show ()
Вывод
Приведенные данные демонстрируют зависимость показателей эффективности сна от различных признаков, таких как пол, возраст, физическая активность, вредные привычки. Из визуализации можно сделать выводы:
1. Женщины спят в среднем эффективнее мужчин
2. Эффективность коррелирует с продолжительностью фазы глубокого сна. Чем дольше глубокая фаза по сравнению с быстрой и легкой, тем эффективнее считается сон.
3. С возрастом (после 50 лет) эффективность сна снижается. Однако такой результат может быть связан с тем, что у пожилых людей естественным образом уменьшается общее количество сна, а в данном случае качество рассчитывается в том числе из количества.
4. Умеренная физическая активность (4 раза в неделю) благотворно влияет на эффективность сна.
5. Вредные привычки (алкоголь и курение) снижают качество сна.
Рекомендации: - Отказаться от вредных привычек, чтобы лучше высыпаться - Увеличить физическую активность до 4 раз в неделю - По результатам исследования, особое внимание на повышение качества сна стоит обратить мужчинам в возрасте старше 50 лет