王正禹,梁雅麗,曹世超,徐輝
摘要:健康中國——基于大數(shù)據(jù)的可視化分析平臺(tái),采用爬蟲技術(shù)對(duì)零散的疾病數(shù)據(jù)進(jìn)行收集,利用大數(shù)據(jù)模型加以分析,Python Flask框架+ECharts.js進(jìn)行繪圖,完成中國新冠肺炎數(shù)據(jù)、高發(fā)疾病概率演變以及高發(fā)疾病病人數(shù)變化的數(shù)據(jù)展示。
關(guān)鍵詞:ECharts;大數(shù)據(jù);可視化;傳染病;健康
中圖分類號(hào):TP391? ? ? 文獻(xiàn)標(biāo)識(shí)碼:A
文章編號(hào):1009-3044(2021)20-0031-03
1 背景
新冠肺炎疫情爆發(fā),全民皆兵。防疫攻堅(jiān)戰(zhàn)后大家不僅養(yǎng)成了自覺配戴口罩出門、勤洗手等良好的自我保護(hù)習(xí)慣,也更加注重個(gè)人健康問題。長期以來,隨著我國生產(chǎn)力發(fā)展水平持續(xù)地增長,人們更希望能夠幸福長壽。然而隨之而來的卻是城鎮(zhèn)化、人口老齡化問題的不斷升溫,中國居民的日常生活和疾病種類也在不斷地發(fā)生著變化[1],中國是世界人口最多的國家,但是我國的醫(yī)療設(shè)施、藥品卻相對(duì)匱乏,現(xiàn)在老年人數(shù)持續(xù)上升,常見疾病的預(yù)防與治療已經(jīng)成為當(dāng)下社會(huì)關(guān)注的熱點(diǎn)話題。
因此,如何有效地預(yù)防疾病以及減少患病次數(shù)、增強(qiáng)免疫力已受到高度重視。預(yù)防勝于治療,本課題采集、分析往年與健康相關(guān)的數(shù)據(jù),借助可視化圖形來進(jìn)行直觀的展示,開發(fā)出基于大數(shù)據(jù)的可視化分析平臺(tái)——健康中國。該平臺(tái)向人們展示高發(fā)疾病的患病率、死亡率等,通過這種方式提醒人們重視預(yù)防工作,學(xué)習(xí)疾病知識(shí),萌發(fā)為自己的健康與幸福投資的意識(shí)。
該平臺(tái)采用統(tǒng)計(jì)圖表的方式,通過熱力地圖、條形競(jìng)賽圖、動(dòng)態(tài)散點(diǎn)圖、雷達(dá)圖等可視化圖例來反映近幾年高發(fā)疾病的演變趨勢(shì),直觀地體現(xiàn)出不同指標(biāo)下的數(shù)據(jù)差異,將零散的書面信息轉(zhuǎn)換為視覺信息,使數(shù)據(jù)與用戶能夠交互增強(qiáng)參與感,一定程度減少用戶收集數(shù)據(jù)分析資料的時(shí)間,更好的傳遞相關(guān)產(chǎn)染病的信息。
2 相關(guān)技術(shù)
2.1 爬蟲技術(shù)
利用爬蟲技術(shù)對(duì)數(shù)據(jù)進(jìn)行收集、清洗、分析,具體流程如圖1。
1)大數(shù)據(jù)的收集:依靠requests庫,對(duì)國家統(tǒng)計(jì)局?jǐn)?shù)據(jù)網(wǎng)站發(fā)起請(qǐng)求,并從中提取需要的數(shù)據(jù)。
2)數(shù)據(jù)整理與清洗:從多個(gè)數(shù)據(jù)源獲得需要的數(shù)據(jù),對(duì)采集到的數(shù)據(jù)集進(jìn)行預(yù)處理,以保證采用大數(shù)據(jù)分析和預(yù)測(cè)結(jié)果的可靠性和真實(shí)性。預(yù)處理能夠大大增強(qiáng)數(shù)據(jù)的準(zhǔn)確性、可靠性、真實(shí)性,提高數(shù)據(jù)的價(jià)值。
3)數(shù)據(jù)存儲(chǔ):將整理后的數(shù)據(jù)存儲(chǔ)成json格式并通過ajax傳遞給前端進(jìn)行頁面渲染。
反爬蟲技術(shù)也是我們需要考慮的一個(gè)要點(diǎn):在爬取數(shù)據(jù)時(shí)經(jīng)常會(huì)頻繁地訪問一個(gè)網(wǎng)址,這樣很容易造成ID被限制,而無法訪問該網(wǎng)站。大多數(shù)網(wǎng)站會(huì)加入了反爬蟲技術(shù),以增強(qiáng)其網(wǎng)頁的安全性與獨(dú)特性,所以我們一般通過user-Agent來控制訪問,常用的方法就是加一個(gè)虛擬的headers[2]模擬正常用戶登錄以防訪問受限。
2.2 數(shù)據(jù)分析
檢查、清洗、整理、轉(zhuǎn)換和建模數(shù)據(jù),發(fā)現(xiàn)有用的信息,進(jìn)行數(shù)據(jù)分析(相關(guān)分析、回歸分析等)獲取大數(shù)據(jù)價(jià)值鏈,挖掘數(shù)據(jù)中潛在的價(jià)值,對(duì)于得出的結(jié)論可以根據(jù)所需要的內(nèi)容進(jìn)行篩選、整合、提取,并選擇合適的數(shù)據(jù)進(jìn)行分析,提高研究結(jié)果的可用性、價(jià)值性和準(zhǔn)確性。
本項(xiàng)目中采用的數(shù)據(jù)分析就是將各地新冠肺炎確診人數(shù)以及甲乙類法定報(bào)告?zhèn)魅静“l(fā)病人數(shù)及死亡人數(shù)和甲乙類法定報(bào)告?zhèn)魅静“l(fā)病率、死亡率及病死率的數(shù)據(jù)進(jìn)行整合,并按照數(shù)據(jù)的不同特征進(jìn)行篩選,在大量數(shù)據(jù)集中選擇自己所需要的數(shù)據(jù)并提取出來,儲(chǔ)存為json格式數(shù)據(jù),方便前端提取使用。
將獲取的數(shù)據(jù)使用Python Flask框架+ECharts.js進(jìn)行繪圖,最終實(shí)現(xiàn)可視化界面。
2.3 數(shù)據(jù)可視化
數(shù)據(jù)可視化是數(shù)據(jù)分析和展示的一種表現(xiàn)形式,它一直處在不斷更新變化中。我們所獲得的數(shù)據(jù)信息很大程度上依賴其表現(xiàn)形式,數(shù)據(jù)可視化是對(duì)數(shù)據(jù)中內(nèi)容進(jìn)行清洗、整合,再配合可視化圖形的方式來展示數(shù)據(jù)信息屬性。數(shù)據(jù)與可視化兩者相輔相成,為數(shù)據(jù)分析結(jié)果的展示增添了幾分靈性。
數(shù)據(jù)可視化展現(xiàn)方式眾多,除了日常所見到的柱狀圖、線狀圖外,還有和弦圖、圈餅圖、GIS地圖等各種展現(xiàn)形式。Echarts是開源圖表庫,包含大量可視化圖表,以便我們可以依據(jù)數(shù)據(jù)分析的價(jià)值方向,選擇側(cè)重變化趨勢(shì)、指標(biāo)等因素的可視化圖表形式。Echarts適用于各大瀏覽器,可用程度高[3]。目前大數(shù)據(jù)技術(shù)已經(jīng)廣泛應(yīng)用于日常生活,例如:城市交通數(shù)據(jù)在幫助規(guī)劃限速路段、紅綠燈時(shí)長等方面的應(yīng)用。
數(shù)據(jù)的可視化實(shí)現(xiàn)過程一般比較復(fù)雜,龐大的數(shù)據(jù)量總價(jià)值密度低,要求進(jìn)行檢查、清洗、整理、轉(zhuǎn)換和建模數(shù)據(jù),發(fā)現(xiàn)有用的信息,進(jìn)行數(shù)據(jù)分析(相關(guān)分析、回歸分析等)獲取大數(shù)據(jù)價(jià)值鏈?;舅枷胧菍@得數(shù)據(jù)集中的每一個(gè)數(shù)據(jù)項(xiàng)作為單個(gè)圖源元素表示大量的數(shù)據(jù)集,進(jìn)而形成數(shù)據(jù)圖像可視化[4]。可視化采用交互性圖表為數(shù)據(jù)展示形式直觀展示統(tǒng)計(jì)信息屬性,符合大腦信息處理機(jī)制視覺信息處理更快的特點(diǎn),易于被用戶接受。
本平臺(tái)采用如上技術(shù),首先完成頁面設(shè)計(jì),logo的制作和頁面板塊布局;其次,完成數(shù)據(jù)收集處理;接著,對(duì)所獲取的數(shù)據(jù)進(jìn)行分析;最后,根據(jù)不同的展示需求,繪制相應(yīng)的數(shù)據(jù)圖,為了使用戶對(duì)數(shù)據(jù)挖掘和頁面內(nèi)容生成直觀生動(dòng)的感受,將對(duì)象屬性數(shù)據(jù)簡(jiǎn)明、清晰地進(jìn)行“可視化”渲染。
3 系統(tǒng)分析與設(shè)計(jì)
3.1 內(nèi)容設(shè)計(jì)
此項(xiàng)目的數(shù)據(jù)源來自相關(guān)數(shù)據(jù)公示平臺(tái),如國家統(tǒng)計(jì)局、衛(wèi)健委數(shù)據(jù)源等。通過Python網(wǎng)絡(luò)爬蟲實(shí)時(shí)獲取或?qū)?shù)據(jù)保存至本地進(jìn)行數(shù)據(jù)清洗。統(tǒng)計(jì)甲乙類法定報(bào)告?zhèn)魅静“l(fā)病人數(shù)及死亡人數(shù)以及甲乙類法定報(bào)告?zhèn)魅静“l(fā)病率、死亡率及病死率。使用清洗后的數(shù)據(jù),調(diào)用可視化模型進(jìn)行一般可視化渲染與繪制:
1)中國新冠肺炎數(shù)據(jù)。主要字段有:省份、感染并確診人數(shù);