新型冠狀病毒感染的肺炎疫情爆發以來,全球各國都採取措施開展戰“疫”鬥爭。我國在黨和政府的堅強領導下,疫情態勢呈現不斷向好的態勢,國內新增確診病例逐漸歸零,而海外的疫情態勢卻不容樂觀,每日新增病例都在不斷擴大,下面用python帶著大家制作1個海外國家疫情態勢發展的視頻,清晰瞭解海外國家疫情發展速度。
第一步:尋找疫情數據接口
找了國內某大型新聞網站
然後打開流量分析工具開始分析數據來源,很容易就找到了返回某個國家全部疫情數據的接口
請求參數為:
根據上圖我們可以發現,該請求以post方式進行,唯一變化的參數是國家名字,意味著我們要想獲得所有國家的數據就要挨個模擬請求,那麼怎麼獲取所有國家的名字呢?
不要著急,還在流量分析工具中尋找
找到這個,裡面包含各個國家的名字,數據顯得有些亂,其實就是json格式的數據,它的請求參數為:
Callback為回調函數,可以去掉,其他參數都不變,到這裡思路已經捋順了,開始擼代碼吧。
第二步:爬取並整理數據
1.獲得各個國家的名稱
這一步沒什麼難度,就是簡單的模擬請求,然後以json格式取出國家名字 。
2.獲得每個國家的疫情數據
直接在上述獲得國家名字的for循環下,組成新的url,開始post請求
最後以國家名字為key、疫情數據為值存入字典中。
3.將獲得的數據存入表格中
需要注意2點,一是標記處的k值,是當前表格內已經保存數據的行數,所以下面從k+t行開始(表格保存從第0行開始,t初始值也為0);二是加了個sortdate函數,為什麼要加這個函數呢?因為返回數據的日期為下圖格式:
而02.10這種字符被程序自動識別為2.1,最後畫圖的時候就會出錯,所以在此寫了個sortdate函數,可以將02.01轉換為2020年2月1日,該函數代碼為:
保存在表格中的數據為:
第三步:畫單張疫情排名圖
1.用pandas讀取表格中的數據,設置圖形窗口大小
2.找出時間為'2020年3月20日'對應的數據,並以確診人數(confirm)為排序依據,取出前十名,將數據反轉
3.畫出橫向柱狀圖
結果為
4.將確診人數放入圖形中
結果為
5.設置標題、時間戳、座標軸和網格線,增加圖形美觀
結果為:
一張圖已經畫完了,下面要根據時間軸讓圖片動起來。
第四步;依據時間軸畫動態圖
主要做法是將第三步的程序放入start函數中,添加date參數,再用matplotlib的 FuncAnimation()繪製動圖,代碼如下:
然後就可以像文章開頭的視頻一樣將數據動態展示出來了!
文中所使用的代碼已經請在公眾號“python的爬蟲與數據分析之路”裡回覆關鍵字:動圖
精彩回顧:
基金抄底成功的概率有多大?python帶你來分析
python騷操作之電腦自動刷抖音
用python畫出某“毒王”的動態路線圖
Python教你玩轉代理ip
閱讀更多 小笨鳥88 的文章