999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

利用python對新冠肺炎數據進行收集和分析

2020-04-30 01:26:56孫佩杰
河北建筑工程學院學報 2020年4期
關鍵詞:可視化疫情

孫佩杰 呂 國

(河北建筑工程學院,河北 張家口 075000)

0 引 言

由于2019年底新冠病毒的來襲,全國各地都陸續出現新增的確診病例.為了能夠更好的控制疫情,需要了解全國各地的疫情現況,對疫情嚴重的地區進行嚴格的管控,并且出行要避開這些疫情爆發的城市.這時我們就需要從網上收集各個地區的新增確診病例人數.本文介紹采用python實現對國內出現過確診病例城市疫情數據的爬取,并存儲成csv文件,將疫情人數前N名的城市排列出來,并且以柱狀圖展示.

1 用到的技術

1.1 數據可視化

數據可視化是數據視覺表現形式的科學技術研究,主要是借助圖形化的手段來清晰有效地傳達與溝通信息[1].數據可視化的目的就是要更加直觀的觀測數據、分析數據,突出數據的重點,挖掘數據中隱藏的規律和趨勢,進而預測和推理.本文采用python的數據可視化工具—matplotlib,將全國疫情前N名城市的疫情數據以柱狀圖的形式顯示出來,突出疫情較為嚴重的地區.

1.2 爬蟲技術

網絡爬蟲能夠自動下載網頁信息,主要原理是模仿瀏覽器瀏覽網頁,獲取網頁上所需要的資源[2].爬蟲技術是一個可以搜集數據、解析數據,并將這些數據進行分析的工具.我們可以通過爬蟲技術,從互聯網上更好地收集我們需要的數據,從而避免因為無用的數據而花費時間,大大地提高了我們的收集效率.

1.3 爬取的內容

國內疫情數據有很多的數據源,本文采取的是騰訊新聞網站的數據源.數據源的網址是:https://view.inews.qq.com/g2/getOnsInfo?name=disease_h5,瀏覽器訪問此網址的結果如圖1所示:

圖1 網頁原始數據部分截圖

2 實現流程

首先獲取給定網址的網頁數據,將這些數據存儲下來.此時存儲下來的數據是混亂的,我們需要將它重新整理,轉換成易于觀察的類型,進而分析數據的內容;然后對整理過的數據進行排序,將排序后的數據存儲成csv文件以便查詢;最后用python的matplotlib將前N個城市繪制成柱狀圖.

圖2 實現流程圖

2.1 爬取數據

根據指定的網址用requests.get()函數獲取網頁數據,將獲取的數據轉換成json對象,之后用json.loads()函數把json對象轉化為python字典類型,然后用json.dumps()函數將字典形式的數據改為字符串類型,以便于后面進行數據處理,最后輸出.代碼如下:

url="https://view.inews.qq.com/g2/getOnsInfo?name=disease_h5"

resp=requests.get(url)

html=resp.json()

data=json.loads(html["data"])

data_formate=json.dumps(data,sort_keys=False,indent=4,separators=(',', ':'),ensure_ascii=False)

print(data_formate)

運行結果如圖3所示:

圖3 整理后的數據

2.2 查詢需要的數據

首先輸出:最近一次的更新時間,中國的情況.根據提示輸入要求(例如:新增確診病例人數排名前5名城市,需要先輸入today_confirm,然后輸入5).如果數據中province名字(省份名字)是4個直轄市、2個特別行政區或者臺灣,那么直接將它的疫情數據添加列表中,并且疫情城市的數量加1.如果不是,那么先判斷它的children(省內的城市名)是否為境外輸入,如果是,那么先將它的名字改為所屬省份的境外輸入;如果不是,那么直接將它的children(省內的城市)疫情數據添加到列表中,疫情城市數量加1.代碼如下:

areaTree=data["areaTree"]

print(f'截至{data["lastUpdateTime"]},中國情況為:')

da=[]

i_city=0

