php开源公司网站,国外有哪些设计网站推荐,网站建设相关费用预算推广,市场营销策划书模板文章目录 0 前言1 课题介绍2 运行效果3 关键代码3.1 数据爬虫3.2 可视化部分 0 前言
#x1f525;这两年开始毕业设计和毕业答辩的要求和难度不断提升#xff0c;传统的毕设题目缺少创新和亮点#xff0c;往往达不到毕业答辩的要求#xff0c;这两年不断有学弟学妹告诉学长…文章目录0 前言1 课题介绍2 运行效果3 关键代码3.1 数据爬虫3.2 可视化部分0 前言这两年开始毕业设计和毕业答辩的要求和难度不断提升传统的毕设题目缺少创新和亮点往往达不到毕业答辩的要求这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求。并且很难找到完整的毕设参考学习资料。为了大家能够顺利以及最少的精力通过毕设学长分享优质毕业设计项目提供大家参考学习今天要分享的是基于python/大数据的疫情分析与可视化系统学长这里给一个题目综合评分(每项满分5分)难度系数4分工作量4分创新点3分选题指导, 项目分享见文末1 课题介绍全球Covid-19大危机影响我们的生活我们的出行、交流、教育、经济等都发生了巨大的变化全球疫情大数据可视化分析与展示可用于社会各界接入疫情数据感知疫情相关情况的实时交互式态势是重要的疫情分析、防控决策依据。我国爆发的疫情对我们的日常生活带来了极大的影响疫情严重期间大家都谈“疫”色变大家对于了解疫情的情况具有巨大的需求并且目前来看我国仍然存在疫情二次爆发的可能大家对于疫情的情况跟踪也急于了解。基于这个情况学长对疫情的数据进行了爬取和可视化的展示和疫情的追踪 也就是学长设计的作品。2 运行效果3 关键代码PS篇幅有限学长仅展示部分关键代码3.1 数据爬虫疫情数据爬虫就是给网站发起请求并从响应中提取需要的数据1、发起请求获取响应通过http库对目标站点进行请求。等同于自己打开浏览器输入网址常用库urllib、requests服务器会返回请求的内容一般为HTML、文档、JSON字符串等2、解析内容寻找自己需要的信息也就是利用正则表达式或者其他库提取目标信息常用库re、beautifulsoup43、保存数据将解析到的数据持久化到数据库中importpymysqlimporttimeimportjsonimporttraceback#追踪异常importrequestsdefget_tencent_data(): :return: 返回历史数据和当日详细数据 urlurl_his#最基本的反爬虫headers{user-agent:Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.88 Safari/537.36,}rrequests.get(url,headers)#使用requests请求resjson.loads(r.text)# json字符串转字典data_alljson.loads(res[data])#再加上history的配套东西r_hisrequests.get(url_his,headers)res_hisjson.loads(r_his.text)data_hisjson.loads(res_his[data])history{}# 历史数据foriindata_his[chinaDayList]:ds2020.i[date]tuptime.strptime(ds,%Y.%m.%d)dstime.strftime(%Y-%m-%d,tup)# 改变时间格式,不然插入数据库会报错数据库是datetime类型confirmi[confirm]suspecti[suspect]heali[heal]deadi[dead]history[ds]{confirm:confirm,suspect:suspect,heal:heal,dead:dead}foriindata_his[chinaDayAddList]:ds2020.i[date]tuptime.strptime(ds,%Y.%m.%d)dstime.strftime(%Y-%m-%d,tup)confirmi[confirm]suspecti[suspect]heali[heal]deadi[dead]history[ds].update({confirm_add:confirm,suspect_add:suspect,heal_add:heal,dead_add:dead})details[]# 当日详细数据update_timedata_all[lastUpdateTime]data_countrydata_all[areaTree]# list 25个国家data_provincedata_country[0][children]# 中国各省forpro_infosindata_province:provincepro_infos[name]# 省名forcity_infosinpro_infos[children]:citycity_infos[name]confirmcity_infos[total][confirm]confirm_addcity_infos[today][confirm]healcity_infos[total][heal]deadcity_infos[total][dead]details.append([update_time,province,city,confirm,confirm_add,heal,dead])returnhistory,details数据表结构history表存储每日的总数据CREATE TABLEhistory(ds datetime NOT NULL COMMENT ‘日期’, confirm int(11)DEFAULT NULL COMMENT ‘累计确诊’, confirm_add int(11)DEFAULT NULL COMMENT ‘当日新增确诊’, suspect int(11)DEFAULT NULL COMMENT ‘剩余疑似’, suspect_add int(11)DEFAULT NULL COMMENT ‘当日新增疑似’, heal int(11)DEFAULT NULL COMMENT ‘累计治愈’, heal_add int(11)DEFAULT NULL COMMENT ‘当日新增治愈’, dead int(11)DEFAULT NULL COMMENT ‘累计死亡’, dead_add int(11)DEFAULT NULL COMMENT ‘当日新增死亡’, PRIMARY KEY(ds)USING BTREE)ENGINEInnoDB DEFAULTCHARSETutf8mb4;details表存储每日的详细数据CREATE TABLE details(idint(11)NOT NULL AUTO_INCREMENT, update_time datetime DEFAULT NULL COMMENT ‘数据最后更新时间’, province varchar(50)DEFAULT NULL COMMENT ‘省’, city varchar(50)DEFAULT NULL COMMENT ‘市’, confirm int(11)DEFAULT NULL COMMENT ‘累计确诊’, confirm_add int(11)DEFAULT NULL COMMENT ‘新增确诊’, heal int(11)DEFAULT NULL COMMENT ‘累计治愈’, dead int(11)DEFAULT NULL COMMENT ‘累计死亡’, PRIMARY KEY(id))ENGINEInnoDB DEFAULTCHARSETutf8mb4;整体的数据库图表3.2 可视化部分echarts绘制图表defget_c1_data(): :return: 返回大屏div idc1 的数据 # 因为会更新多次数据取时间戳最新的那组数据sqlselect sum(confirm),\(select suspect from history order by ds desc limit 1),\sum(heal),\sum(dead) \from details \where update_time(select update_time from details order by update_time desc limit 1) resquery(sql)res_list[str(i)foriinres[0]]res_tupletuple(res_list)returnres_tuple中国疫情地图实现defget_c2_data(): :return: 返回各省数据 # 因为会更新多次数据取时间戳最新的那组数据sqlselect province,sum(confirm) from details \where update_time(select update_time from details \order by update_time desc limit 1) \group by provinceresquery(sql)returnres全国累计趋势defget_l1_data(): :return:返回每天历史累计数据 sqlselect ds,confirm,suspect,heal,dead from historyresquery(sql)returnresdefget_l2_data(): :return:返回每天新增确诊和疑似数据 sqlselect ds,confirm_add,suspect_add from historyresquery(sql)returnresdefget_r1_data(): :return: 返回非湖北地区城市确诊人数前5名 sqlSELECT city,confirm FROM \(select city,confirm from details \where update_time(select update_time from details order by update_time desc limit 1) \and province not in (湖北,北京,上海,天津,重庆) \union all \select province as city,sum(confirm) as confirm from details \where update_time(select update_time from details order by update_time desc limit 1) \and province in (北京,上海,天津,重庆) group by province) as a \ORDER BY confirm DESC LIMIT 5resquery(sql)returnres疫情热搜defget_r2_data(): :return: 返回最近的20条热搜 sqlselect content from hotsearch order by id desc limit 20resquery(sql)# 格式 ((民警抗疫一线奋战16天牺牲1037364,), (四川再派两批医疗队1537382,)returnres选题指导, 项目分享见文末 项目分享:大家可自取用于参考学习获取方式见文末!