季旻霞 石弘利
金陵科技學(xué)院,中國·江蘇 南京 211169
Python;數(shù)據(jù)分析;Pandas;數(shù)據(jù)可視化;Matplotlib;plotly
2020年新冠在全球蔓延,不少人因?yàn)樾鹿谑ドc親人。針對(duì)這一情況,我們必須足夠重視并采取一定的行為來改善。那我們應(yīng)如何改善?隨著云時(shí)代的來臨,大數(shù)據(jù)吸引了越來越多的關(guān)注,大數(shù)據(jù)這一詞也越來越多被提及。在這次的新冠疫情中,大數(shù)據(jù)就發(fā)揮的無可替代的作用,分析這些數(shù)據(jù)內(nèi)部所蘊(yùn)含的規(guī)律,預(yù)測相關(guān)運(yùn)行趨勢,得出有效結(jié)論,從而預(yù)防病毒的肆意蔓延。
Python 是一個(gè)高層次的結(jié)合了解釋性、編譯性、互動(dòng)性和面向?qū)ο蟮哪_本語言,python 簡單開源易上手,擁有豐富強(qiáng)大的庫,流程可控,工作高效。
兩種方式可以獲取到此次疫情數(shù)據(jù),第一種是爬蟲,爬蟲因本身具備的突出優(yōu)勢,被廣泛用于數(shù)據(jù)信息采集中爬蟲提取頁面源代碼[1]。主要有兩種方法:requests 庫和selenium庫。requests 適合提取需要的元素信息直接保存在頁面的源代碼中,它提取頁面快,但不適合用于提取元素不是加載在源代碼的項(xiàng)目的情況下。第二種是通過akshare 庫,akshare 是基于python 的開源數(shù)據(jù)接口庫。這里筆者用的是第一種方法,導(dǎo)入相關(guān)部分?jǐn)?shù)據(jù)來進(jìn)行數(shù)據(jù)分析。筆者使用的是requests庫,將數(shù)據(jù)導(dǎo)入之后,由json 格式轉(zhuǎn)換為方便分析的dataframe 格式,源數(shù)據(jù)由于API 采集的機(jī)制,包含大量重復(fù)數(shù)據(jù),無效數(shù)據(jù),缺失數(shù)據(jù),所以接下來要對(duì)這些數(shù)據(jù)進(jìn)行處理[2]。
數(shù)據(jù)處理方面,Python 中的插件Pandas 功能突出。Pandas十分方便快捷,主要包括數(shù)據(jù)輸入輸出,數(shù)據(jù)清洗處理,數(shù)據(jù)挖掘等。Pandas 擁有強(qiáng)大數(shù)據(jù)清理功能,可以去重復(fù)值,通過刪除或者填補(bǔ)等處理缺失值和異常值。論文日期不是標(biāo)準(zhǔn)表示,應(yīng)將它化為年月日的方式,并使用loc 根據(jù)index 索引來提取月日。并且論文用默認(rèn)索引不是最佳方案,可以以更新日期作為索引,表一為數(shù)據(jù)處理后的結(jié)果。如下為處理的主要代碼:
圖1 數(shù)據(jù)處理后的結(jié)果
數(shù)據(jù)可視化有很多方式,可以通過excel、matplotlib、seaborn、plotly 以及詞云圖等方式給我們展示數(shù)據(jù)的數(shù)量以及發(fā)展趨勢,對(duì)可視化結(jié)果進(jìn)行分析,從中提取出有效信息,得出有用結(jié)論供人們學(xué)習(xí)以及商業(yè)參考。在論文的疫情數(shù)據(jù)中,我們可以通過分析得出哪些地區(qū)是重災(zāi)區(qū),需要引起人們的重視,嚴(yán)格控制人流量預(yù)防疫情快速蔓延,提醒相鄰地區(qū)注意防范等。
在論文中,筆者主要使用了plotly 方法繪圖。Plotly 是一個(gè)非常著名且強(qiáng)大的開源數(shù)據(jù)可視化框架,它通過構(gòu)建基于瀏覽器顯示的web 形式的可交互圖表來展示信息,可創(chuàng)建多達(dá)數(shù)十種精美的圖表和地圖,Matplotlib 存在不夠美觀、靜態(tài)性、不易分享等缺點(diǎn),限制了Python在數(shù)據(jù)可視化中的發(fā)展。為了解決這個(gè)問題,新型的動(dòng)態(tài)可視化開源模塊Plotly 應(yīng)運(yùn)而生,Plotly 具有動(dòng)態(tài)、美觀、易用、種類豐富等特性。
圖2 各區(qū)塊死亡人數(shù)
上圖是各區(qū)塊的死亡人數(shù),使用了groupby 分組計(jì)算出區(qū)塊死亡人數(shù)。從圖中可見,北美洲情況最嚴(yán)重,應(yīng)重點(diǎn)注意。中國相關(guān)部門應(yīng)嚴(yán)格把控輸入輸出來控制疫情在區(qū)塊間的傳播。
圖3 各地區(qū)的確診人數(shù)
上圖是使用plotly 繪制的折線圖,折線圖易于展現(xiàn)趨勢,上圖清晰可見美國疫情的嚴(yán)重性。
圖4 08-06 各州確診情況
圖5 08-06 中國確診人數(shù)
可視化核心代碼:
圖6 08-05 疫情較嚴(yán)重區(qū)域情況
筆者使用了matplotlib 繪制折線圖來呈現(xiàn)疫情情況描繪在八月五號(hào)重要疫情較嚴(yán)重地區(qū)疫情發(fā)展趨勢,先通過數(shù)據(jù)篩選,再使用可視化繪圖[3]。下圖可以明顯發(fā)現(xiàn)香港地區(qū)疫情較為嚴(yán)重。居住香港地區(qū)人應(yīng)注意減少外出,嚴(yán)格佩戴口罩,相鄰地區(qū)也要引起注意和重視。其他地區(qū)人應(yīng)盡量避免出入疫情嚴(yán)重區(qū)。其中,主要代碼為:
圖7 08-06 疫情詞云圖
詞云圖可以有效劃重點(diǎn),高亮出重要信息呈現(xiàn)出來。論文可以顯示出中國疫情較嚴(yán)重地區(qū)。
隨著網(wǎng)絡(luò)信息化的飛速發(fā)展,人們面對(duì)越來越多紛繁復(fù)雜的數(shù)據(jù)時(shí),需要分析處理,需要利用數(shù)據(jù)可視化后的結(jié)果指導(dǎo)和解決各種學(xué)習(xí)工作中的問題。論文利用python 語言作為編程基礎(chǔ),利用pandas 進(jìn)行數(shù)據(jù)分析以及matplotlib 和plotly 來進(jìn)行數(shù)據(jù)可視化,由此來提取出有效信息[3]。