2012年国赛高教杯数学建模C题脑卒中发病环境因素分析及干预解题全过程文档及程序

2012年国赛高教杯数学建模

C题 脑卒中发病环境因素分析及干预

  脑卒中(俗称脑中风)是目前威胁人类生命的严重疾病之一,它的发生是一个漫长的过程,一旦得病就很难逆转。这种疾病的诱发已经被证实与环境因素,包括气温和湿度之间存在密切的关系。对脑卒中的发病环境因素进行分析,其目的是为了进行疾病的风险评估,对脑卒中高危人群能够及时采取干预措施,也让尚未得病的健康人,或者亚健康人了解自己得脑卒中风险程度,进行自我保护。同时,通过数据模型的建立,掌握疾病发病率的规律,对于卫生行政部门和医疗机构合理调配医务力量、改善就诊治疗环境、配置床位和医疗药物等都具有实际的指导意义。
  数据(见Appendix-C1)来源于中国某城市各家医院2007年1月至2010年12月的脑卒中发病病例信息以及相应期间当地的逐日气象资料(Appendix-C2)。请你们根据题目提供的数据,回答以下问题:
  1.根据病人基本信息,对发病人群进行统计描述。
  2.建立数学模型研究脑卒中发病率与气温、气压、相对湿度间的关系。
  3.查阅和搜集文献中有关脑卒中高危人群的重要特征和关键指标,结合1、2中所得结论,对高危人群提出预警和干预的建议方案。

整体求解过程概述(摘要)

  本文通过建立合理的假设,对某地区2009-2010年脑卒中发病率与8种气象因素进行了相关分析,并经多元逐步回归建立了脑卒中发病率的预报模型进行了定量分析,得到了较为合理的结论。考虑到发病率与气象因素的复杂关系,在逐步线性回归模型的基础上,引进广义线性回归模型(GLM)进行推广。
  针对问题一,本文对性别、年龄段、职业和时间序列以及4年的平均发病例数进行统计和分析,在删除了一些缺失或失真数据的基础上,对数据分别进行整理分析。最后,在性别方面,得到脑卒中发病率男性比女性的高。从年龄结构看,发病人数主要集中在50~90这一年龄区间内,其所占比例达81.10%。从职业结构看,农民的发病率最大。从各年的平均发病人数看,在各年季节交替月份的患病人数较多。
  针对问题二,考虑到气温、气压和相对湿度对发病率的影响不确定,本文首先建立了Pearson相关分析模型,通过r值的大小来判断发病率与各指标是否存在着某种相关。经计算得出温度与发病率呈正相关,气压、相对湿度与发病率呈负相关,且各指标与发病率均呈弱相关,相关度并不显著。其次,考虑到发病率有可能受到多个因素的共同影响,于是用逐步线性回归模型对各因素逐步分析删除,最后得出脑卒中月平均发病率与平均气压、最大气压、最小气压、平均温度、最高温度和最高相对湿度这五个因素的一个多元回归线性预报模型,并进行了一定的定量分析。最后,考虑到逐步线性回归模型的各指标是相互独立性,而气压和温度之间存在相互作用,通过引入平均气压和平均温度交互项,对模型二进行了改进,得到了一个更优的模型。通过对模型的定量分析,本文预报模型具有实际应用价值。
  针对问题三,脑卒中高危人群的重要特征有:偏瘫、失语、精神症状等,关键指标有:高血压、吸烟醉酒、血脂异常、糖尿病等。结合问题一、二的结论,分别针对高危人群提出预警和干预的建议方案。从这两个方案中得知:减少脑卒中发病率要从提高身体素质、疾病的认知和膳食均衡这三方面去考虑。
  最后,考虑到逐步线性回归模型中脑卒中发病率与气象因素中的线性关系,而实际上,发病率与气象因素关系的复杂性线性关系并不足以充分刻画,本文在假设脑卒中发病例数与整个地区是一个小概率事件上,其实际分布接近于泊松分布,利用广义线性回归模型(GLM)进行推广,一定程度优化了逐步回归模型。

模型假设:

  1. 假设4年中年与年间气象没有发生剧烈变化
  2. 假设发病人数不存在人口迁移的巨大变化

