亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        利用python對新冠肺炎數(shù)據(jù)進行收集和分析

        2020-04-30 01:26:56孫佩杰
        關(guān)鍵詞:柱狀圖爬蟲網(wǎng)頁

        孫佩杰 呂 國

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

        0 引 言

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

        1 用到的技術(shù)

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

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

        1.2 爬蟲技術(shù)

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

        1.3 爬取的內(nèi)容

        國內(nèi)疫情數(shù)據(jù)有很多的數(shù)據(jù)源,本文采取的是騰訊新聞網(wǎng)站的數(shù)據(jù)源.數(shù)據(jù)源的網(wǎng)址是:https://view.inews.qq.com/g2/getOnsInfo?name=disease_h5,瀏覽器訪問此網(wǎng)址的結(jié)果如圖1所示:

        圖1 網(wǎng)頁原始數(shù)據(jù)部分截圖

        2 實現(xiàn)流程

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

        圖2 實現(xiàn)流程圖

        2.1 爬取數(shù)據(jù)

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

        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)

        運行結(jié)果如圖3所示:

        圖3 整理后的數(shù)據(jù)

        2.2 查詢需要的數(shù)據(jù)

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

        運行結(jié)果如圖4所示

        圖4 輸入提示

        2.3 存儲篩選后的數(shù)據(jù)

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

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

        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'新冠肺炎各城市數(shù)據(jù){data["lastUpdateTime"][:10]}.csv')

        存儲的內(nèi)容如圖5所示:

        圖5 存儲的數(shù)據(jù)

        2.4 數(shù)據(jù)排序

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

        N=int(N)

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

        df=df.reset_index(drop=True)

        df2=df[:N]

        print(df2)

        運行結(jié)果如圖6所示:

        圖6 運行結(jié)果

        2.5 可視化處理

        繪制柱狀圖.柱狀圖的標題設(shè)置成最近一次更新的時間item(某項疫情數(shù)據(jù)例如今日新增確診人數(shù)today_confirm)排名前N個城市.x軸的標題設(shè)置為城市,刻度值是城市名字.y軸坐標設(shè)為默認,刻度值為數(shù)字.柱狀圖的顏色為橘色,高度值為城市的某項疫情數(shù)據(jù)值,寬度為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 運行結(jié)果的柱狀圖

        3 結(jié)果分析

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

        4 總 結(jié)

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

        猜你喜歡
        柱狀圖爬蟲網(wǎng)頁
        繪制和閱讀降水量柱狀圖
        利用網(wǎng)絡(luò)爬蟲技術(shù)驗證房地產(chǎn)灰犀牛之說
        基于Python的網(wǎng)絡(luò)爬蟲和反爬蟲技術(shù)研究
        基于Unity3D 的冒泡排序算法動態(tài)可視化設(shè)計及實現(xiàn)
        基于CSS的網(wǎng)頁導(dǎo)航欄的設(shè)計
        電子制作(2018年10期)2018-08-04 03:24:38
        利用爬蟲技術(shù)的Geo-Gnutel la VANET流量采集
        電子測試(2018年1期)2018-04-18 11:53:04
        基于URL和網(wǎng)頁類型的網(wǎng)頁信息采集研究
        電子制作(2017年2期)2017-05-17 03:54:56
        大數(shù)據(jù)環(huán)境下基于python的網(wǎng)絡(luò)爬蟲技術(shù)
        電子制作(2017年9期)2017-04-17 03:00:46
        基于Android平臺的柱狀圖組件的設(shè)計實現(xiàn)
        網(wǎng)頁制作在英語教學(xué)中的應(yīng)用
        電子測試(2015年18期)2016-01-14 01:22:58
        日本中文字幕精品久久| 97超碰国产成人在线| 精品少妇一区二区av免费观看| 色欲人妻aaaaaaa无码| 亚洲一区二区三区尿失禁| 天下第二社区在线视频| 亚洲av中文无码字幕色三| 亚洲a人片在线观看网址| 少妇高潮太爽了免费网站| 日本一区二区免费高清| 成 人色 网 站 欧美大片在线观看| 无码成人一区二区| 人妻去按摩店被黑人按中出| 乱伦一区二| 成年人视频在线播放视频| 尤物蜜桃视频一区二区三区| 成人免费播放视频777777| 亚洲人精品亚洲人成在线| 区二区欧美性插b在线视频网站 | 国产肉体XXXX裸体784大胆| 国产av熟女一区二区三区老牛| 北条麻妃在线中文字幕| 无码人妻h动漫中文字幕| 日本一本之道高清不卡免费| 免费观看又色又爽又黄的韩国| 中文字幕亚洲无线码| 91免费国产高清在线| 日韩有码中文字幕在线视频| 在线麻豆精东9制片厂av影现网| 国产av综合影院| 成人片99久久精品国产桃花岛| 超短裙老师在线观看一区| 成人国产激情自拍视频| 国产综合在线观看| 亚洲乱妇老熟女爽到高潮的片 | 日本专区一区二区三区| 久久精品国产亚洲av成人网| 日本国产亚洲一区二区| 国产精品人人做人人爽人人添| 中文字幕精品一区二区2021年| 思思久久96热在精品不卡|