睡眠健康数据分析(上)

简介: 睡眠健康数据分析

项目背景

背景描述

数据集涵盖了与睡眠和日常习惯有关的诸多变量。如性别、年龄、职业、睡眠时间、睡眠质量、身体活动水平、压力水平、BMI类别、血压、心率、每日步数、以及是否有睡眠障碍等细节。

  • 数据集的主要特征: 综合睡眠指标:
  • 探索睡眠持续时间、质量和影响睡眠模式的因素。
  • 生活方式因素:分析身体活动水平、压力水平和 BMI 类别。
  • 心血管健康:检查血压和心率测量值。
  • 睡眠障碍分析:确定失眠和睡眠呼吸暂停等睡眠障碍的发生。
  • 数据集列:人员 ID:
  • 每个人的标识符。
  • 性别:人员的性别(男性/女性)
  • 年龄:人员的年龄(以年为单位)。
  • 职业:人的职业或职业。
  • 睡眠持续时间(小时):该人每天睡眠的小时数。
  • 睡眠质量(量表:1-10):对睡眠质量的主观评分,范围从1到10。
  • 身体活动水平(分钟/天):该人每天进行身体活动的分钟数。
  • 压力水平(等级:1-10):对人所经历的压力水平的主观评级,范围从1到10。
  • BMI 类别:人的 BMI 类别(例如,体重不足、正常、超重)。
  • 血压(收缩压/舒张压):人的血压测量值,表示收缩压超过舒张压。
  • 心率 (bpm):人的静息心率(以每分钟心跳数为单位)。
  • 每日步数:此人每天的步数。
  • 睡眠障碍:人体内是否存在睡眠障碍(无、失眠、睡眠呼吸暂停)。

有关睡眠障碍专栏的详细信息:

类型 说明
个体没有表现出任何特定的睡眠障碍。
失眠 个人难以入睡或保持睡眠状态,导致睡眠不足或质量差。
睡眠呼吸暂停 个人在睡眠期间呼吸暂停,导致睡眠模式中断和潜在的健康风险。

睡眠健康和生活方式数据集包括400行和13列,涵盖了与睡眠和日常习惯相关的广泛变量。它包括性别、年龄、职业、睡眠持续时间、睡眠质量、身体活动水平、压力水平、身体质量指数分类、血压、心率、每日步数以及是否存在睡眠障碍等详细信息。

在这里,我们将使用已经可供使用的“Sleep _ health _ and _ life style _ dataset . CSV”数据库,下面您将看到数据的分析、数据的处理以及使用机器模型的学习分类来实现我们的目标。

导入库

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
import plotly.express as px
from sklearn.metrics import accuracy_score, confusion_matrix, classification_report
from yellowbrick.classifier import ConfusionMatrix
from sklearn.tree import DecisionTreeClassifier
from sklearn.metrics import r2_score
from sklearn.metrics import mean_absolute_error, mean_squared_error
from sklearn.model_selection import GridSearchCV
from sklearn.model_selection import RandomizedSearchCV
from sklearn.preprocessing import LabelEncoder

导入数据

df = pd.read_csv('/kaggle/input/sleep-health-and-lifestyle-dataset/Sleep_health_and_lifestyle_dataset.csv', sep = ',')
• 1