item=input('請輸入查詢項目英文代碼: (新增確診-today_confirm,累計確診-total_confirm,累計疑似-total_suspect, 累計死亡-total_dead,累計治愈-total_heal,總死亡率-total_deadRate, 總治愈率-total_healRate),例如:total_confirm ')N=input('請輸入想查詢前多少名城市?(300以內正整數,例如:20)')

for province in areaTree[0]["children"]:

if province["name"]=="北京"or province["name"]=="上海"or

province["name"]=="天津"or province["name"]=="重慶"or province["name"]=="香港"or province["name"]=="澳門"or province["name"]=="臺灣":

i_city+=1

da.append([province["name"],province["today"]["confirm"],province["total"]["confirm"],province["total"]["suspect"],province["total"]["dead"],province["total"]["heal"],povince["total"]["deadRate"],province["total"]["healRate"]])

else:

for city in province["children"]:

i_city+=1

if city["name"]=="境外輸入":

city["name"]=province["name"]+"境外輸入"

da.append([city["name"],city["today"]["confirm"],city["total"]["confirm"],city["total"]["suspect"],city["total"]["dead"],city["total"]["heal"],city["total"]["deadRate"],city["total"]["healRate"]])

運行結果如圖4所示

圖4 輸入提示

2.3 存儲篩選后的數據

首先輸出中國共有多少個城市出現確診.然后將出現過確診病例城市的疫情數據存到表格df中,表格的第1列是城市的名字,第2列是今日新增確診人數,第3列是累計確診人數,第4列是累計疑似人數……等等,然后用to_csv()函數將表格保存到文件中,文件名為“新冠肺炎各城市數據-最近的更新時間”,代碼如下:

print(f'中國共{i_city}個城市出現確診')

df=pd.DataFrame({})

df["name"]=[x[0]for x in da]

df["today_confirm"]=[x[1]for x in da]

df["total_confirm"]=[x[2]for x in da]

df["total_suspect"]=[x[3]for x in da]

df["total_dead"]=[x[4]for x in da ]

df["total_heal"]=[ x[5]for x in da ]

df["total_deadRate"]=[x[6]for x in da ]

df["total_healRate"]=[x[7]for x in da ]

df.to_csv(f'新冠肺炎各城市數據{data["lastUpdateTime"][:10]}.csv')

存儲的內容如圖5所示:

圖5 存儲的數據

2.4 數據排序

將出現過確認病例城市的疫情數據,用sort_values()函數將表格按照輸入的要求(例如今日新增確診人數today_confirm)進行從大到小排序,用reset_index()重置城市的索引號(例如陜西境外輸入原來是14,重置之后變成了4),將前N個城市的疫情數據按序輸出,代碼如下:

N=int(N)

df=df.sort_values(item,ascending=False)

df=df.reset_index(drop=True)

df2=df[:N]

print(df2)

運行結果如圖6所示:

圖6 運行結果

2.5 可視化處理

繪制柱狀圖.柱狀圖的標題設置成最近一次更新的時間item(某項疫情數據例如今日新增確診人數today_confirm)排名前N個城市.x軸的標題設置為城市,刻度值是城市名字.y軸坐標設為默認,刻度值為數字.柱狀圖的顏色為橘色,高度值為城市的某項疫情數據值,寬度為0.8.代碼如下:

plt.title(f'截至{data["lastUpdateTime"][:N]}{item}前{N}城市')

ax1 = plt.gca()

ax1.set(xlabel='城市',ylabel='')

plt.xticks(range(len(df2["name"])),df2["name"])

plt.bar(range(len(df2["name"])),df2[item],width=0.8,color='orange')

plt.show()

圖7 運行結果的柱狀圖

3 結果分析

由運行結果可知,今日國內新增確診人數最多的前五個城市分別為:香港、臺灣、上海、福建境外輸入和陜西境外輸入.其中香港人數最多,達到了80人之多,臺灣新增確診人數達到16人,其他三個城市(上海、福建境外輸入和陜西境外輸入)新增確診人數分別為3,1,1.由此可推測,國內疫情控制基本穩定,以上這些城市(尤其香港和臺灣)需要加大管控力度,并且建議國內人員出行要盡量避開這些高危城市,這樣可以減少感染新冠肺炎的風險.

