python对医疗数据进行分析,看看哪个年龄段最容易生病

news2024/11/20 3:36:17

前言

大家早好、午好、晚好吖 ❤ ~欢迎光临本文章

什么是数据分析

明确目的–获得数据(爬虫,现有,公开的数据)–数据预处理——数据可视化——结论

准备

环境使用:

在开始写我们的代码之前,我们要准备好运行代码的程序

  • Anaconda (python3.9)

    –> 识别我们写的代码

开发工具:

  • jupyter notebook

    –> 代码编辑功能敲代码的工具

不会安装的可以文末名片+我获取哦 😎

数据准备:

代码展示

导入模块

import numpy as np
import pandas as pd

import matplotlib.pyplot as plt
%matplotlib inline  

加载字体

plt.rcParams['font.sans-serif'] = ['SimHei'] # 指定默认字体

显示负号

plt.rcParams['axes.unicode_minus'] = False 
data = pd.read_csv('医疗数据.csv',engine='python')

data.head()

import missingno as msno 
msno.matrix(data)

RYQH(入院区划)存在85个(data.info())缺失值

data.RYQH[data.RYQH.isnull()] = data.JZQH[data.RYQH.isnull()]

年龄NL存在缺失值,运用众数补全,其实这里最好应该用患病种类的年龄的中位数来补全最好

data.NL.fillna(data['NL'].mode()[0],inplace=True)

性别XB有两条缺失值,直接拿众数补上

data.XB.fillna('女',inplace=True)

接下里做一些可视化分析

区域分布,这里的划分比较乱,需要把他们统一划分到镇或者街道,这个应该是临沂市的区划

qh_mapping = {'费县':'费县','兰山区':'兰山区','双堠镇':'沂南县','长城镇':'兰陵县','流峪镇':'平邑县','兰陵县':'兰陵县','夏蔚镇':'沂水县','四十里镇':'沂水县','沂水县':'沂水县','市本级':'市本级','郑城镇':'平邑县','山东省临沂市':'市本级','新庄镇':'费县','大兴镇':'临沭县','依汶镇':'沂南县','郯城县港上镇':'郯城县','温水镇':'平邑县','朱田镇':'费县','高新开发区':'高新区','上冶镇':'费县','姚店子镇':'沂水县','汤河':'河东区','临港产业区':'莒南县','孙祖镇':'沂南县','沂南县':'沂南县','圈里乡':'沂水县','平邑镇':'平邑县','郯城县马头镇':'郯城县','临沭县':'临沭县','莒南县':'莒南县','南桥镇':'兰陵县','高都街道办事处':'罗庄区','砖埠镇':'沂南县','青云镇':'临沭县','河东区':'河东区','湖头镇':'沂南县','车辋镇':'兰陵县','郯城县郯城镇':'郯城县','探沂镇':'费县','平邑县':'平邑县','费城镇':'费县','马庄镇':'费县','郯城县胜利乡':'郯城县','郯城县泉源乡':'郯城县','大仲村镇':'兰陵县','店头镇':'临沭县','郯城县马头镇高册':'郯城县','郯城县红花乡':'郯城县','下村乡':'兰陵县','郯城县':'郯城县','郯城县庙山镇':'郯城县','郯城县李庄镇':'郯城县','郯城县杨集镇':'郯城县','郯城县归昌乡':'郯城县','铜石镇':'平邑县','马站镇':'沂水县','杨庄镇':'沂水县','白彦镇':'平邑县','仲村镇':'平邑县','院东头镇':'沂水县','蒙山旅游区':'蒙阴县','大庄镇':'沂南县','玉山镇':'临沭县','许家湖镇':'沂水县','罗庄区':'罗庄区','诸葛镇':'沂水县','经济开发区':'经济开发区','郯城县重坊镇':'郯城县','泉庄镇':'沂水县','褚墩镇':'罗庄区','卞庄街道':'兰陵县','罗庄街道办事处':'罗庄区','马厂湖镇':'兰山区','临沭街道办':'临沭县','蒲汪镇':'沂南县','马牧池乡':'沂南县','地方镇':'平邑县','保太镇':'平邑县','富官庄镇':'沂水县','沂城街道办事处':'沂水县','高桥镇':'沂水县','沂堂镇':'罗庄区','临涧镇':'平邑县','张庄镇':'沂南县','卞桥镇':'平邑县','薛庄镇':'费县','曹庄镇':'临沭县','付庄街道办事处':'罗庄区','苏村镇':'沂南县','梁邱镇':'费县','磨山镇':'兰陵县','石门镇':'临沭县','兰陵镇':'兰陵县','黄山镇':'罗庄区','沙沟镇':'沂水县','丰阳镇':'平邑县','郑山街道办':'临沭县','武台镇':'平邑县','凤凰岭':'河东区','龙家圈镇':'沂水县','尚岩镇':'兰陵县','盛庄街道办事处':'罗庄区','新兴镇':'兰陵县','庄坞镇':'兰陵县','郯城县新村乡':'郯城县','向城镇':'兰陵县','岸堤镇':'沂南县','南张庄乡':'费县','胡阳镇':'费县','铜井镇':'沂南县','郯城县高峰头镇':'郯城县','大田庄乡':'费县','芦柞镇':'兰陵县','鲁城镇':'兰陵县','石井镇':'费县','汤头':'河东区','八湖':'河东区','矿坑镇':'兰陵县','神山镇':'兰陵县','联城':'蒙阴县','工业园':'工业园','辛集镇':'沂南县','相公':'河东区','郯城县花园乡':'郯城县','蛟龙镇':'临沭县','册山街道办事处':'罗庄区','郑旺':'河东区','蒙阴县':'蒙阴县','罗西办事处':'高新区','郯城县沙墩镇':'郯城县','太平':'河东区','青驼镇':'沂南县','界牌':'蒙阴县','高庄镇':'沂水县','金岭镇':'兰陵县','岱崮':'蒙阴县','崔家峪镇':'沂水县','蒙阴街道':'蒙阴县','高新区区直社区':'高新区','九曲':'河东区','桃墟':'蒙阴县','旧寨':'蒙阴县','垛庄':'蒙阴县','高都':'罗庄区','野店':'蒙阴县','道托镇':'沂水县'}
data['QH'] = data['RYQH'].map(qh_mapping)