问题分析:

  背景分析
  脑卒中(Stroke)是脑中风的学名,是一种突然起病的脑血液循环障碍性疾病。又叫脑血管意外。是指在脑血管疾病的病人,因各种诱发因素引起脑内动脉狭窄,闭塞或破裂,而造成急性脑血液循环障碍,临床上表现为一过性或永久性脑功能障碍的症状和体征.脑卒中分为缺血性脑卒中和出血性脑卒中。根据统计中国每年发生脑卒中病人达200万,发病率高达120/10万。现幸存中风病人700万,其中450万病人不同程度丧失劳动力和生活不能自理。致残率高达75%。尽管该病与高血压、心脏病等主要危险因素有关,但其发病往往受季节气候变化及其它外界因素的影响。
  气象因素的变化对脑血管病发病的影响,国内外均有报道。多数研究指出,在冬季脑卒中的发病率有明显增加,发病率与温度有很大的关联,但也有研究指出,脑卒中发病率与季节没有明显的变化,这些日渐深入的研究结果不尽一致,主要是因为各地的地理气候特点差别较大以及社会因素、人种遗传等等方面的区别。为了更好的预防这种疾病,本文对2007-2010年某地区脑卒中发病率与该地区相应的思念气象因素指标进行分析,初步验证了气象因素与脑卒中发病率之间的关系。
  问题一分析
  根据附件1-4,本文以脑卒中发病人数,分别从发病时间、性别、年龄结构和职业进行数据整理分析,得到一些初步的结论,对脑卒中发病情况进行一些简单的分析与总结。
  通过数据的初始处理发现题目所给的数据中存在空缺,对于数据的统计问题,数据的空缺是不可忽视的地方,要综合考虑空缺数据的作用以及给数据统计造成的影响大小,乔珠峰、田凤占和黄厚宽[1]等人指出:如果缺失的数据占总数据量的比例较小,认为缺失数据对原始数据的处理影响较小,可以忽略不计,如果缺失数据在总数据量中所占比例较大可能对原始数据的处理造成很大的影响,不能直接忽略,需要通过填补来完善数据才能进行计算。
  对每个部分共计多少数据,缺失多少数据,删除多少数据以及剩余多少完整数据进行研究,通过对数据的进一步处理,得到男女患病比例的扇形图,将年龄结构处理后的数据转化成柱状图,据图分析患病人群所处的年龄段,根据这一结果结合脑卒中的患病原因分析不同年龄段患病的原因;对于按月份划分的数据,做出各年中每月患病人数与年份患病总人数比值的折线图,通过图示结果分析患病人数与月份之间的关系,从而反映气候的变化对脑卒中病发的影响情况,以及对此应做出的相关防御措施。
  对于职业这一类别的数据,通过统计缺失数据所占的比例比较大,如果要对数据进行填补将会耗费很大的人力物力,对此认为获取这类缺失数据造成的代价太大,此外由于职业之一类别的数据分析没能对解题带来较大的帮助,而且职业指标的概念比较模糊无法准确描述这类数据的处理对现实生活和相关研究有何积极作用,因此本文不再对这一类别的数据进行统计分析。
  问题二分析
  本文通过统计2007-2010年间的脑卒中月平均发病人数,对应选取4年间的8个气象因子:平均气压、最高气压、最低气压、平均温度、最高温度、最低温度、平均相对湿度以及最低相对湿度,试图建立月平均发病率与气象因子之间的数学模型。通过查询资料得知发病率等于月发病人数与发病总人数的比值,但是使用发病率建立的模型所反映的变量之间的变化趋势不明显(无量纲化处理后的原因),故本文建立发病人数与气象因素之间的模型,再用发病人数除以总人数即可得到发病率与气象因子之见的数学模型。
  首先建立基于Pearson简单相关分析的模型,分析脑卒中月均患病人数与气象指标的相关关系,然后本文利用逐步回归分析建立月发病率与多项气象因素之间的预测模型,通过t值检验,逐步剔除一些对因变量影响不大的指标,直到所有指标都通过t值检验才终止计算,得到最终脑卒中月发病数与气象因素的预报模型。最后本文认为气压与温度之间存在一定的相互关系,在逐步回归模型的基础上通过引入交叉项对模型进行改进,进一步提高模型的拟合度,完善模型。
  问题三分析
  通过查阅资料得到脑卒中高危人群的重要特征和关键指标,结合问题一和问题二得到的结论,分别对高危人群提出预警和干预的建议方案。对预警方案从生活、医疗和就医三个方面提出建议;对干预方案从脑卒中高危人群和非高危人群两方面提出建议。

