自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

手把手教你用Python獲取新冠疫情數(shù)據(jù)并進(jìn)行可視化

開(kāi)發(fā) 后端
“中國(guó)(疫苗研發(fā))非常困難,因?yàn)樵谥袊?guó)我們沒(méi)有辦法做第三期臨床試驗(yàn),因?yàn)闆](méi)有病人了?!苯裉熳屛覀冇脭?shù)據(jù)來(lái)看看這句話(huà)是不是“凡爾賽”本賽。在開(kāi)始之前我們先來(lái)說(shuō)說(shuō)今天要用到的python庫(kù)吧!

[[411117]]

Hello,大家好。我叫“小屁孩i”。

前言

不知道大伙有沒(méi)有看到過(guò)這一句話(huà):“中國(guó)(疫苗研發(fā))非常困難,因?yàn)樵谥袊?guó)我們沒(méi)有辦法做第三期臨床試驗(yàn),因?yàn)闆](méi)有病人了。”這句話(huà)是中國(guó)工程院院士鐘南山在上??萍即髮W(xué)2021屆畢業(yè)典禮上提出的。這句話(huà)在全網(wǎng)流傳,被廣大網(wǎng)友稱(chēng)之為“凡爾賽”發(fā)言。

今天讓我們用數(shù)據(jù)來(lái)看看這句話(huà)是不是“凡爾賽”本賽。在開(kāi)始之前我們先來(lái)說(shuō)說(shuō)今天要用到的python庫(kù)吧!

1.數(shù)據(jù)獲取部分

  1. requests lxml json openpyxl 

2.數(shù)據(jù)可視化部分

  1. pandas pyecharts(可視化庫(kù)) 

以上的庫(kù)都可以通過(guò)在線(xiàn)下載:

  1. pip instll xx 

ps:如果下載速度太慢的話(huà)也可以用國(guó)內(nèi)鏡像,使用命令,例如:

  1. pip install xx(庫(kù)名) -i https://pypi.tuna.tsinghua.edu.cn/simple gevent(清華鏡像) 

現(xiàn)在一起進(jìn)入今天的代碼部分吧!!!

數(shù)據(jù)獲取

目標(biāo)地址:

https://voice.baidu.com/act/newpneumonia/newpneumonia

進(jìn)入目標(biāo)地址我們可以看到如下所示:

現(xiàn)在讓我們一起去解析網(wǎng)頁(yè)結(jié)構(gòu)找到我們要爬取到的數(shù)據(jù)如下所示:

現(xiàn)在我們找到想要的頁(yè)面數(shù)據(jù)接下來(lái)就是通過(guò)Python來(lái)獲取這些數(shù)據(jù)了,上代碼:

  1. import requests 
  2. from lxml import etree 
  3. import json 
  4. import openpyxl 
  5.  
  6. #通用爬蟲(chóng) 
  7. url = 'https://voice.baidu.com/act/newpneumonia/newpneumonia' 
  8. headers = { 
  9.     "User-Agent"".....(換成自己的)" 
  10. response = requests.get(url=url,headers=headers).text 
  11. #在使用xpath的時(shí)候要用樹(shù)形態(tài) 
  12. html = etree.HTML(response) 
  13. #用xpath來(lái)獲取我們之前找到的頁(yè)面json數(shù)據(jù)  并打印看看 
  14. json_text = html.xpath('//script[@type="application/json"]/text()'
  15. json_text = json_text[0] 
  16. # print(json_text) 

之后我們來(lái)解析一下json數(shù)據(jù),上代碼:

  1. #用python本地自帶的庫(kù)轉(zhuǎn)換一下json數(shù)據(jù) 
  2. result = json.loads(json_text) 
  3. # print(result) 
  4. #通過(guò)打印出轉(zhuǎn)換的對(duì)象我們可以看到我們要的數(shù)據(jù)都要key為component對(duì)應(yīng)的值之下  所以現(xiàn)在我們將值拿出來(lái) 
  5. result = result["component"
  6. #再次打印看看結(jié)果 
  7. # print(result) 
  8. # 獲取國(guó)內(nèi)當(dāng)前數(shù)據(jù) 
  9. result = result[0]['caseList'
  10. # print(result) 

接著我們將獲取到的數(shù)據(jù)保存到excel中,上代碼:

  1. # 創(chuàng)建工作簿 
  2. wb = openpyxl.Workbook() 
  3. # 創(chuàng)建工作表 
  4. ws = wb.active 
  5. # 設(shè)置表的標(biāo)題 
  6. ws.title = "國(guó)內(nèi)疫情" 
  7. # 寫(xiě)入表頭 
  8. ws.append(["省份","累計(jì)確診","死亡","治愈"]) 
  9. #獲取各省份的數(shù)據(jù)并寫(xiě)入 
  10. for line in result: 
  11.     line_name = [line["area"],line["confirmed"],line["died"],line["crued"]] 
  12.     for ele in line_name: 
  13.         if ele == ''
  14.             ele = 0 
  15.     ws.append(line_name) 
  16. #保存到excel中 
  17. wb.save('./china.xlsx'

最后我們查看一下獲取到的數(shù)據(jù)是什么樣的,如圖:

emmmm,終于我們把數(shù)據(jù)獲取部分完成了,第二部分的數(shù)據(jù)可視化來(lái)了!!!

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

這次我們用到的庫(kù)是pyecharts里面的Map,我們先展示一下本次可視化用到的庫(kù)

  1. #可視化部分 
  2. import pandas  as pd 
  3. from pyecharts.charts import Map,Page 
  4. from pyecharts import options as opts 

首先我們要先通過(guò)pandas庫(kù)來(lái)獲取到剛才我們爬取到的數(shù)據(jù),上代碼:

  1. # 設(shè)置列對(duì)齊 
  2. pd.set_option('display.unicode.ambiguous_as_wide'True
  3. pd.set_option('display.unicode.east_asian_width'True
  4. # 打開(kāi)文件 
  5. df = pd.read_excel('china.xlsx'
  6. # 對(duì)省份進(jìn)行統(tǒng)計(jì) 
  7. data2 = df['省份'
  8. data2_list = list(data2) 
  9. data3 = df['累計(jì)確診'
  10. data3_list = list(data3) 
  11. data4 = df['死亡'
  12. data4_list = list(data4) 
  13. data5 = df ['治愈'
  14. data5_list = list(data5) 

接著我們來(lái)做數(shù)據(jù)可視化,將在我國(guó)地圖上的各個(gè)省份顯示出對(duì)應(yīng)的數(shù)值

我們以疫情發(fā)生以來(lái)治愈數(shù)為例,上代碼:

  1. c = ( 
  2.     Map() 
  3.         .add("治愈", [list(z) for z in zip(data2_list, data5_list)], "china"
  4.         .set_global_opts( 
  5.         title_opts=opts.TitleOpts(), 
  6.         visualmap_opts=opts.VisualMapOpts(max_=200), 
  7.     ) 
  8. c.render() 

當(dāng)然僅僅一個(gè)治愈情況當(dāng)然說(shuō)明不了什么,所以我們將三種情況都以這種形式顯示出來(lái),上代碼:

  1. a = ( 
  2.     Map() 
  3.         .add("累計(jì)確診", [list(z) for z in zip(data2_list, data3_list)], "china"
  4.         .set_global_opts( 
  5.         title_opts=opts.TitleOpts(), 
  6.         visualmap_opts=opts.VisualMapOpts(max_=200), 
  7.     ) 
  8.  
  9. b = ( 
  10.     Map() 
  11.         .add("死亡", [list(z) for z in zip(data2_list, data4_list)], "china"
  12.         .set_global_opts( 
  13.         title_opts=opts.TitleOpts(), 
  14.         visualmap_opts=opts.VisualMapOpts(max_=200), 
  15.     ) 
  16.  
  17. c = ( 
  18.     Map() 
  19.         .add("治愈", [list(z) for z in zip(data2_list, data5_list)], "china"
  20.         .set_global_opts( 
  21.         title_opts=opts.TitleOpts(), 
  22.         visualmap_opts=opts.VisualMapOpts(max_=200), 
  23.     ) 
  24.  
  25. page = Page(layout=Page.DraggablePageLayout) 
  26. page.add
  27.     a, 
  28.     b, 
  29.     c, 
  30. # 先生成render.html文件 
  31. page.render() 

當(dāng)然如果是直接運(yùn)行代碼的話(huà)展現(xiàn)出來(lái)的地圖不是這樣的,這個(gè)是通過(guò)后期的排版來(lái)完成的。那么在最后我們來(lái)說(shuō)說(shuō)是怎么排版的吧。

首先你先將上面的代碼運(yùn)行之后會(huì)產(chǎn)生一個(gè)render.html的文件然后你打開(kāi)文件之后可以調(diào)整整個(gè)頁(yè)面的布局,根據(jù)自己的喜歡來(lái)調(diào)整,接著點(diǎn)擊左上角的“Save Config”將這個(gè)json文件保存到跟render.html這個(gè)文件同一個(gè)路徑之下,最后運(yùn)行一下代碼:

  1. #完成上一步之后把 page.render()這行注釋掉 
  2. # 然后循行這下面 
  3. Page.save_resize_html("render.html"
  4.     cfg_file="chart_config.json"
  5.     dest="my_test.html"

這樣以后會(huì)產(chǎn)生一個(gè)my_test.html這個(gè)文件就是我們上面展示的那樣啦。

結(jié)束語(yǔ)

以上就是我們這次的結(jié)果。從數(shù)據(jù)的獲取到數(shù)據(jù)可視化,怎么說(shuō)呢pyecharts還具有其他強(qiáng)大的可視化功能。

 

責(zé)任編輯:姜華 來(lái)源: Python爬蟲(chóng)與數(shù)據(jù)挖掘
相關(guān)推薦

2020-12-17 09:40:01

Matplotlib數(shù)據(jù)可視化命令

2021-08-26 09:00:48

PyechartsPython可視化

2021-08-09 13:31:25

PythonExcel代碼

2022-07-24 21:43:48

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

2021-05-10 06:48:11

Python騰訊招聘

2022-10-19 14:30:59

2023-02-01 10:16:50

Python可視化

2020-03-08 22:06:16

Python數(shù)據(jù)IP

2021-02-02 13:31:35

Pycharm系統(tǒng)技巧Python

2021-12-11 20:20:19

Python算法線(xiàn)性

2020-11-08 14:13:31

Python帕累托分析開(kāi)發(fā)

2021-02-06 14:55:05

大數(shù)據(jù)pandas數(shù)據(jù)分析

2011-03-28 16:14:38

jQuery

2021-02-04 09:00:57

SQLDjango原生

2022-08-04 10:39:23

Jenkins集成CD

2021-05-17 21:30:06

Python求均值中值

2009-04-22 09:17:19

LINQSQL基礎(chǔ)

2021-01-21 09:10:29

ECharts柱狀圖大數(shù)據(jù)

2021-01-08 10:32:24

Charts折線(xiàn)圖數(shù)據(jù)可視化

2012-01-11 13:40:35

移動(dòng)應(yīng)用云服務(wù)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)