图像基本设置

plt.rcParams['font.sans-serif']=['SimHei'] #用来正常显示中文标签
plt.rcParams['axes.unicode_minus']=False #用来正常显示负号
fig = plt.figure(figsize=(12,8))
plt.bar(range(16),data.QH.value_counts(),color='purple',alpha=0.4)
plt.xlim(-1,16)
plt.title('人员区划统计')
for x,y in enumerate(data.QH.value_counts()):
    plt.text(x,y+100,y,ha='center')
plt.xticks(range(16),['兰山区','罗庄区','平邑县','莒南县','市本级','临沭县','沂水县','兰陵县','郯城县','费县','沂南县','高新区','河东区','蒙阴县','经济开发区','工业园'],rotation=30);

病患主要集中在兰山区和罗庄区、平邑区,这几个区的常驻人口多

对就诊区划做同样处理

data['JZ'] = data['JZQH'].map(qh_mapping)
fig = plt.figure(figsize=(12,8))
plt.bar(range(14),data.JZ.value_counts(),color='purple',alpha=0.4)
plt.xlim(-1,14)
plt.title('就诊区划统计')
for x,y in enumerate(data.JZ.value_counts()):
    plt.text(x,y+100,y,ha='center')
plt.xticks(range(14),['兰山区','市本级','罗庄区','平邑县','莒南县','沂水县','临沭县','兰陵县','郯城县','沂南县','费县','河东区','蒙阴县','高新区'],rotation=30);



男性病患相对女性更多,但两者接近相同数量级

fig = plt.figure()
box =plt.boxplot([data.NL[data.XB=='男'],data.NL[data.XB=='女']],whis=1.5,
patch_artist=True,
labels = ['男','女'], # 添加具体的标签名称
showmeans=True,
boxprops = {'color':'black','facecolor':'#9999ff'},
flierprops = {'marker':'o','markerfacecolor':'red','color':'black'},
meanprops = {'marker':'D','markerfacecolor':'indianred'},
medianprops = {'linestyle':'--','color':'orange'});
plt.text(0.8,data[data.XB=='男'].NL.quantile([0.25]).iloc[0],data[data.XB=='男'].NL.quantile([0.25]).iloc[0])
plt.text(0.8,data[data.XB=='男'].NL.quantile([0.75]).iloc[0],data[data.XB=='男'].NL.quantile([0.75]).iloc[0])
plt.text(1.8,data[data.XB=='女'].NL.quantile([0.25]).iloc[0],data[data.XB=='女'].NL.quantile([0.25]).iloc[0])
plt.text(1.8,data[data.XB=='女'].NL.quantile([0.75]).iloc[0],data[data.XB=='女'].NL.quantile([0.75]).iloc[0])
plt.title('分性别的年龄箱线图')

男性和女性的年龄分布比较相近,患者的年龄主要集中在44/45-70岁之间