模型的建立与求解整体论文缩略图

在这里插入图片描述

全部论文请见下方“ 只会建模 QQ名片” 点击QQ名片即可

程序代码:

import pandas as pd
from pyecharts.charts import Page  #页面
from pyecharts.charts import Bar  #柱状图
from pyecharts.charts import Pie  #饼状图
from pyecharts.charts import Line #折线图
from pyecharts.charts import Scatter #散点图
from pyecharts import options as opts# 定义日期转换函数
def convert_date(date_str):try:return pd.to_datetime(date_str, errors='coerce').strftime('%Y-%m-%d')except:return ''def analyze():df1 = pd.read_excel('Appendix-C1/data1.xls', index_col=0)df1 = df1.reset_index()df2 = pd.read_excel('Appendix-C1/data2.xls', index_col=0)df2 = df2.reset_index()df3 = pd.read_excel('Appendix-C1/data3.xls', index_col=0)df3 = df3.reset_index()df4 = pd.read_excel('Appendix-C1/data4.xls', index_col=0)df4 = df4.reset_index()df = df1.append(df2, ignore_index=True)df = df.append(df3, ignore_index=True)df = df.append(df4, ignore_index=True)print("去除脏数据前总数据量:" + str(df.shape[0]))target_column = "Sex"df_cleanNullSex = df.dropna(subset=[target_column])print("去除Sex数据为空的数据量:" + str(df_cleanNullSex.shape[0]))df_Sex = df_cleanNullSex[df_cleanNullSex[target_column].isin([1.0, 2.0])]  # 筛选值为 1 或 2 的行print("去除Sex脏数据的数据量:" + str(df_Sex.shape[0]))target_column = "Age"  # 将列转换为数值类型,非数字值会被置为 NaNdf_cleanNullSex = df_Sexdf_cleanNullSex[target_column] = pd.to_numeric(df_cleanNullSex[target_column], errors='coerce')# 筛选值在 0 到 110 范围内的行,并删除空值和乱码df_cleanSex = df_cleanNullSex.dropna(subset=[target_column])  # 删除空值df_cleanSex = df_cleanSex[(df_cleanSex[target_column] >= 0) & (df_cleanSex[target_column] <= 110)]  # 筛选值在 0 到 110 范围内的行print("去除Age数据为空的数据量:" + str(df_cleanSex.shape[0]))df = df_cleanSex# 将Occupation列的空值替换为 9target_column = "Occupation"  # 替换为目标列的名称df[target_column] = df[target_column].fillna(9)# 将日期转换为日期时间类型并统一格式Report timedf['Time of incidence'] = df['Time of incidence'].apply(convert_date)df['Report time'] = df['Report time'].apply(convert_date)# 将日期列转换为 datetime 类型df['Time of incidence'] = pd.to_datetime(df['Time of incidence'], format='%Y-%m-%d')# 筛选出2007-2010年之前的数据df = df[(df['Time of incidence'].dt.year > 2006) & (df['Time of incidence'].dt.year < 2011)].copy()df = df[df['Time of incidence'].dt.month < 13].copy()df = df[df['Time of incidence'].dt.month > 0].copy()df = df[df['Time of incidence'].dt.day < 32].copy()df_filtered = df[df['Time of incidence'].dt.day > 0].copy()# 提取日期的年月日部分df_filtered['Time of incidence'] = df_filtered['Time of incidence'].dt.strftime('%Y-%m-%d')#print(df_filtered)df_filtered.to_excel('Appendix-C1/clean_data.xlsx', engine='openpyxl')#print(df_filtered.shape[0])#性别-患病 饼状图
def viewSexPie(df):# 定义性别映射字典gender_mapping = {1: '男', 2: '女'}# 统计患病人数并添加到结果列表gender_counts = df['Sex'].map(gender_mapping).value_counts()# 获取类型和数量的列表gender = gender_counts.index.tolist()counts = gender_counts.values.tolist()# 打印最终结果print(gender)print(counts)# 可视化# 创建柱状图对象sum = 0for sl in counts:data = float(sl)sum += dataprint(sum)counts_list = []for sl in counts:data1 = float(sl) / sumreslut = round(data1*100,2)counts_list.append(reslut)# print(counts_list)c = Pie()  # 饼状图# 设置圆环的粗细和大小,同时将年份和数量作为标签添加到饼状图中c.add("",[list(z) for z in zip(gender, counts_list)],label_opts=opts.LabelOpts(formatter="{b}: {c}"))# 设置标题和单位c.set_global_opts(title_opts=opts.TitleOpts(title="脑卒中患者按性别统计人数分布比例",pos_left="center",  # 标题居中pos_bottom="bottom"),graphic_opts=[opts.GraphicText(graphic_item=opts.GraphicItem(left="82%",top="10%",z=100),graphic_textstyle_opts=opts.GraphicTextStyleOpts(text="单位:%",  # 添加额外的文本font="13px SimSun"),)])return c#性别-患病-年份 柱状图
def viewSexYearZhu(df):# 定义性别映射字典gender_mapping = {1: '男', 2: '女'}df['Gender'] = df['Sex'].map(gender_mapping)# 提取年份df['Year'] = pd.to_datetime(df['Time of incidence'], format='%Y-%m-%d').dt.year# 按照年份统计人数year_counts = df['Year'].value_counts().sort_index()counts = year_counts.values.tolist()# 分组并统计每个年龄段的男性和女性患病人数year_gender_counts = df.groupby(['Year', 'Gender']).size().unstack()# 获取类型和数量的列表# 生成year数据year = year_counts.index.tolist()# 提取female_counts数据female_counts = year_gender_counts['女'].tolist()# 生成male_counts数据male_counts = year_gender_counts['男'].tolist()# 打印最终结果print(year)print(female_counts)print(male_counts)# 可视化# 创建柱状图对象c = (Bar().add_xaxis(year).add_yaxis("女性患病人数", female_counts).add_yaxis("男性患病总人数", male_counts).add_yaxis("患病总人数", counts).set_global_opts(title_opts=opts.TitleOpts(title="脑卒中患者按年份统计人数分布",pos_left="center",pos_bottom="bottom"),xaxis_opts=opts.AxisOpts(name="年份/年"),yaxis_opts=opts.AxisOpts(name="患病人数/人")))return c#职业-患病 饼状图
def viewOccupationPie(df):# 定义职业代码和职业名称的映射字典occupation_mapping = {1: '农民',2: '工人',3: '退休人员',4: '教师',5: '渔民',6: '医务人员',7: '职工',8: '离退人员',9: '其他或缺失',}# 将职业代码映射为实际的职业名称df['Occupation'] = df['Occupation'].map(occupation_mapping)# 统计各个职业的人数occupation_counts = df['Occupation'].value_counts()#print(occupation_counts)# 获取类型和数量的列表occupation = occupation_counts.index.tolist()counts = occupation_counts.values.tolist()# 打印最终结果print(occupation)print(counts)# 可视化sum = 0for sl in counts:data = float(sl)sum += data# print(sum)counts_list = []for sl in counts:data1 = float(sl) / sumreslut = round(data1 * 100, 2)counts_list.append(reslut)# print(counts_list)c = Pie()  # 饼状图# 设置圆环的粗细和大小,同时将年份和数量作为标签添加到饼状图中c.add("",[list(z) for z in zip(occupation, counts_list)],label_opts=opts.LabelOpts(formatter="{b}: {c}"))# 设置标题和单位c.set_global_opts(title_opts=opts.TitleOpts(title="脑卒中患者按职业统计人数分布比例",pos_left="center",  # 标题居中pos_bottom="bottom"),graphic_opts=[opts.GraphicText(graphic_item=opts.GraphicItem(left="82%",top="10%",z=100),graphic_textstyle_opts=opts.GraphicTextStyleOpts(text="单位:%",  # 添加额外的文本font="13px SimSun"),)])# 可视化# 创建柱状图对象c1 = (Bar().add_xaxis(occupation).add_yaxis("患病人数", counts).set_global_opts(title_opts=opts.TitleOpts(title="脑卒中患者按职业统计人数分布",pos_left="center",pos_bottom="bottom"),xaxis_opts=opts.AxisOpts(name="职业"),yaxis_opts=opts.AxisOpts(name="患病人数/人")))return c1return c#年龄-患病 柱状图
def viewAgeZhu(df):# 将年龄列转换为整数类型df['Age'] = df['Age'].astype(int)# 打印结果#print(df['Age'])# 定义年龄段区间age_bins = [1, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 110]labels = ['1–10', '11–20', '21–30', '31–40', '41–50', '51–60','61–70', '71–80', '81–90', '91–100', '101–110']# 将年龄数据分配到对应的年龄段df['Age Category'] = pd.cut(df['Age'], bins=age_bins, labels=labels)#print(df['Age Category'])# 统计每个年龄段的患病人数age_counts = df['Age Category'].value_counts().sort_index()#print(age_counts)# 获取类型和数量的列表age = age_counts.index.tolist()counts = age_counts.values.tolist()# 打印最终结果print(age)print(counts)# 可视化# 创建柱状图对象c = (Bar().add_xaxis(age).add_yaxis("患病人数", counts).set_global_opts(title_opts=opts.TitleOpts(title="脑卒中患者按年龄阶段统计人数分布",pos_left="center",pos_bottom="bottom"),xaxis_opts=opts.AxisOpts(name="年龄阶段"),yaxis_opts=opts.AxisOpts(name="患病人数/人")))return c#年龄-性别-患病 折线图
def viewSexAgeLine(df):# 定义性别映射字典gender_mapping = {1: '男', 2: '女'}df['Gender'] = df['Sex'].map(gender_mapping)# 将年龄列转换为整数类型df['Age'] = df['Age'].astype(int)# 定义年龄段区间age_bins = [1, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 110]labels = ['1–10', '11–20', '21–30', '31–40', '41–50', '51–60','61–70', '71–80', '81–90', '91–100', '101–110']# 将年龄数据分配到对应的年龄段df['Age Category'] = pd.cut(df['Age'], bins=age_bins, labels=labels)# 统计每个年龄段的患病人数age_counts = df['Age Category'].value_counts().sort_index()# 分组并统计每个年龄段的男性和女性患病人数age_gender_counts = df.groupby(['Age Category', 'Gender']).size().unstack()# 获取类型和数量的列表# 生成age_category数据age_category = age_counts.index.tolist()# # 提取female_counts数据female_counts = age_gender_counts['女'].tolist()# # 生成male_counts数据male_counts = age_gender_counts['男'].tolist()# 打印最终结果print(age_category)print(female_counts)print(male_counts)# 可视化c = (Line().add_xaxis(age_category).add_yaxis("女性患病人数", female_counts).add_yaxis("男性患病总人数", male_counts).add_yaxis("患病总人数", age_counts).set_global_opts(xaxis_opts=opts.AxisOpts(name="年龄阶段"),yaxis_opts=opts.AxisOpts(name="患病人数/人"),title_opts=opts.TitleOpts(title='脑卒中患者按年龄阶段统计人数分布趋势',pos_left="center",pos_bottom="bottom")))return c#年份-患病 柱状图
def viewYearZhu(df):# 提取年份df['Year'] = pd.to_datetime(df['Time of incidence'], format='%Y-%m-%d').dt.year# 按照年份统计人数year_counts = df['Year'].value_counts().sort_index()# 打印结果print(year_counts)# 获取类型和数量的列表year= year_counts.index.tolist()counts = year_counts.values.tolist()# 打印最终结果print(year)print(counts)# 可视化# 创建柱状图对象c = (Bar().add_xaxis(year).add_yaxis("患病人数", counts).set_global_opts(title_opts=opts.TitleOpts(title="脑卒中患者按年份统计人数分布",pos_left="center",pos_bottom="bottom"),xaxis_opts=opts.AxisOpts(name="年份/年"),yaxis_opts=opts.AxisOpts(name="患病人数/人")))return c#月份-患病 折线图
def viewMonthLine(df):# 提取月份df['Month'] = pd.to_datetime(df['Time of incidence'], format='%Y-%m-%d').dt.month# 按照月份统计人数month_counts = df['Month'].value_counts().sort_index()# 打印结果#print(month_counts)# 获取类型和数量的列表month = month_counts.index.tolist()string_month = [str(num) for num in month]counts = month_counts.values.tolist()# 打印最终结果print(string_month)print(counts)# 可视化c = (Line().add_xaxis(string_month).add_yaxis("患病人数", counts).set_global_opts(xaxis_opts=opts.AxisOpts(name="月份/月"),yaxis_opts=opts.AxisOpts(name="患病人数/人"),title_opts=opts.TitleOpts(title='脑卒中患者按月份统计人数分布趋势',pos_left="center",pos_bottom="bottom")))return c#月份-年份-患病 柱状图
def viewYearMonthZhu(df):# 提取月份df['Month'] = pd.to_datetime(df['Time of incidence'], format='%Y-%m-%d').dt.month# 按照月份统计人数month_counts = df['Month'].value_counts().sort_index()# 获取类型和数量的列表month = month_counts.index.tolist()string_month = [str(num) for num in month]counts = month_counts.values.tolist()# 打印最终结果print(string_month)print(counts)# 提取年份df['Year'] = pd.to_datetime(df['Time of incidence'], format='%Y-%m-%d').dt.year# 按照年份统计人数year_counts = df['Year'].value_counts().sort_index()print(year_counts)# 分组并统计每个月份中每一年一年的患者人数year_month_counts = df.groupby(['Month', 'Year']).size().unstack()# 获取类型和数量的列表monthCounts = month_counts.values.tolist()# 提取2007数据counts2007 = year_month_counts[2007].tolist()# 生成20008数据counts2008 = year_month_counts[2008].tolist()# 提取2009数据counts2009 = year_month_counts[2009].tolist()# 生成2010数据counts2010 = year_month_counts[2010].tolist()# 打印最终结果print(monthCounts)print(counts2007)print(counts2008)print(counts2009)print(counts2010)# 可视化# 创建柱状图对象c = (Bar().add_xaxis(string_month).add_yaxis("2007患病人数", counts2007).add_yaxis("2008患病人数", counts2008).add_yaxis("2009患病人数", counts2009).add_yaxis("2010患病人数", counts2010)#.add_yaxis("患病总人数", monthCounts).set_global_opts(title_opts=opts.TitleOpts(title="脑卒中患者按月份中的年份统计人数分布",pos_left="center",pos_bottom="bottom"),xaxis_opts=opts.AxisOpts(name="月份/月"),yaxis_opts=opts.AxisOpts(name="患病人数/人")))return c#月份-年份-患病 折线图
def viewYearMonthLine(df):# 提取月份df['Month'] = pd.to_datetime(df['Time of incidence'], format='%Y-%m-%d').dt.month# 按照月份统计人数month_counts = df['Month'].value_counts().sort_index()# 获取类型和数量的列表month = month_counts.index.tolist()string_month = [str(num) for num in month]counts = month_counts.values.tolist()# 打印最终结果print(string_month)print(counts)# 提取年份df['Year'] = pd.to_datetime(df['Time of incidence'], format='%Y-%m-%d').dt.year# 按照年份统计人数year_counts = df['Year'].value_counts().sort_index()print(year_counts)# 分组并统计每个月份中每一年一年的患者人数year_month_counts = df.groupby(['Month', 'Year']).size().unstack()# 获取类型和数量的列表monthCounts = month_counts.values.tolist()# 提取2007数据counts2007 = year_month_counts[2007].tolist()# 生成20008数据counts2008 = year_month_counts[2008].tolist()# 提取2009数据counts2009 = year_month_counts[2009].tolist()# 生成2010数据counts2010 = year_month_counts[2010].tolist()# 打印最终结果#print(monthCounts)print(counts2007)print(counts2008)print(counts2009)print(counts2010)# 可视化c = (Line().add_xaxis(string_month).add_yaxis("2007患病人数", counts2007).add_yaxis("2008患病人数", counts2008).add_yaxis("2009患病人数", counts2009).add_yaxis("2010患病人数", counts2010).set_global_opts(xaxis_opts=opts.AxisOpts(name="月份/月"),yaxis_opts=opts.AxisOpts(name="患病人数/人"),title_opts=opts.TitleOpts(title='脑卒中患者按月份中的年份统计人数分布趋势',pos_left="center",pos_bottom="bottom")))return cdef view():# 读取数据df = pd.read_excel("Appendix-C1/clean_data1.xlsx")# 创建页面,将柱状图和饼状图添加到同一页中page = Page(layout=Page.SimplePageLayout, page_title="脑卒中发病人群的统计描述")page.add(viewSexPie(df), viewSexYearZhu(df), viewOccupationPie(df) ,viewAgeZhu(df) ,viewYearZhu(df),viewSexAgeLine(df) ,viewMonthLine(df) , viewYearMonthZhu(df), viewYearMonthLine(df) )# 渲染生成 HTML 文件page.render("Graph.html")# 按间距中的绿色按钮以运行脚本。
if __name__ == '__main__':analyze()view()
全部论文请见下方“ 只会建模 QQ名片” 点击QQ名片即可

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

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

