田學成,韓 寧
(1.國電南京自動化股份有限公司,江蘇 南京 211100;2.武威市公安局涼州分局,甘肅 武威733000)
當前國內疫情形勢仍然嚴峻,防控正處于關鍵緊要時期,在“外防輸入、內防輸出、動態(tài)清零”的總體要求下,開展精準流調工作至關重要。疫情期間開展流調工作需要依托大數據支持,數據處理結果關乎疫情防疫政策的實施,如何對流調數據快速精準的定位和篩選是地方政府疫情防疫環(huán)節(jié)中重要的一環(huán)。而目前流調數據普遍呈現(xiàn)出零碎化、非結構化特點,導致公安民警在進行流調數據處理工作時,需要投入了大量時間成本和寶貴人力。本文基于MySQL數據庫快速篩選出符合條件的數據,將大數據處理變得自動化、靈活化,提高疫情流調工作的效率,提高民警對大數據處理的工作效率,為防疫工作爭取更多時間,更好地將精力投入后期的安全防控措施中去,同時減輕基層公安民警工作負擔。本文對疫情流調數據處理方法適用于臨時情況下數據處理任務?;诹髡{數據特點,建立流調數據模型。圖1是流調數據處理流程。
圖1 流調數據處理流程
疫情流調中最初的數據格式基于xls或者xlsx居多,原始的流調數據存在時間冗余、信息重復、數據分散、數據噪音等特點[1],不能直接用于疫情流調工作的開展,同時Excel文件數據不屬于結構化數據,對數據的交叉處理使用率低,且數據處理函數復雜不易掌握。圖2是流調數據的特點。
圖2 流調數據特點
本文基于流調數據的特點,設計流調數據模型。數據是大數據處理的核心,數據模型設計的原則要滿足實驗需求,同時盡可能體現(xiàn)仿真原則。根據三大運營商移動號碼規(guī)則使用隨機數的方法生成隨電話號碼,按照流調時間范圍生成隨機時間,按照中文姓氏和名字生成隨機姓名,最終組合成數據模型為“手機號碼、時間、手機型號、姓名”的流調數據模型,數據單位容量為1 000。該流調數據模型同時也要滿足下面要求:
(1)同一時間有不同的人;
(2)存在同一人不同時間段出現(xiàn);
(3)允許存在出現(xiàn)時間記錄僅一次。
根據流調數據特點最終生成如表1所示流調模型數據。
表1 流調數據模型
2.1.1 數據清洗
流調數據模型中手機型號、通信運營商屬于噪聲信息,流調模型數據的手機型號對防疫流調調查沒有研究意義,在數據清洗中應當剔除,確保流調數據過濾無干擾數據。
數據清洗是對臟數據進行檢測和糾正的過程,對數據缺失、數據冗余、數據沖突和數據錯誤等噪聲進行保真化處理,同時挖掘出后續(xù)數據分析和可視化等必須的關鍵數據,是提高數據研究質量的重要手段之一[2]。
2.1.2 數據集成
數據集成是將多個數據源中的數據整合并存儲到一致的數據庫中。這一過程中首先需要解決三個問題:模式匹配、數據冗余、數據值沖突檢測與處理[3]。對來自多個實體的不同數據進行匹配是處理數據集成的首要問題。
流調數據值沖突問題主要表現(xiàn)在來源不同實體的數據存在數據格式差異、數據冗余和數據可期望值分散的問題,作為篩選模板的數據,數據不可刪除、不可對缺失的值做均值填補、回歸插補等噪聲過濾處理方法,目的是保持數據的唯一可信度[4]。
數據分組的目的是在預定條件的基礎上對每個邏輯分組再分組,得到更細致化的數據,使得數據符合防疫需求?;贛ySQL的多層嵌套子查詢數據過濾方法可以實現(xiàn)對數據的簡單過濾。圖2是將不同的數據源按照流調需求進行數據合并的過程。
使用Navicat for MySQL可以將Excel數據導入MySQL數據庫,根據Excel表中的數據字段格式在Navicat中添加新表的字段并設置字段屬性,導入數據之后對表進行刷新,數據格式轉換應當遵循數據類型的要求,避免數據轉換后數據長度損失等情況。表2是流調數據模型Excel表轉換MySQL字段對照表。
表2 數據格式字段轉換
MySQL數據庫支持對數據的子查詢和嵌套查詢,方便對數據的過濾。使用子查詢,可將每個查詢結果作為一個查詢條件繼續(xù)查詢數據[5]。據此可對流調數據模型使用嵌套子查詢,查詢流調數據模型中重復出現(xiàn)某疫情區(qū)域的人,并按照姓名和時間先后進行排列,查詢語句為:
可以看到查詢結果的數據特征,據此分析流調數據。查詢結果見表3。
表3 重復出現(xiàn)查詢結果
基于流調模型數據,事實上可能存在不重復記錄的號碼,在考慮數據過濾的時候要根據實際情況而定??梢灾付ㄈ掌陂g隔過濾數據,對在某個日期窗口期停留的人員進行篩選確定通行碼是否變更為黃碼,可指定篩選條件:Datel≤Time≤Date2。
查詢語句為:
表4是指定日期窗口查詢結果。
表4 時間段查詢結果
MySQL數據庫伴隨數據量增大和嵌套子查詢的層數的增多,使用子查詢占據的時間也會增多,反映出MySQL在處理多條件嵌套子查詢時間延遲問題,需要使用第三方優(yōu)化查詢方法。
大數據預處理技術主要是指完成對已接收數據的辨析、抽取、清洗、填補、平滑、合并、規(guī)格化及檢查一致性等操作[6]?;贛ySQL流調數據使用嵌套子查詢不能滿足復雜的數據需求。可以使用Python第三方庫Pandas處理流調數據基于時間過濾的需求。Pandas是一個強大的分析結構化數據的工具集,支持多種文件格式,比如CSV、JSON、SQL、Excel數據導入,同時Pandas可以對各種數據進行運算操作,比如歸并、再成形、選擇,還有數據清洗和數據加工特點[7]。因為流調數據中電話號碼具有唯一性,而姓名可能存在重復,所以對電話號碼相同的字段進行過濾,將相同號碼對應的時間存儲到對應的數組中Tphone,則Tphone=[T1,T2,…,Tn],將對應重復號碼的時間合并到一個數組里面,每個一號碼對應形成新的 數組P=[name,phone,Tphone], 表5是使用Pandas對流調數據重組后的表。
表5 基于停留時間數據重組
為了計算在疫區(qū)停留間隔時間,需要對單個人的停留時間取時間最大值Tmax=max(T1,T2,…,Tn)和時間最小值Tmin=min(T1,T2,…,Tn),并計算時間差值Tcell=(Tmax-Tmin).total_seconds(),遍歷輸出每個人對應的停留時間信息{phone,name,Tcell}。最后按照防疫要求對時間間隔停留超過半小時的人進行篩選。Tcell/60≥30 min,按照當地防疫要求停留時間超過t
(min)則通行碼需要變更為黃碼。
基于MySQL數據的查詢,需要建立MySQL的數據驅動,需要安裝的第三方庫文件Pandas,MySQL數據驅動連接核心代碼實現(xiàn)部分如下:
按照設計的時間處理函數,使用Pandas對結構化MySQL數據進行時間過濾,并對停留時間內超過30 min的數據進行統(tǒng)計輸出,其核心功能代碼如下:
輸出結果按照{phone,name,Tcell}數組形式輸出,圖3是基于停留時間間隔過濾輸出結果。該結果可用于防疫工作指導通行碼變更的依據。
圖3 停留時間超過30 min的人
根據防疫需求可修改時間間隔判斷條件Tcell/60≥tmin,但是可能存在有的基站的記錄個人電話號碼只有一次,不能憑據時間間隔過濾,理論上存在還在疫區(qū)的可能,所以將這部分人群也全部標記出來。
數據可視化是將數據作為數據視覺表現(xiàn)的一種形式,可以直觀地反映數據信息。
目前大數據可視化主要包括:文本可視化、網絡可視化、多維數據可視化等[8]。本文基于流調數據模型MySQL數據做可視化處理,采用開源的數據可視DataGear開發(fā)平臺,具有易于部署、操作簡單、可集成可視化面板等數據分析功能,支持接入SQL、CSV、Excel、HTTP接 口、JSON等 多 種 數 據 源。系統(tǒng)主要功能包括:數據管理、SQL工作臺、數據導入/導出、數據集管理、圖表管理、看板管理等。支持運行時接入任意提供JDBC驅動的數據庫,包括MySQL、Oracle、PostgreSQL、SQL Server等 關 系 數據庫,以及Elasticsearch、ClickHouse、Hive等大數據引擎[9]。
本文流調數據模型數據可視化使用數據圖表餅圖,直觀地反映流調數據不同維度的數據情況。便于防疫疫情的研判和工作的開展,基于DataGear對流調數據模型做可視化處理。圖4是流調數據模型可視化處理的流程。
圖4 數據可視化流程
數據可視化需要根據防疫工作需要,確定可視化內容。疫情防疫的工作需要及時更新數據、動態(tài)追蹤數據變化情況。為防疫工作提供更多的參照信息。
在基于流調數據模型MySQL,實現(xiàn)了對不同日期數據過濾,可視化后可以直觀地反映相鄰幾個日期內數據的變化趨勢。圖5是1月1日~3日之間疫區(qū)停留人數統(tǒng)計可視化。
圖5 流調數據模型日期分布
為了預測本地區(qū)是否有潛在的外部輸入型疫情風險,需要可視化本地區(qū)人數和非本地區(qū)人數情況。圖6是基于流調數據模型統(tǒng)計的人口情況。
圖6 流調數據模型外來人口情況
流調其中一個關鍵的目的是快速確定防疫區(qū)停留時間超過某個時間間隔的人,以及時調整通信碼狀態(tài)。據此需要將停留時間間隔停留人數可視化。圖7是停留時間間隔超過tmin的可視化情況。
圖7 流調數據模型疫區(qū)停留時間間隔
疫情流調數據傳輸安全是數據安全保障基本要求,根據《中華人民共和國數據安全法》[10]中的要求,需要保障流調數據傳輸過程中的完整性的保密性。傳統(tǒng)數據壓縮加密容易被攻擊者截獲破解,造成數據泄露,數據的完整性使用MD5驗證方法[11],數據的保密性采用基于國密算法SM4分組對稱加密算法對疫情流調數據進行加密傳輸[12],可實現(xiàn)流調數據傳輸安全性。
新冠肺炎作為一種突發(fā)性、大規(guī)模的公共衛(wèi)生事件,不但威脅著人類的健康和生命安全,也給基層防疫工作帶來了巨大的挑戰(zhàn)。本文建立流調數據模型,基于MySQL對流調數據進行過濾,使用Pandas對流調數據基于時間過濾,并通過DataGear對流調數據模型做了可視化處理,可以提高流調數據效率,同時減輕基層公安民警工作負擔;使用國密算法SM4對流調數據加密可保證數據傳輸安全。本文方法對疫情期間的大數據處理工作具有指導意義。