import squarify
fig = plt.figure(figsize=(10,8))
plot = squarify.plot(sizes = dd.ZDMC, # 指定绘图数据
                     label = dd[dd.ZDMC>30]['index'], # 指定标签
                     alpha = 0.6, # 指定透明度
                     value = dd[dd.ZDMC>30]['ZDMC'], # 添加数值标签
                     edgecolor = 'white', # 设置边界框为白色
                     linewidth =3 # 设置边框宽度为3
                    )

支气管肺炎、肺炎、急性支气管炎、发热、急性上呼吸道感染、儿童孤独症是低龄儿童常见疾病,主要是呼吸道疾病

data.ZFY.quantile([0.25,0.75,0.9,0.95])

从费用的分布上来看,医疗费用75%都在1474元,90%在3766元以下



20岁到40岁的女性患病数量高于男性,男女性均在60-80岁患病数量较高

fig = plt.figure(figsize=(15,7))
plt.bar(range(15),data.YLLB.value_counts().sort_index())
plt.xticks(range(15),['住院前急诊','单病种住院','大病购药','无责任人意外伤害','普通住院','普通门诊','机关事业单位生育住院','特殊疾病门诊','生育住院','转省内住院','转省内门诊慢性病','转省外住院','转省外门诊慢性病','转省平台住院','门诊慢性病'],rotation=30)
for x,y in enumerate(data.YLLB.value_counts().sort_index()):
    plt.text(x,y+100,y,ha='center')

fig = plt.figure(figsize=(15,7))
plt.bar(range(6),data.RYLB.value_counts().sort_index())
plt.xticks(range(6),['在职类型1','在职类型2','居民','离休','退休类型1','退休类型2']);

尾语 💝

好了,今天的分享就差不多到这里了!

完整代码、更多资源、疑惑解答直接点击下方名片自取即可。

对下一篇大家想看什么,可在评论区留言哦!看到我会更新哒(ง •_•)ง

喜欢就关注一下博主,或点赞收藏评论一下我的文章叭!!!

最后,宣传一下呀~👇👇👇更多源码、资料、素材、解答、交流皆点击下方名片获取呀👇👇👇

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/495645.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

附录3-动态组件 component与keep-alive setup()写法

目录 1 基本使用 2 按钮切换组件 3 keep-alive 3.1 在切换组件的时候,默认情况下被切换的组件就会被销毁 3.1.1 数据情况 3.1.2 生命周期函数情况 3.2 使用 keep-alive 3.3 keep-alive的生命周期函数 3.4 缓存指定组件 include 3.5 不缓存指定组…

Redis学习——day02

Redis学习基础 性能测试工具:Redis-benchmarkRedis基础知识:redis的数据类型:特殊数据类型: 性能测试工具:Redis-benchmark 官方自带的测试工具参数:简单练习:redis-benchmark -h localhost -p…

前端开发环境搭建踩坑笔记——npm install node-sass安装失败的解决方案

文章目录 问题背景问题描述解决方案1. 检查node-sass安装版本是否正确。2. 检查是否是网络问题 总结 问题背景 开发新的前端项目时,总少不了搭建开发环境和执行npm install安装依赖包,但npm install的过程总是充满着玄学,很难保证一次性成功…

Java之多线程初阶2

一.上节内容复习 上节内容指路:Java之多线程初阶 1.进程和线程的区别 1.进程中至少包含一个线程(主线程) 2.进程是申请计算机资源的最小单位 3.线程是CPU调度的最小单位 4.进程之间是相互隔离的,线程是使用的是进程统一申请来的资源,之间可以相互影响 2.创建线程的四种方…

设计模式——适配器模式(类适配器、对象适配器)

是什么? 我们平时的有线耳机接口分为USB的和Type-C的接口,但是手机的耳机插口却只有一个,像华为的耳机插口现在基本都是Type-c的,那如果我们现在只有USB接口的耳机怎么办呢,这个时候就需要使用到一个转换器&#xff0c…

数据汇总从20s优化至2s(小经验)

目录 项目背景: 数据汇总访问时间长的问题: 解决方案: 1.创建参与访问表 2.使用redis进行优化 总结: 项目背景: 一个简单的抽奖系统,当要统计每天的参与访问,总的参与访问 数据汇总访问时…

运维高可用架构的 6 大常规方案

在介绍高可用架构的方案之前,先说一下什么是高可用架构,高可用架构应具备但不限于以下特征: 主从切换 很好理解,当其中一台机器的服务宕机后,对于服务调用者来说,能够迅速的切换到其他可用服务,…

俩小伙一晚上写了个 AI 应用,月入两万??(文末附开发教程)

开发出一款能够与 AI 对话生成和编辑思维导图的工具,听起来似乎只能是一群专业的 AI 背景团队花费大量的时间和精力训练模型,打磨应用才能完成的事情。 但是,两名大学生却在一夜之间完成了,就像炼金术士将庸俗的材料转化成黄金一…

