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