相关文章

如何利用kafka实现高效数据同步?

在我们之前的文章有详细介绍过Kafka的结构、特点和处理方式。具备告诉处理能力的kafka被利用在数据同步和数据传输上&#xff0c;今天来说下kafka是怎么实现高效的数据同步和传输。 一、可靠的数据传输 1. 持久性保证&#xff1a;Kafka 将数据持久化到磁盘上&#xff0c;即使在…

深度学习实战94-基于图卷积神经网络GCN模型的搭建以及在金融领域的场景

大家好,我是微学AI,今天给大家介绍一下深度学习实战94-基于图卷积神经网络GCN模型的搭建以及在金融领域的场景。文章首先介绍了GCN模型的原理及模型结构,随后提供了数据样例,并详细展示了实战代码。通过本文,读者可以深入了解GCN模型在金融场景下的应用,同时掌握代码的具…

wifi、热点密码破解 - python

乐子脚本&#xff0c;有点小慢&#xff0c;试过多线程&#xff0c;系统 wifi 连接太慢了&#xff0c;需要时间确认&#xff0c;多线程的话系统根本反应不过来。 也就可以试试破解别人的热点&#xff0c;一般都是 123456 这样的傻鸟口令 # coding:utf-8 import pywifi from pyw…

BF 算法

