Исходный размер 735x1058

Анализ данных о сне и образе жизни

PROTECT STATUS: not protected

Концепция

big
Исходный размер 1454x430

Для анализа я выбрала Sleep Health and Lifestyle Dataset, содержащий 400 записей и 13 различных показателей, включая продолжительность и качество сна, уровень стресса, физическую активность, индекс массы тела, артериальное давление и другие биометрические данные. Этот набор данных особенно интересен тем, что позволяет исследовать взаимосвязь между качеством сна и различными аспектами образа жизни.

Прикрепить карточку Объем данных достаточно велик для проведения статистического анализа и построения значимых визуализаций, а разнообразие параметров позволяет выявить как очевидные, так и неочевидные корреляции.

Процесс обработки данных

big
Исходный размер 1260x430

Первичная обработка

  1. Сначала я загрузила датасет с помощью библиотеки Pandas:

import pandas as pd df = pd.read_csv («Sleep_health_and_lifestyle_dataset.csv»)

  1. Далее провела исследование структуры данных, используя методы:

df.info () # для анализа типов данных и выявления пропусков df.describe () # для получения статистических показателей df.isnull ().sum () # для точного подсчета пропущенных значений

  1. Для удобства анализа преобразовала столбец с артериальным давлением, разделив его на два отдельных показателя:

bp_split = df[«Blood Pressure»].str.split («/», expand=True) df[«Systolic_BP»] = pd.to_numeric (bp_split[0], errors="coerce») df[«Diastolic_BP»] = pd.to_numeric (bp_split[1], errors="coerce») df.drop (columns=[«Blood Pressure»], inplace=True)

Это позволило провести более детальный анализ связи показателей давления с другими факторами.

Настройка единого стиля визуализаций

Исходный размер 1528x430

Для создания уникального и согласованного визуального стиля я разработала специальную цветовую палитру и настройки оформления графиков:

COLORS = { 'primary': '#3498DB', # синий — основной цвет (сон) 'secondary': '#2ECC71', # зеленый — здоровье 'accent': '#E74C3C', # красный — проблемы/стресс 'neutral': '#95A5A6', # серый — нейтральные данные 'highlight': '#F39C12', # оранжевый — выделения }

Для применения единого стиля ко всем графикам разработала две функции:

  1. set_sleep_visualization_style () — настраивает общие параметры для всех графиков
  2. style_axes (ax, title, xlabel, ylabel) — применяет стиль к конкретным осям

Эти функции позволили создать визуализации в едином минималистичном стиле, вдохновленном эстетикой Apple, что значительно улучшило читаемость и эстетику графиков по сравнению со стандартными настройками Python.

Создание визуализаций

1. Гистограмма распределения продолжительности сна

Исходный размер 1184x684

Для анализа распределения часов сна среди участников исследования я создала гистограмму с наложенной линией плотности:

Получение данных о продолжительности сна sleep_duration_data = df[«Sleep Duration»] Plain Text Создание гистограммы с наложением кривой плотности sns.histplot (sleep_duration_data, bins=15, kde=True, color=COLORS['primary'], edgecolor="white», linewidth=1, alpha=0.8, ax=ax) Добавление статистических показателей mean_sleep = sleep_duration_data.mean () median_sleep = sleep_duration_data.median () ax.axvline (mean_sleep, color=COLORS['accent'], linestyle='--', linewidth=2, label=f’Среднее: {mean_sleep:.2f} ч') ax.axvline (median_sleep, color=COLORS['secondary'], linestyle='-.', linewidth=2, label=f’Медиана: {median_sleep:.2f} ч')

Для улучшения визуального восприятия я добавила вертикальные линии, показывающие среднее и медианное значение продолжительности сна, а также настроила полупрозрачность столбцов для лучшей видимости линии плотности.

2. Диаграмма размаха качества сна по категориям BMI

Исходный размер 1184x684

Для изучения взаимосвязи между индексом массы тела и качеством сна я создала boxplot с наложенным swarmplot:

Получение данных о BMI и качестве сна bmi_categories = df[«BMI Category»] sleep_quality = df[«Quality of Sleep»] Создание boxplot sns.boxplot (x=bmi_categories, y=sleep_quality, palette=[COLORS['primary'], COLORS['secondary'], COLORS['highlight'], COLORS['accent']], linewidth=1.5, ax=ax) Наложение swarmplot для отображения фактических точек данных sns.swarmplot (x=bmi_categories, y=sleep_quality, color='black', alpha=0.5, size=4, ax=ax)

Такой подход позволил одновременно отобразить как статистические характеристики распределения (медиану, квартили, выбросы), так и Plain Text Plain Text конкретные значения для каждого участника, что дает более полное представление о данных.

Анализ данных о сне и образе жизни
Проект создан 10.04.2025
Мы используем файлы cookies для улучшения работы сайта и большего удобства его использования. Более подробную информац...
Показать больше