日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

毕设项目 - 大数据+爬虫 疫情分析可视化

發布時間:2023/12/10 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 毕设项目 - 大数据+爬虫 疫情分析可视化 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

  • 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、保存數據

  • 將解析到的數據持久化到數據庫中
import pymysql import time import json import traceback #追蹤異常 import requests def get_tencent_data(): """:return: 返回歷史數據和當日詳細數據"""url = ''url_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',}r = requests.get(url, headers) #使用requests請求res = json.loads(r.text) # json字符串轉字典data_all = json.loads(res['data'])#再加上history的配套東西r_his=requests.get(url_his,headers)res_his=json.loads(r_his.text)data_his=json.loads(res_his['data'])history = {} # 歷史數據for i in data_his["chinaDayList"]:ds = "2020." + i["date"]tup = time.strptime(ds, "%Y.%m.%d")ds = time.strftime("%Y-%m-%d", tup) # 改變時間格式,不然插入數據庫會報錯,數據庫是datetime類型confirm = i["confirm"]suspect = i["suspect"]heal = i["heal"]dead = i["dead"]history[ds] = {"confirm": confirm, "suspect": suspect, "heal": heal, "dead": dead}for i in data_his["chinaDayAddList"]:ds = "2020." + i["date"]tup = time.strptime(ds, "%Y.%m.%d")ds = time.strftime("%Y-%m-%d", tup)confirm = i["confirm"]suspect = i["suspect"]heal = i["heal"]dead = i["dead"]history[ds].update({"confirm_add": confirm, "suspect_add": suspect, "heal_add": heal, "dead_add": dead})details = [] # 當日詳細數據update_time = data_all["lastUpdateTime"]data_country = data_all["areaTree"] # list 25個國家data_province = data_country[0]["children"] # 中國各省for pro_infos in data_province:province = pro_infos["name"] # 省名for city_infos in pro_infos["children"]:city = city_infos["name"]confirm = city_infos["total"]["confirm"]confirm_add = city_infos["today"]["confirm"]heal = city_infos["total"]["heal"]dead = city_infos["total"]["dead"]details.append([update_time, province, city, confirm, confirm_add, heal, dead])return history, details

數據表結構

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 res

4 最后

🧿 選題指導, 項目分享:

https://gitee.com/yaa-dc/warehouse-1/blob/master/python/README.md

總結

以上是生活随笔為你收集整理的毕设项目 - 大数据+爬虫 疫情分析可视化的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。