目录 BF算法 算法思路 完整代码 时间复杂度 查找所有起始位置 BF算法 BF算法&#xff1a;即暴力(Brute Force)算法&#xff0c;是一种模式匹配算法&#xff0c;将目标串 S 的第一个字符与模式串 T 的第一个字符进行匹配&#xff0c;若相等&#xff0c;则继续比较 S 的第二…

【最新华为OD机试E卷-支持在线评测】TLV解码(100分)多语言题解-(Python/C/JavaScript/Java/Cpp)

🍭 大家好这里是春秋招笔试突围 ,一枚热爱算法的程序员 💻 ACM金牌🏅️团队 | 大厂实习经历 | 多年算法竞赛经历 ✨ 本系列打算持续跟新华为OD-E/D卷的多语言AC题解 🧩 大部分包含 Python / C / Javascript / Java / Cpp 多语言代码 👏 感谢大家的订阅➕ 和 喜欢�…

【git】如何快速准确的回退(reverse)已经合并(merge)主分支(master)的新提交代码

文章目录 前言一、merge模式二、回滚步骤总结 前言 我们在做一些需求&#xff0c;正常流程经过开发&#xff0c;测试到最后和代码上线。但是有时候就会发生一些小插曲&#xff0c;比如产品说老板说某某某你的代码要延后上线&#xff01;&#xff01;或者你写的不合格预发环境出…

