Концепция

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

Первичная обработка
- Сначала я загрузила датасет с помощью библиотеки Pandas:
import pandas as pd df = pd.read_csv («Sleep_health_and_lifestyle_dataset.csv»)
- Далее провела исследование структуры данных, используя методы:
df.info () # для анализа типов данных и выявления пропусков df.describe () # для получения статистических показателей df.isnull ().sum () # для точного подсчета пропущенных значений
- Для удобства анализа преобразовала столбец с артериальным давлением, разделив его на два отдельных показателя:
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)
Это позволило провести более детальный анализ связи показателей давления с другими факторами.
Настройка единого стиля визуализаций
Для создания уникального и согласованного визуального стиля я разработала специальную цветовую палитру и настройки оформления графиков:
COLORS = { 'primary': '#3498DB', # синий — основной цвет (сон) 'secondary': '#2ECC71', # зеленый — здоровье 'accent': '#E74C3C', # красный — проблемы/стресс 'neutral': '#95A5A6', # серый — нейтральные данные 'highlight': '#F39C12', # оранжевый — выделения }
Для применения единого стиля ко всем графикам разработала две функции:
- set_sleep_visualization_style () — настраивает общие параметры для всех графиков
- style_axes (ax, title, xlabel, ylabel) — применяет стиль к конкретным осям
Эти функции позволили создать визуализации в едином минималистичном стиле, вдохновленном эстетикой Apple, что значительно улучшило читаемость и эстетику графиков по сравнению со стандартными настройками Python.
Создание визуализаций
1. Гистограмма распределения продолжительности сна
Для анализа распределения часов сна среди участников исследования я создала гистограмму с наложенной линией плотности:
Получение данных о продолжительности сна 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
Для изучения взаимосвязи между индексом массы тела и качеством сна я создала 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 конкретные значения для каждого участника, что дает более полное представление о данных.




