實時追蹤,如何用Python畫新冠狀病毒疫情地圖?

網(wǎng)上一搜,首先搜到的是騰訊的疫情實時追蹤,那就用這個數(shù)據(jù)源吧。

有了網(wǎng)址怎么抓數(shù)據(jù)呢?這里,我送大家一雙火眼金睛,可以從紛亂中找到最靠譜的下載方式。我習(xí)慣用FireFox瀏覽器,下面的講解就以FireFox為例(其他瀏覽器基本類似)。

打開菜單,點擊“Web開發(fā)者”,在遞進菜單中選擇"網(wǎng)絡(luò)":

刷新頁面,我們很快就能發(fā)現(xiàn),應(yīng)答類型為json格式的這個請求,最有可能包含我們需要的數(shù)據(jù)了:

如果你不想錯過Python這么好的工具,又擔(dān)心自學(xué)遇到問題無處解決,現(xiàn)在就可以Python的學(xué)習(xí)q u n 227-435-450可以來了解一起進步一起學(xué)習(xí)!免費分享視頻資料

深入分析,我們就得到了url地址、請求方法、參數(shù)、應(yīng)答格式等信息。查詢參數(shù)中,callback是回調(diào)函數(shù)名,我們可以嘗試置空,_應(yīng)該是以毫秒為單位的當(dāng)前時間戳。有了這些信息,分分鐘就可以抓到數(shù)據(jù)了。我們先在IDLE中以交互方式抓一下看看效果:

>>> import time, json, requests>>> url = 'https://view.inews.qq.com/g2/getOnsInfo?name=wuwei_ww_area_counts&callback=&_=%d'%int(time.time()*1000)>>> data = json.loads(requests.get(url=url).json()['data'])>>> print(len(data))301>>> print(data[0]){'country': '中國', 'area': '湖北', 'city': '武漢', 'confirm': 698, 'suspect': 0, 'dead': 63, 'heal': 42}>>> print(data[-1]){'country': '中國', 'area': '山東', 'city': '棗莊', 'confirm': 2, 'suspect': 0, 'dead': 0, 'heal': 0}

只要兩行代碼,就可以抓到數(shù)據(jù)了。怎么樣,是不是超級簡單?

數(shù)據(jù)處理

以省為單位畫疫情圖,我們只需要統(tǒng)計同屬一個省的所有地市的確診數(shù)據(jù)即可。最終的數(shù)據(jù)抓取代碼如下:

import time, json, requestsdef catch_distribution():? ? """抓取行政區(qū)域確診分布數(shù)據(jù)"""? ? ? ? data = dict()? ? url = 'https://view.inews.qq.com/g2/getOnsInfo?name=wuwei_ww_area_counts&callback=&_=%d'%int(time.time()*1000)? ? for item in json.loads(requests.get(url=url).json()['data']):? ? ? ? if item['area'] not in data:? ? ? ? ? ? data.update({item['area']:0})? ? ? ? data[item['area']] += int(item['confirm'])? ? ? ? return data

數(shù)據(jù)可視化

數(shù)據(jù)可視化,我習(xí)慣使用matplotlib模塊。matplotlib有很多擴展工具包(toolkits),比如,畫3D需要mplot3d工具包,畫地圖的話,則需要basemap工具包,以及處理地圖投影的pyproj模塊。另外畫海陸分界線、國界線、行政分界線等還需要shape數(shù)據(jù)。所需模塊請自行安裝,shape文件可以從這里下載,繪圖用到的矢量字庫可以從自己的電腦上隨便找一個(我用的是simsun.ttf)。我的主程序是2019nCoV.py,shape文件下載下來之后,是這樣保存的:





2019-nCoV疫情曲線:

2019-nCoV疫情地圖:

上圖為圓柱投影,這也是basemap默認(rèn)的投影模式,我們還可以換用其他投影模式,比如蘭勃托等角投影,只需要將97行代碼改為:

蘭勃托投影效果如下:

還可以使用正射投影:

正射投影效果如下:

本文來源于網(wǎng)絡(luò) 如有侵權(quán)請聯(lián)系作者刪除

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • width: 65%;border: 1px solid #ddd;outline: 1300px solid #...
    邵勝奧閱讀 5,171評論 0 1
  • pyspark.sql模塊 模塊上下文 Spark SQL和DataFrames的重要類: pyspark.sql...
    mpro閱讀 9,915評論 0 13
  • 常用模塊 認(rèn)識模塊 什么是模塊 什么是模塊? 常見的場景:一個模塊就是一個包含了python定義和聲明的文件,文...
    go以恒閱讀 2,169評論 0 6
  • 這是一場桑拿。 或者說,這是一場以蒸桑拿為誘餌,實則實施謀殺的血案。 四圍太熱了,滾滾的熱蒸汽,撩在人的皮膚上,留...
    風(fēng)滿樓呀閱讀 536評論 2 7
  • 上午趕去長沙毛院聽了堂文學(xué)講座,下午趕回來下村網(wǎng)格走親,然后再去接崽放學(xué),也是蠻拼的了,風(fēng)風(fēng)火火鐵娘子一枚??! 下...
    春天里的紫蘇閱讀 222評論 1 0

友情鏈接更多精彩內(nèi)容