在Openshift(K8S)上通过EMQX Operator部署Emqx集群

EMQX Operator 简介 EMQX Broker/Enterprise 是一个云原生的 MQTT 消息中间件。 我们提供了 EMQX Kubernetes Operator 来帮助您在 Kubernetes 的环境上快速创建和管理 EMQX Broker/Enterprise 集群。 它可以大大简化部署和管理 EMQX 集群的流程&#xff0c;对于管理和配置的知…

ubuntu 安装keepalived+haproxy

一、安装keepalived sudo apt update sudo apt install keepalived sudo systemctl start keepalived sudo systemctl enable keepalived sudo systemctl status keepalived#配置Keepalived sudo cp /etc/keepalived/keepalived.conf.sample /etc/keepalived/keepalived.conf …

Java面试宝典-并发编程学习02

目录 21、并行与并发有什么区别&#xff1f; 22、多线程中的上下文切换指的是什么&#xff1f; 23、Java 中用到的线程调度算法是什么&#xff1f; 24、Java中线程调度器和时间分片指的是什么&#xff1f; 25、什么是原子操作&#xff1f;Java中有哪些原子类&#xff1f; 26、w…

Python案例小练习——小计算器

文章目录 前言一、代码展示二、运行展示 前言 这是用python实现一个简单的计器。 一、代码展示 def calculate(num1, op, num2):if op "":return float(num1) float(num2)elif op "-":return float(num1) - float(num2)elif op "*":return…

