一、选题的背景
随着社会经济科学技术的不断发展,人们的生活水平也不断的提高,然而糖尿病的发病人数也在逐年上升,随着 社会老龄化进程越来越深入,糖尿病的发病率上升的趋势越来越明显。糖尿病是临床上非常常见的一种泌尿内科疾病,是因为胰岛素的分泌过少或者胰岛素作用障碍引起的血液中血糖浓度高于正常值的一种代谢性疾病,糖不能进入细胞作为能量消耗掉,大量蓄积在血液中,长期以往可以导致肾、眼、心血管和神经系统的功能障碍甚至衰竭 [1],因此糖尿病可以导致多种的并发症。 如果不及时的进行治疗的话将会带来生命危险。糖尿病在临床上主要表现为 “ 三多一少 ” 即,患者的会有多尿、多饮、多食的表现,虽然患者的食量正常甚至增加,还会出现体质量的下降的现象,除此之外也有患者出现乏力和视力下降等现象。就目前的科学技术来说糖尿病不能够得到根治,只能利用药物进行血糖的控制,因此,该病是终身性质的疾病。面对该病的患病人群广,有效的预防糖尿病的产生就显得非常重要。 二、数据的基本类型
2.数据分析的课程设计方案概述
先对数据集的数据进行所需要的处理,在计算数据集中各种数据与糖尿病的相关性。然后探索其他指标之间的关联性
三数据来源
kaggle Diabetes, Hypertension and Stroke Prediction | Kaggle
四代码部分
#导入包 import numpy as np import pandas as pd import scipy.stats as stats import matplotlib.pyplot as plt import seaborn as sns df = pd.read_csv('diabetes_data.csv' ) plt.rcParams['font.sans-serif'] = ['SimHei'] plt.rcParams['axes.unicode_minus'] = True df.duplicated() df
df.describe()
#柱状图 plt.figure(figsize=(20,60)) #1 plt.subplot(8,1,1) plt.title("性别") sns.countplot(y=df['Sex'],hue=df['Sex'],orientation="horizontal" ) plt.legend() plt.subplot(8,1,2) plt.title("是否高胆固醇患者") sns.countplot(y=df['HighChol'],hue=df['HighChol'],orientation="horizontal" ) plt.legend() plt.subplot(8,1,3) plt.title("近期是否有检查胆固醇") sns.countplot(y=df['CholCheck'],hue=df['CholCheck'],orientation="horizontal" ) plt.legend() plt.subplot(8,1,4) plt.title("是否吸烟") sns.countplot(y=df['Smoker'],hue=df['Smoker'],orientation="horizontal" ) plt.legend() plt.subplot(8,1,5) plt.title("是否患有心脏病") sns.countplot(y=df['HeartDiseaseorAttack'],hue=df['HeartDiseaseorAttack'],orientation="horizontal" ) plt.legend() plt.subplot(8,1,6) plt.title("近期是否运动") sns.countplot(y=df['PhysActivity'],hue=df['PhysActivity'],orientation="horizontal" ) plt.legend() plt.subplot(8,1,7) plt.title("是否吃水果") sns.countplot(y=df['Fruits'],hue=df['Fruits'],orientation="horizontal" ) plt.legend() plt.subplot(8,1,8) plt.title("是否吃蔬菜") sns.countplot(y=df['Veggies'],hue=df['Veggies'],orientation="horizontal" ) plt.legend()
#饼图 plt.figure(figsize=(20,40)) #1 plt.subplot(4,2,1) plt.title("性别") labels=['否','是'] b=df['Sex'].value_counts() plt.pie(b,labels=labels,explode=[0,0.2],autopct='%1.1f%%') plt.subplot(4,2,2) plt.title("是否高胆固醇") labels=['否','是'] b=df['HighChol'].value_counts() plt.pie(b,labels=labels,explode=[0,0.2],autopct='%1.1f%%') plt.subplot(4,2,3) plt.title("近期是否检查过胆固醇") labels=['否','是'] b=df['CholCheck'].value_counts() plt.pie(b,labels=labels,explode=[0,0.2],autopct='%1.1f%%') plt.subplot(4,2,4) plt.title("是否吸烟") labels=['否','是'] b=df['Smoker'].value_counts() plt.pie(b,labels=labels,explode=[0,0.2],autopct='%1.1f%%') plt.subplot(4,2,5) plt.title("是否是心脏病患者") labels=['否','是'] b=df['HeartDiseaseorAttack'].value_counts() plt.pie(b,labels=labels,explode=[0,0.2],autopct='%1.1f%%') plt.subplot(4,2,6) plt.title("近期是否运动") labels=['否','是'] b=df['PhysActivity'].value_counts() plt.pie(b,labels=labels,explode=[0,0.2],autopct='%1.1f%%') plt.subplot(4,2,7) plt.title("吃不吃水果") labels=['否','是'] b=df['Fruits'].value_counts() plt.pie(b,labels=labels,explode=[0,0.2],autopct='%1.1f%%') plt.subplot(4,2,8) plt.title("吃不吃蔬菜") labels=['否','是'] b=df['Veggies'].value_counts() plt.pie(b,labels=labels,explode=[0,0.2],autopct='%1.1f%%')
从上图看定期检查胆固醇的人很少得糖尿病
而心脏病患者也更少同时患有糖尿病
而多运动,多吃水果,蔬菜的人也跟任意预防糖尿病
从上图图中我们能更明显的看出多运动越有效预防糖尿病。
多运动与健康状态,心里健康,身体健康和心脏病之间关系
import seaborn as sns sns.pairplot(df[df.PhysActivity == 1], vars = ['Age', 'BMI','GenHlth','MentHlth','PhysHlth'], hue = 'HeartDiseaseorAttack') plt.show()
import seaborn as sns import matplotlib.pyplot as plt plt.figure( figsize=(30,25), dpi=80) plt.subplot(3,2,1) sns.distplot(df['BMI']) plt.subplot(3,2,2) sns.kdeplot(df['HeartDiseaseorAttack'],color='r') plt.figure( figsize=(30,25), dpi=80) plt.subplot(3,2,3) sns.regplot(x='BMI',y='HeartDiseaseorAttack',data=df) plt.subplot(3,2,4) sns.regplot(x='BMI',y='HeartDiseaseorAttack',data=df,color='r',marker='*') plt.subplot(3,2,5) sns.boxplot(x=df['HeartDiseaseorAttack'],y=df['BMI'],data=df) plt.show()
import numpy as np import pandas as pd import scipy.stats as stats import matplotlib.pyplot as plt import seaborn as sns df = pd.read_csv('diabetes_data.csv' ) plt.rcParams['font.sans-serif'] = ['SimHei'] plt.rcParams['axes.unicode_minus'] = True df.duplicated() #删除多余无关项目 del df['HvyAlcoholConsump'] # del df['GenHlth'] # del df['MentHlth'] # del df['PhysHlth'] del df['DiffWalk'] del df['Stroke'] del df['HighBP'] del df['Diabetes'] #进行数据分析 df.describe() #柱状图 plt.figure(figsize=(20,60)) #1 plt.subplot(8,1,1) plt.title("性别") sns.countplot(y=df['Sex'],hue=df['Sex'],orientation="horizontal" ) plt.legend() plt.subplot(8,1,2) plt.title("是否高胆固醇患者") sns.countplot(y=df['HighChol'],hue=df['HighChol'],orientation="horizontal" ) plt.legend() plt.subplot(8,1,3) plt.title("近期是否有检查胆固醇") sns.countplot(y=df['CholCheck'],hue=df['CholCheck'],orientation="horizontal" ) plt.legend() plt.subplot(8,1,4) plt.title("是否吸烟") sns.countplot(y=df['Smoker'],hue=df['Smoker'],orientation="horizontal" ) plt.legend() plt.subplot(8,1,5) plt.title("是否患有心脏病") sns.countplot(y=df['HeartDiseaseorAttack'],hue=df['HeartDiseaseorAttack'],orientation="horizontal" ) plt.legend() plt.subplot(8,1,6) plt.title("近期是否运动") sns.countplot(y=df['PhysActivity'],hue=df['PhysActivity'],orientation="horizontal" ) plt.legend() plt.subplot(8,1,7) plt.title("是否吃水果") sns.countplot(y=df['Fruits'],hue=df['Fruits'],orientation="horizontal" ) plt.legend() plt.subplot(8,1,8) plt.title("是否吃蔬菜") sns.countplot(y=df['Veggies'],hue=df['Veggies'],orientation="horizontal" ) plt.legend() #饼图 plt.figure(figsize=(20,40)) #1 plt.subplot(4,2,1) plt.title("性别") labels=['否','是'] b=df['Sex'].value_counts() plt.pie(b,labels=labels,explode=[0,0.2],autopct='%1.1f%%') plt.subplot(4,2,2) plt.title("是否高胆固醇") labels=['否','是'] b=df['HighChol'].value_counts() plt.pie(b,labels=labels,explode=[0,0.2],autopct='%1.1f%%') plt.subplot(4,2,3) plt.title("近期是否检查过胆固醇") labels=['否','是'] b=df['CholCheck'].value_counts() plt.pie(b,labels=labels,explode=[0,0.2],autopct='%1.1f%%') plt.subplot(4,2,4) plt.title("是否吸烟") labels=['否','是'] b=df['Smoker'].value_counts() plt.pie(b,labels=labels,explode=[0,0.2],autopct='%1.1f%%') plt.subplot(4,2,5) plt.title("是否是心脏病患者") labels=['否','是'] b=df['HeartDiseaseorAttack'].value_counts() plt.pie(b,labels=labels,explode=[0,0.2],autopct='%1.1f%%') plt.subplot(4,2,6) plt.title("近期是否运动") labels=['否','是'] b=df['PhysActivity'].value_counts() plt.pie(b,labels=labels,explode=[0,0.2],autopct='%1.1f%%') plt.subplot(4,2,7) plt.title("吃不吃水果") labels=['否','是'] b=df['Fruits'].value_counts() plt.pie(b,labels=labels,explode=[0,0.2],autopct='%1.1f%%') plt.subplot(4,2,8) plt.title("吃不吃蔬菜") labels=['否','是'] b=df['Veggies'].value_counts() plt.pie(b,labels=labels,explode=[0,0.2],autopct='%1.1f%%') # 从此图中我们能更明显的看出多运动越有效预防糖尿病。 # 多运动与健康状态,心里健康,身体健康和心脏病之间关系 import seaborn as sns sns.pairplot(df[df.PhysActivity == 1], vars = ['Age', 'BMI','GenHlth','MentHlth','PhysHlth'], hue = 'HeartDiseaseorAttack') plt.show() import seaborn as sns sns.pairplot(df[df.PhysActivity == 0], vars = ['Age', 'BMI','GenHlth','MentHlth','PhysHlth'], hue = 'HeartDiseaseorAttack') plt.show() #体重和身高的比值与心脏病患病几率关系图 import seaborn as sns import matplotlib.pyplot as plt plt.figure( figsize=(30,25), dpi=80) plt.subplot(3,2,1) sns.distplot(df['BMI']) plt.subplot(3,2,2) sns.kdeplot(df['HeartDiseaseorAttack'],color='r') plt.figure( figsize=(30,25), dpi=80) plt.subplot(3,2,3) sns.regplot(x='BMI',y='HeartDiseaseorAttack',data=df) plt.subplot(3,2,4) sns.regplot(x='BMI',y='HeartDiseaseorAttack',data=df,color='r',marker='*') plt.subplot(3,2,5) sns.boxplot(x=df['HeartDiseaseorAttack'],y=df['BMI'],data=df) plt.show()
五总结通过数据可知很大一部分糖尿病病例是可以预防的。事实证明,只要在生活方式上采取简单易行的措施,就能有效预防或延缓2 型糖尿病的发作。保持正常体质量,从事有规律的体育运动,并注重饮食健康,即可降低患糖尿病风险。开展自我管理教育是应对措施极为重要的内容。通过对人群各种数据进行健康教育使得高危人群认识到糖尿病的各种知识,给糖尿病的预防打下坚实的基础,能够做到早发现,早治疗,减少该病的死亡率。
标签:数据分析,subplot,plt,title,df,labels,糖尿病,sns,预防 From: https://www.cnblogs.com/wuwenxing98/p/17001928.html