- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
数据分析实战:利用python对心脏病数据集进行分析
首先导入library和设置好超参数,便利后续分析。
import numpy as npimport pandas as pdimport matplotlib.pyplot as pltimport seaborn as sns
通过对数据集读取和描述可以得到这两个表格:
可以看到有303行14列数据,每列的标题是age、sex、cp、……、target。他们就像每次去医院的化验单,非专业人士很多都不生疏。所以利用官方的解释翻译后含义如下:
age: 该伴侣的年龄
sex: 该伴侣的性别 (1 = 男性, 0 = 女性)
cp: 经受过的胸痛类型(值1:典型心绞痛,值2:非典型性心绞痛,值3:非心绞痛,值4:无症状)
trestbps: 该伴侣的静息血压(入院时的毫米汞柱)
chol: 该伴侣的胆固醇测量值,单位 :mg/dl
fbs: 人的空腹血糖( 120 mg/dl,1=真;0=假)
restecg: 静息心电图测量(0=正常,1=患有ST-T波特别,2=依据Estes的标准显示可能或确定的左心室肥大)
thalach: 这伴侣达到的最大心率
exang: 运动引起的心绞痛(1=有过;0=没有)
oldpeak: ST抑制,由运动引起的相对于休息引起的(“ ST”与ECG图上的位置有关。这块比较专业,可以点这个看一个解读)
slope: 最高运动ST段的斜率(值1:上坡,值2:平坦,值3:下坡)
ca: 萤光显色的次要血管数目(0-4)
thal: 一种称为地中海贫血的血液疾病(3=正常;6=固定缺陷;7=可逆缺陷)
target: 心脏病(0=否,1=是)
所以这些信息里都是患病或者健康者的一些身体目标,并没有和他能否抽烟、能否熬夜、能否遗传、能否作息规律那些东西,因而找不到指点现在我们生活的点,比如说明要戒烟戒酒那些东西。
顺手送上一篇知乎链接?此外上边只是我通过原版数据集给的解读翻译的,如有出错误,欢迎订正
拿到一套数据首先是要看看这个数据或许面貌~
男女比例
先看看患病比率,男女比例这些常规的
countNoDisease = len(data[data.target == 0])countHaveDisease = len(data[data.target == 1])countfemale = len(data[data.sex == 0])countmale = len(data[data.sex == 1])print(f没患病人数:{countNoDisease },end= ,)print(没有得心脏病比率: {:.2f}%.format((countNoDisease / (len(data.target))*100)))print(f有患病人数:{countHaveDisease },end= ,)print(患有心脏病比率: {:.2f}%.format((countHaveDisease / (len(data.target))*100)))print(f女性人数:{countfemale },end= ,)print(女性比例: {:.2f}%.format((countfemale / (len(data.sex))*100)))print(f男性人数:{countmale },end= ,)print(男性比例: {:.2f}%.format((countmale / (len(data.sex))*100)))
上边代码得到的答案如下,乍看上去男的多于女的,但前提是这个数据只是这个300人的样本呈现,不代表全人类
没患病人数:138 ,没有得心脏病比率: 45.54%有患病人数:165 ,患有心脏病比率: 54.46%女性人数:96 ,女性比例: 31.68%男性人数:207 ,男性比例: 68.32%
除了用饼图看这个面貌,还可以同时看一下
fig, ax =plt.subplots(1,3) #2个子区域fig.set_size_inches(w=15,h=5) # 设置画布大小sns.countplot(x=sex, data=data,ax=ax[0])plt.xlabel(性别 (0 = female, 1= male))sns.countplot(x=target, data=data,ax=ax[1])plt.xlabel(能否患病 (0 = 未患病, 1= 患病))sns.swarmplot(x=sex,y=age,hue=target,data=data,ax=ax[2])plt.xlabel(性别 (0 = female, 1= male))plt.
文档评论(0)