【Mac苹果电脑安装】DBeaverEE for Mac 数据库管理工具软件教程【保姆级教程】

Mac分享吧 文章目录 DBeaverEE 数据库管理工具 软件安装完成&#xff0c;打开效果图片Mac电脑 DBeaverEE 数据库管理工具 软件安装——v24.21️⃣&#xff1a;下载软件2️⃣&#xff1a;安装JDK&#xff0c;根据下图操作步骤提示完成安装3️⃣&#xff1a;安装DBeaverEE&#…

C++类域访问方式(public,protected,private)对象访问 , 通过成员函数访问 ,通过友元函数访问

c类的用法 yC 类的基础用法与详细说明&#xff1a;简单易懂的入门指南-CSDN博客 类的基本概念&#x1f447; 类是C中的一个用户定义的数据类型&#xff0c;它可以包含数据&#xff08;成员变量&#xff09;和函数&#xff08;成员函数&#xff09;。通过类&#xff0c;我们可以…

【Jenkins】windows安装步骤

【Jenkins】windows安装步骤 官网使用WAR包方式运行浏览器访问Jenkinswindows-installer安装安装过程问题解决This account either does not hava the privilege to logon as a service or the account was unable to be verified 安装成功修改jenkins.xml启动jenkins访问jenki…

springboot030甘肃非物质文化网站的设计与开发(论文+源码)_kaic