这里我们可以看到,我们有分类和连续变量,我们也可以看到,我们没有空值。

  • Person ID(个人ID):每个人的标识符。
  • Gender(性别):人的性别(男/女)。
  • Age(年龄):以年为单位的人的年龄。
  • Occupation(职业):人的职业或专业。
  • Sleep Duration (hours)(睡眠持续时间(小时)):人每天睡眠的小时数。
  • Quality of Sleep (scale: 1-10)(睡眠质量(等级:1-10):对睡眠质量的主观评价,范围从1到10。
  • Physical Activity Level (minutes/day)(身体活动水平(分钟/天)):个人每天从事身体活动的分钟数。
  • Stress Level (scale: 1-10)(压力水平(等级:1-10)):对人所经历的压力水平的主观评级,范围从1到10。
  • BMI Category(身体质量指数类别):个人的身体质量指数类别(例如,体重不足、正常、超重)。
  • Blood Pressure (systolic/diastolic)(血压(收缩压/舒张压)):个人的血压测量值,表示为收缩压/舒张压。
  • Heart Rate (bpm)(心率(bpm)):人的静息心率,单位为每分钟心跳数。
  • Daily Steps(每日步数):此人每天走的步数。
  • Sleep Disorder(睡眠障碍):人是否存在睡眠障碍(无、失眠、睡眠呼吸暂停)。

数据分析

corr = df.corr().round(2)
plt.figure(figsize = (25,20))
sns.heatmap(corr, annot = True, cmap = 'YlOrBr')

分类变量。

在这里,当我们查看分类变量时,我们可以看到我们的数据在男性和女性之间分布良好,查看身体质量指数,我们可以看到大多数人在正常和超重之间,当我们查看我们的目标变量时,我们可以看到大多数人没有睡眠问题,那些有睡眠问题的人在失眠和睡眠呼吸暂停之间分布良好。

plt.figure(figsize = (20, 10))
plt.subplot(2, 2, 1)
plt.gca().set_title('Variable Gender')
sns.countplot(x = 'Gender', palette = 'Set2', data = df)
plt.subplot(2, 2, 2)
plt.gca().set_title('Variable BMI Category')
sns.countplot(x = 'BMI Category', palette = 'Set2', data = df)
plt.subplot(2, 2, 3)
plt.gca().set_title('Variable Sleep Disorder')
sns.countplot(x = 'Sleep Disorder', palette = 'Set2', data = df)

看看职业一栏,我们可以看到我们有一些优势职业。

连续变量。

当我们看我们的分类变量时,我们可以看到,我们在大多数变量中没有一个模式,几乎所有的变量在一些数据中显示平衡,而在另一些数据中不显示平衡。

plt.figure(figsize = (15, 18))
plt.subplot(4, 2, 1)
sns.histplot(x = df['Age'], kde = False)
plt.subplot(4, 2, 2)
sns.histplot(x = df['Sleep Duration'], kde = False)
plt.subplot(4, 2, 3)
sns.histplot(x = df['Quality of Sleep'], kde = False)
plt.subplot(4, 2, 4)
sns.histplot(x = df['Physical Activity Level'], kde = False)
plt.subplot(4, 2, 5)
sns.histplot(x = df['Stress Level'], kde = False)
plt.subplot(4, 2, 6)
sns.histplot(x = df['Heart Rate'], kde = False)
plt.subplot(4, 2, 7)
sns.histplot(x = df['Daily Steps'], kde = False)

查看箱线图,我们可以确认我们没有需要处理的异常值

plt.title("Boxplot Age", fontdict = {'fontsize': 20})
sns.boxplot(x=df["Age"])

plt.title("Boxplot Sleep Duration", fontdict = {'fontsize': 20})
sns.boxplot(x=df["Sleep Duration"])

plt.title("Boxplot Quality of Sleep", fontdict = {'fontsize': 20})
sns.boxplot(x=df["Quality of Sleep"])

plt.title("Boxplot Physical Activity Level", fontdict = {'fontsize': 20})
sns.boxplot(x=df["Physical Activity Level"])

plt.title("Boxplot Stress Level", fontdict = {'fontsize': 20})
sns.boxplot(x=df["Stress Level"])

plt.title("Boxplot Heart Rate", fontdict = {'fontsize': 20})
sns.boxplot(x=df["Heart Rate"])

plt.title("Boxplot Daily Steps", fontdict = {'fontsize': 20})
sns.boxplot(x=df["Daily Steps"])

双变量分析。

当我们比较我们的目标变量和分类变量时,我们可以看到有趣的模式,例如女性比男性有更多的睡眠问题,同样的,当我们看身体质量指数变量时,超重的人更有可能有睡眠问题,正常体重的人通常没有任何问题。

当我们看病人的职业时,我们可以看到一个非常有趣的事情,教授,护士和售货员更有可能有睡眠问题,当我们看律师,医生和工程师时,我们可以看到他们一般没有任何问题。

plt.figure(figsize = (20, 10))
plt.suptitle("Analysis Of Variable Sleep Disorder",fontweight="bold", fontsize=20)
plt.subplot(2, 1, 1)
plt.gca().set_title('Variable Gender')
sns.countplot(x = 'Gender', hue = 'Sleep Disorder', palette = 'Set2', data = df)
plt.subplot(2, 1, 2)
plt.gca().set_title('Variable BMI Category')
sns.countplot(x = 'BMI Category', hue = 'Sleep Disorder', palette = 'Set2', data = df)

plt.figure(figsize = (20, 10))
plt.subplot(2, 1, 1)
plt.gca().set_title('Variable Occupation')
sns.countplot(x = 'Occupation', hue = 'Sleep Disorder', palette = 'Set2', data = df)
plt.subplot(2, 1, 2)
plt.gca().set_title('Variable Blood Pressure')
sns.countplot(x = 'Blood Pressure', hue = 'Sleep Disorder', palette = 'Set2', data = df)

plt.figure(figsize = (25, 20))
plt.suptitle("Analysis Of Variable Sleep Disorder",fontweight="bold", fontsize=20)
plt.subplot(4,2,1)
sns.boxplot(x="Sleep Disorder", y="Age", data=df)
plt.subplot(4,2,2)
sns.boxplot(x="Sleep Disorder", y="Sleep Duration", data=df)
plt.subplot(4,2,3)
sns.boxplot(x="Sleep Disorder", y="Quality of Sleep", data=df)
plt.subplot(4,2,4)
sns.boxplot(x="Sleep Disorder", y="Physical Activity Level", data=df)
plt.subplot(4,2,5)
sns.boxplot(x="Sleep Disorder", y="Stress Level", data=df)
plt.subplot(4,2,6)
sns.boxplot(x="Sleep Disorder", y="Heart Rate", data=df)
plt.subplot(4,2,7)
sns.boxplot(x="Sleep Disorder", y="Daily Steps", data=df)


相关文章
|
6月前
|
机器学习/深度学习 数据可视化 数据挖掘
用Python进行健康数据分析:挖掘医疗统计中的信息
【4月更文挑战第12天】Python在医疗健康数据分析中扮演重要角色,具备数据处理、机器学习、可视化及丰富生态的优势。基本流程包括数据获取、预处理、探索、模型选择与训练、评估优化及结果可视化。应用案例包括疾病预测、药物效果分析和医疗资源优化,例如使用RandomForestClassifier进行疾病预测,Logit模型分析药物效果,以及linprog优化医疗资源配置。
703 1
|
机器学习/深度学习 算法 数据挖掘
睡眠健康数据分析(下)
睡眠健康数据分析
164 0
|
存储 弹性计算 分布式计算
【云栖号案例 | 医疗健康】华大基因数据上云,实现数据分析效率提高数千倍!
华大基因通过阿里云设计海量存储计算与数据安全等云平台架构,保障云上业务搭建与运转,实现了22小时内达成千人基因组分析的人类梦想。
|
新零售 大数据 数据挖掘
【健康医疗】4步完成数据分析报表,让医疗数据转化为生产力
阿里云大健康解决方案11套业务架构,6大技术架构覆盖医药食品、医院诊所、2o2B、移动医疗等业务,让医疗服务行云流水。4步完成数据分析报表,让医疗数据转化为生产力。
2332 0
|
3月前
|
数据采集 数据可视化 数据挖掘
数据分析大神养成记:Python+Pandas+Matplotlib助你飞跃!
在数字化时代,数据分析至关重要,而Python凭借其强大的数据处理能力和丰富的库支持,已成为该领域的首选工具。Python作为基石,提供简洁语法和全面功能,适用于从数据预处理到高级分析的各种任务。Pandas库则像是神兵利器,其DataFrame结构让表格型数据的处理变得简单高效,支持数据的增删改查及复杂变换。配合Matplotlib这一数据可视化的魔法棒,能以直观图表展现数据分析结果。掌握这三大神器,你也能成为数据分析领域的高手!
79 2
|
3月前
|
机器学习/深度学习 数据采集 数据可视化
基于爬虫和机器学习的招聘数据分析与可视化系统,python django框架,前端bootstrap,机器学习有八种带有可视化大屏和后台
本文介绍了一个基于Python Django框架和Bootstrap前端技术,集成了机器学习算法和数据可视化的招聘数据分析与可视化系统,该系统通过爬虫技术获取职位信息,并使用多种机器学习模型进行薪资预测、职位匹配和趋势分析,提供了一个直观的可视化大屏和后台管理系统,以优化招聘策略并提升决策质量。
179 4
|
3月前
|
机器学习/深度学习 算法 数据挖掘
2023 年第二届钉钉杯大学生大数据挑战赛初赛 初赛 A:智能手机用户监测数据分析 问题二分类与回归问题Python代码分析
本文介绍了2023年第二届钉钉杯大学生大数据挑战赛初赛A题的Python代码分析,涉及智能手机用户监测数据分析中的聚类分析和APP使用情况的分类与回归问题。
84 0
2023 年第二届钉钉杯大学生大数据挑战赛初赛 初赛 A:智能手机用户监测数据分析 问题二分类与回归问题Python代码分析
|
11天前
|
SQL 数据挖掘 Python
数据分析编程:SQL,Python or SPL?
数据分析编程用什么,SQL、python or SPL?话不多说,直接上代码,对比明显,明眼人一看就明了:本案例涵盖五个数据分析任务:1) 计算用户会话次数;2) 球员连续得分分析;3) 连续三天活跃用户数统计;4) 新用户次日留存率计算;5) 股价涨跌幅分析。每个任务基于相应数据表进行处理和计算。
|
1月前
|
机器学习/深度学习 数据采集 数据可视化
数据分析之旅:用Python探索世界
数据分析之旅:用Python探索世界
28 2
|
2月前
|
数据采集 数据可视化 数据挖掘
数据分析大神养成记:Python+Pandas+Matplotlib助你飞跃!
【9月更文挑战第2天】数据分析大神养成记:Python+Pandas+Matplotlib助你飞跃!
57 5