4 總 結

利用爬蟲和可視化技術,我們可以實現網上數據的最大價值化.在大數據時代的今天,用戶對各類數據的需求越來越多,對數據進行有效的分析,可以為相關決策提供依據,爬蟲作為一種自動收集數據的手段,有廣闊的應用[3].

猜你喜歡
可視化疫情
自然資源可視化決策系統
北京測繪(2022年6期)2022-08-01 09:19:06
戰疫情
思維可視化
師道·教研(2022年1期)2022-03-12 05:46:47
基于Power BI的油田注水運行動態分析與可視化展示
云南化工(2021年8期)2021-12-21 06:37:54
自然資源可視化決策系統
北京測繪(2021年7期)2021-07-28 07:01:18
抗疫情 顯擔當
人大建設(2020年5期)2020-09-25 08:56:22
疫情中的我
疫情當前 警察不退
北極光(2020年1期)2020-07-24 09:04:04
基于CGAL和OpenGL的海底地形三維可視化
待疫情散去 春暖花開
文苑(2020年4期)2020-05-30 12:35:48
主站蜘蛛池模板: 在线免费不卡视频| 91精品小视频| 嫩草在线视频| 日本精品影院| 欧美精品啪啪一区二区三区| 欧美国产日本高清不卡| 久久精品国产电影| 91成人在线观看视频| 色有码无码视频| 亚洲久悠悠色悠在线播放| 香蕉网久久| 高清无码不卡视频| 亚洲成人黄色在线| 91亚洲国产视频| 中文字幕人妻无码系列第三区| 国产精品 欧美激情 在线播放 | 国产乱子伦精品视频| 亚洲精品制服丝袜二区| 久久免费视频播放| 久久婷婷六月| 亚洲精品无码AⅤ片青青在线观看| 久久久久夜色精品波多野结衣| 成年人午夜免费视频| 中文字幕亚洲乱码熟女1区2区| 国产日韩欧美精品区性色| 国产91高跟丝袜| 欧美日韩精品一区二区视频| 狠狠ⅴ日韩v欧美v天堂| 日本国产在线| 精品日韩亚洲欧美高清a| 国产欧美日韩免费| 精品国产网站| 国产欧美在线视频免费| 国产成人无码AV在线播放动漫| 亚洲三级电影在线播放| 亚洲国产一区在线观看| 国产在线精品网址你懂的| 操国产美女| 五月婷婷导航| 日韩av高清无码一区二区三区| 国产人在线成免费视频| 成年人福利视频| 在线观看91精品国产剧情免费| 久久久无码人妻精品无码| 亚洲福利网址| 亚洲欧美成人网| 91丝袜乱伦| 凹凸国产熟女精品视频| 国产精品网址你懂的| 精品一區二區久久久久久久網站| 国产日韩欧美中文| 网友自拍视频精品区| 国产精品无码久久久久久| 欧美精品另类| 国产一级视频在线观看网站| 日韩欧美色综合| 日韩高清无码免费| 日韩av电影一区二区三区四区| 色欲不卡无码一区二区| 日韩欧美国产区| 91国内外精品自在线播放| 欧洲欧美人成免费全部视频| 日本高清免费一本在线观看| 国产精品污视频| a色毛片免费视频| 美女亚洲一区| 国产微拍一区| 国产精品亚洲а∨天堂免下载| 久久窝窝国产精品午夜看片| 乱系列中文字幕在线视频| 国产 在线视频无码| 一区二区三区四区精品视频| 成人在线第一页| 国产爽歪歪免费视频在线观看| 久久无码高潮喷水| 大陆国产精品视频| 欧美α片免费观看| 精品午夜国产福利观看| 国产视频一区二区在线观看| 欧美日韩亚洲国产主播第一区| 91福利在线观看视频| 久久青青草原亚洲av无码|