使用Python製作新型冠狀病毒實時疫情圖

最近被新型冠狀病毒搞的人心惶惶,很多城市被病毒感染,今天小編給大家分享使用Python製作新型冠狀病毒實時疫情圖,感興趣的朋友跟隨小編一起看看吧
最近一週每天早上起來第一件事,就是打開新聞軟件看疫情相關的新聞。瞭解下自己和親友所在城市的確診人數,但純數字還是缺乏一個直觀的概念。那我們來做一個吧。

至於數據,從各大網站的實時疫情頁面就可以拿到。以某網站爲例,用requests拿到html後,發現並沒有數據。不要慌,那證明是個javascript渲染的頁面,即使是javascript也是需要從後臺取數據的。打開Chrome開發者工具,點開network,刷新頁面,點擊各個請求,肯定有一個是取json的
在這裏插入圖片描述
注意這裏的返回數據是包含在一個js變量的,用正則處理下就好,然後用python自帶的json.loads方法就可以轉爲dict了

result = requests.get(
   'https://interface.sina.cn/news/wap/fymap2020_data.d.json?1580097300739&&callback=sinajp_1580097300873005379567841634181')
 json_str = re.search("\(+([^)]*)\)+", result.text).group(1)
 
 html = f"{json_str}"
 table = json.loads(f"{html}")

數據格式很簡單,省數據和下屬城市的數據

{ 'city': [  {  'conNum': '4',
         'cureNum': '0',
         'deathNum': '0',
         'name': '烏魯木齊',
         'susNum': '0'},
       {  'conNum': '1',
         'cureNum': '0',
         'deathNum': '0',
         'name': '伊犁州',
         'susNum': '0'}],
 'cureNum': '0',
 'deathNum': '0',
 'name': '新疆',
 'susNum': '0',
 'value': '5'}

英語好的同學可以直接猜到cureNum是治癒數,deathNum是死亡人數。value應該是確診數,其它字段可以根據原網站表格確定

推薦我們的Python學習扣qun:774711191 ,看看前輩們是如何學習的!從基礎的python腳本到web開發、爬蟲、django、數據挖掘等【PDF,實戰源碼】,零基礎到項目實戰的資料都有整理。送給每一位python的小夥伴!每天都有大牛定時講解Python技術,分享一些學習的方法和需要注意的小細節,點擊加入我們的 python學習者聚集地
最直觀的圖表當然是地圖了。國內大廠出的echarts自然會對國內地圖有最好的支持。用pip安裝pyecharts, 以及兩個數據包echarts-china-provinces-pypkg
echarts-china-cities-pypkg 即可

遍歷下json數據,把省名和確診數存在data數據裏傳給map對象就好

for province in table['data']['list']:
    pp.pprint(province)
    data.append((province['name'], province['value']))
 
    for city in province['city']:
      pp.pprint(city)
map_p = Map()
map_p.set_global_opts(title_opts=opts.TitleOpts(title="實時疫情圖"), visualmap_opts=opts.VisualMapOpts(max_=100))
map_p.add("確診", data, maptype="china")
map_p.render("ncov.html") # 生成html文件

代碼很簡單,注意max是決定渲染顏色的。效果圖如下
在這裏插入圖片描述
達到100確診的省份一目瞭然。感興趣的同學還可以製作市級別或者世界地圖。

最後祝願早日都變爲藍色吧。武漢加油,中國加油!

總結

以上所述是小編給大家介紹的使用Python製作新型冠狀病毒實時疫情圖

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章