吃掉脂肪,狂减33斤!午餐菜单一次性公开!

一周高效减脂蔬菜沙拉|上班族学生党减脂备餐便当 😘我是4个月瘦30斤,减脂迫在眉睫,巨掉秤好吃的蔬菜沙拉来咯!肉类提前备好放冷冻,工作日只需10分钟搞定,做减脂早午晚餐都可以哦~ …

Mysql 中left join时 on、and、where区别

1、准备两张表student与class表 student class 2、left join on左连接 select * from student s left join class c on s.classId c.id 左表数据全部显示,关联到的右表数据显示,没有显示null 3、left join on ... and对左表student进行条件筛选 …

解决echarts图表随窗口宽度变化而改变图表的大小

文章目录 前言一、演示前后对比效果二、解決方法1.在代码结尾加上监听方法2.示例 三、总结扩展问题 前言 很多同学在使用echarts时遇到了浏览器窗口大小发生变化时,图表大小没有自适应窗口的宽度,下面我将对比演示随着窗口大小变化,echarts图…

(四)【平衡小车制作】陀螺仪MPU6050

一、硬件结构 1.什么是陀螺仪? 陀螺仪是用于测量或维护方位和角速度的设备。它是一个旋转的轮子或圆盘,其中旋转轴可以不受影响的设定在任何方向。当旋转发生时,根据角动量守恒定律,该轴的方向不受支架倾斜或旋转的影响。 2.MPU…

在Ubuntu18.04中安装uWebSockets库

目录 1.下载uWebSockets库2.下载uSockets3.安装openssl开发包4.编译首先说明这里使用的Ubuntu版本为18.04。 1.下载uWebSockets库 下载uWebSockets库有两种方式,一是终端,从Github中克隆uWebSockets库到Ubuntu本地文件夹,二是打开uWebSockets库下载链接自己下载到Windows,然…

Python实现将快手个人主页的视频进行无水印下载

前言 本文是该专栏的第26篇,后面会持续分享python的各种干货知识,值得关注。 笔者之前有详细介绍快手滑块验证码的识别方法(Python如何解决“快手滑块验证码”(4)),感兴趣的同学可往前翻阅查看。需要注意的是,滑块验证码的缺失距离需要根据你自己电脑的分辨率进行微调,…

STM32 i2c 驱动0.42寸OLED

STM32 i2c 驱动0.42寸OLED,这是个项目中使用的方案,调试也是比较费劲,主要是取字模和代码的匹配,下个篇章中详解一下取字模的过程,在这个方案中的使用。 本文使用的测试代码 STM32i2c驱动0.42寸OLED,SSD1…

体验 ChatGLM-6B

体验 ChatGLM-6B 1. 什么是 ChatGLM-6B2. Github 地址3. 安装 Miniconda34. 创建虚拟环境5. 安装 ChatGLM-6B6. 启动 ChatGLM-6B7. 访问 ChatGLM-6B8. API部署9. 命令行部署10. 其他,修改使用显存大小 1. 什么是 ChatGLM-6B ChatGLM-6B 是一个开源的、支持中英双语…

面了一个4年经验的测试工程师,自动化都不会也要18k,我真是醉了...

在深圳这家金融公司也待了几年,被别人面试过也面试过别人,大大小小的事情也见识不少,今天又是团面的一天, 一百多个人都聚集在一起,因为公司最近在谈项目出来面试就2个人,无奈又被叫到面试房间。 整个过程…

音频焦点使用及原理

音频焦点使用及原理 本博客代码基于Android 10源码 为什么会有音频焦点这一概念? 在Android音频领域中,应用层所有的App播放音频,最终都是走到音频回播线程PlaybackThread中,如果多个App都走到同一个PlaybackThread中去&#xff0…

chat错误代码1020是什么原因导致的-解决chat错误代码1020

ChatGPT拒绝访问1020是什么原因 ChatGPT拒绝访问1020可能是因为服务器故障、网络连接问题或者人工智能模型正在进行训练或调整等原因所致。一般来说,ChatGPT会在进行维护、升级或训练时暂停服务,这可能导致用户在访问ChatGPT时遇到拒绝访问的情况。在该…

2023年淮阴工学院五年一贯制专转本财务管理基础考试大纲

2023年淮阴工学院五年一贯制专转本财务管理基础考试大纲 一、考核对象 本课程的考核对象为五年一贯制高职专转本财务管理专业入学考试普通在校生考生。 二、考核方式 本课程考核采用闭卷笔试的方式。 三、命题依据及原则 1、命题依据 本课程考核命题教材为靳磊编著&…