海外疫情發展態勢怎麼樣?python動態視頻20秒告訴你

新型冠狀病毒感染的肺炎疫情爆發以來,全球各國都採取措施開展戰“疫”鬥爭。我國在黨和政府的堅強領導下,疫情態勢呈現不斷向好的態勢,國內新增確診病例逐漸歸零,而海外的疫情態勢卻不容樂觀,每日新增病例都在不斷擴大,下面用python帶著大家制作1個海外國家疫情態勢發展的視頻,清晰瞭解海外國家疫情發展速度。


第一步:尋找疫情數據接口

找了國內某大型新聞網站


海外疫情發展態勢怎麼樣?python動態視頻20秒告訴你


然後打開流量分析工具開始分析數據來源,很容易就找到了返回某個國家全部疫情數據的接口

海外疫情發展態勢怎麼樣?python動態視頻20秒告訴你

請求參數為:


海外疫情發展態勢怎麼樣?python動態視頻20秒告訴你


根據上圖我們可以發現,該請求以post方式進行,唯一變化的參數是國家名字,意味著我們要想獲得所有國家的數據就要挨個模擬請求,那麼怎麼獲取所有國家的名字呢?

不要著急,還在流量分析工具中尋找


海外疫情發展態勢怎麼樣?python動態視頻20秒告訴你


找到這個,裡面包含各個國家的名字,數據顯得有些亂,其實就是json格式的數據,它的請求參數為:


海外疫情發展態勢怎麼樣?python動態視頻20秒告訴你


Callback為回調函數,可以去掉,其他參數都不變,到這裡思路已經捋順了,開始擼代碼吧。

第二步:爬取並整理數據

1.獲得各個國家的名稱


海外疫情發展態勢怎麼樣?python動態視頻20秒告訴你


這一步沒什麼難度,就是簡單的模擬請求,然後以json格式取出國家名字 。

2.獲得每個國家的疫情數據

直接在上述獲得國家名字的for循環下,組成新的url,開始post請求


海外疫情發展態勢怎麼樣?python動態視頻20秒告訴你


最後以國家名字為key、疫情數據為值存入字典中。

3.將獲得的數據存入表格中


海外疫情發展態勢怎麼樣?python動態視頻20秒告訴你


需要注意2點,一是標記處的k值,是當前表格內已經保存數據的行數,所以下面從k+t行開始(表格保存從第0行開始,t初始值也為0);二是加了個sortdate函數,為什麼要加這個函數呢?因為返回數據的日期為下圖格式:

海外疫情發展態勢怎麼樣?python動態視頻20秒告訴你


而02.10這種字符被程序自動識別為2.1,最後畫圖的時候就會出錯,所以在此寫了個sortdate函數,可以將02.01轉換為2020年2月1日,該函數代碼為:

海外疫情發展態勢怎麼樣?python動態視頻20秒告訴你


保存在表格中的數據為:


海外疫情發展態勢怎麼樣?python動態視頻20秒告訴你


第三步:畫單張疫情排名圖

1.用pandas讀取表格中的數據,設置圖形窗口大小


海外疫情發展態勢怎麼樣?python動態視頻20秒告訴你


2.找出時間為'2020年3月20日'對應的數據,並以確診人數(confirm)為排序依據,取出前十名,將數據反轉


海外疫情發展態勢怎麼樣?python動態視頻20秒告訴你


3.畫出橫向柱狀圖


海外疫情發展態勢怎麼樣?python動態視頻20秒告訴你


結果為

海外疫情發展態勢怎麼樣?python動態視頻20秒告訴你


4.將確診人數放入圖形中

海外疫情發展態勢怎麼樣?python動態視頻20秒告訴你


結果為

海外疫情發展態勢怎麼樣?python動態視頻20秒告訴你


5.設置標題、時間戳、座標軸和網格線,增加圖形美觀


海外疫情發展態勢怎麼樣?python動態視頻20秒告訴你


結果為:

海外疫情發展態勢怎麼樣?python動態視頻20秒告訴你


一張圖已經畫完了,下面要根據時間軸讓圖片動起來。

第四步;依據時間軸畫動態圖

主要做法是將第三步的程序放入start函數中,添加date參數,再用matplotlib的 FuncAnimation()繪製動圖,代碼如下:


海外疫情發展態勢怎麼樣?python動態視頻20秒告訴你


然後就可以像文章開頭的視頻一樣將數據動態展示出來了!


文中所使用的代碼已經請在公眾號“python的爬蟲與數據分析之路”裡回覆關鍵字:動圖


精彩回顧:

基金抄底成功的概率有多大?python帶你來分析

python騷操作之電腦自動刷抖音

用python畫出某“毒王”的動態路線圖

Python教你玩轉代理ip



分享到:


相關文章: