毕设项目 - 大数据+爬虫 疫情分析可视化
文章目錄
- 0 前言
- 1 課題介紹
- 2 運行效果
- 3 關鍵代碼
- 3.1 數據爬蟲
- 3.2 可視化部分
- 4 最后
0 前言
🔥 這兩年開始畢業設計和畢業答辯的要求和難度不斷提升,傳統的畢設題目缺少創新和亮點,往往達不到畢業答辯的要求,這兩年不斷有學弟學妹告訴學長自己做的項目系統達不到老師的要求。
為了大家能夠順利以及最少的精力通過畢設,學長分享優質畢業設計項目,今天要分享的是
🚩 基于python/大數據的疫情分析與可視化系統
🥇學長這里給一個題目綜合評分(每項滿分5分)
- 難度系數:4分
- 工作量:4分
- 創新點:3分
🧿 選題指導, 項目分享:
https://gitee.com/yaa-dc/warehouse-1/blob/master/python/README.md
1 課題介紹
全球Covid-19大危機影響我們的生活,我們的出行、交流、教育、經濟等都發生了巨大的變化,全球疫情大數據可視化分析與展示,可用于社會各界接入疫情數據,感知疫情相關情況的實時交互式態勢,是重要的疫情分析、防控決策依據。
我國爆發的疫情,對我們的日常生活帶來了極大的影響,疫情嚴重期間,大家都談“疫”色變,大家對于了解疫情的情況具有巨大的需求;并且,目前來看我國仍然存在疫情二次爆發的可能,大家對于疫情的情況跟蹤也急于了解。
基于這個情況,學長對疫情的數據進行了爬取和可視化的展示和疫情的追蹤, 也就是學長設計的作品。
2 運行效果
3 關鍵代碼
PS:篇幅有限,學長僅展示部分關鍵代碼
3.1 數據爬蟲
疫情數據爬蟲,就是給網站發起請求,并從響應中提取需要的數據
1、發起請求,獲取響應
- 通過http庫,對目標站點進行請求。等同于自己打開瀏覽器輸入網址
- 常用庫:urllib、requests
- 服務器會返回請求的內容一般為:HTML、文檔、JSON字符串等
2、解析內容
- 尋找自己需要的信息,也就是利用正則表達式或者其他庫提取目標信息
- 常用庫:re、beautifulsoup4
3、保存數據
- 將解析到的數據持久化到數據庫中
數據表結構
history表存儲每日的總數據
CREATE TABLE history ( 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 ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;details表存儲每日的詳細數據
CREATE TABLE details ( id int(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) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;整體的數據庫圖表:
3.2 可視化部分
echarts繪制圖表
def get_c1_data():""":return: 返回大屏div id=c1 的數據"""# 因為會更新多次數據,取時間戳最新的那組數據sql = "select 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) "res = query(sql)res_list = [str(i) for i in res[0]]res_tuple=tuple(res_list)return res_tuple中國疫情地圖實現
def get_c2_data():""":return: 返回各省數據"""# 因為會更新多次數據,取時間戳最新的那組數據sql = "select province,sum(confirm) from details " \"where update_time=(select update_time from details " \"order by update_time desc limit 1) " \"group by province"res = query(sql)return res全國累計趨勢
def get_l1_data():""":return:返回每天歷史累計數據"""sql = "select ds,confirm,suspect,heal,dead from history"res = query(sql)return resdef get_l2_data():""":return:返回每天新增確診和疑似數據"""sql = "select ds,confirm_add,suspect_add from history"res = query(sql)return resdef get_r1_data():""":return: 返回非湖北地區城市確診人數前5名"""sql = 'SELECT 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 5'res = query(sql)return res疫情熱搜
def get_r2_data():""":return: 返回最近的20條熱搜"""sql = 'select content from hotsearch order by id desc limit 20'res = query(sql) # 格式 (('民警抗疫一線奮戰16天犧牲1037364',), ('四川再派兩批醫療隊1537382',)return res4 最后
🧿 選題指導, 項目分享:
https://gitee.com/yaa-dc/warehouse-1/blob/master/python/README.md
總結
以上是生活随笔為你收集整理的毕设项目 - 大数据+爬虫 疫情分析可视化的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 浅谈性能测试分析
- 下一篇: 比较精确的js倒计时实现