毕 业 设 计&#xff08;论 文&#xff09; 题目&#xff1a;甘肃非物质文化网站设计与实现 摘 要 现代经济快节奏发展以及不断完善升级的信息化技术&#xff0c;让传统数据信息的管理升级为软件存储&#xff0c;归纳&#xff0c;集中处理数据信息的管理方式。本甘肃非物质文化…

Java基于SSM框架的教学辅助微信小程序【附源码、文档】

博主介绍&#xff1a;✌IT徐师兄、7年大厂程序员经历。全网粉丝15W、csdn博客专家、掘金/华为云//InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447;&#x1f3…

vim实用笔记

函数跳转功能 想要使用函数跳转功能需要先安装 ctags sudo apt-get install exuberant-ctags接着&#xff0c;在源文件目录树执行如下命令&#xff1a; ctags -R . 即可在该目录下生成一个tags文件&#xff0c; 这个文件就是所有函数和变量的索引 接着打开用vim打开任一文件…

BinAbsInspector部署、使用与原理分析

文章目录 前言1、概述2、安装与使用2.1、源码安装2.1.1、部署系统依赖组件2.1.1.1、部署基础依赖组件2.1.1.2、部署Ghidra 11.0.32.1.1.2.1、部署JDK 172.1.1.2.2、部署Gradle 7.4.22.1.1.2.3、部署Ghidra 11.0.3 2.1.1.3、部署Z3 4.8.15 2.1.2、使用源码安装系统 2.2、使用方法…

CMake 教程(二)添加库

目录 一、实例一——创建库1、add_library2、target_include_directories()、target_link_libraries()2.1 target_include_directories()2.2 target_link_libraries() 3、实例操作 二、实例二——添加选项1、option()2、实例操作 在第一节 CMake 教程&#xff08;一&#xff09…

学习笔记(202410)

课程&#xff1a;Generative AI for Software Development 链接&#xff1a;吴恩达同步最新AI专业课&#xff0c;第54讲&#xff1a;用人工智能做软件开发--Generative AI for Software Development_哔哩哔哩_bilibili 时间&#xff1a;2024-10-12 至 概述&#xff1a;使用C…

ES-入门-javaApi-文档-新增-删除

新增指定索引的文档数据的代码如下&#xff1a; package com.atgulgu.es.test;import com.fasterxml.jackson.databind.ObjectMapper; import org.apache.http.HttpHost; import org.elasticsearch.action.index.IndexRequest; import org.elasticsearch.action.index.IndexRe…