沈杰
(哈爾濱商業(yè)大學(xué) 黑龍江哈爾濱 150028)
現(xiàn)代化信息技術(shù)不斷推陳出新,涌現(xiàn)出很多新技術(shù),相應(yīng)的應(yīng)用系統(tǒng)也在迅猛涌現(xiàn),為數(shù)據(jù)信息存儲(chǔ)、分析和處理提供了極大的便利??萍及l(fā)展的同時(shí),數(shù)據(jù)信息規(guī)模不斷擴(kuò)大,系統(tǒng)數(shù)據(jù)多是存儲(chǔ)在數(shù)據(jù)庫(kù)中,以結(jié)構(gòu)化數(shù)據(jù)形態(tài)存在。但非結(jié)構(gòu)化數(shù)據(jù)量也在不斷增加,通過(guò)文件形式存儲(chǔ),信息過(guò)于碎片化,不便于后續(xù)的信息檢索和使用。由于數(shù)據(jù)潛在有價(jià)值信息無(wú)法得到有效挖掘和利用,無(wú)法滿足數(shù)據(jù)分析和處理需求,迫切地需要推動(dòng)數(shù)據(jù)分析技術(shù)創(chuàng)新優(yōu)化。常見(jiàn)的數(shù)據(jù)分析軟件有SAS、SPSS、Matlab 幾種,但由于軟件成本高,安裝過(guò)程復(fù)雜,運(yùn)行環(huán)境較高,因此實(shí)際應(yīng)用較為不便。而Python 是一種跨平臺(tái)的高級(jí)程序設(shè)計(jì)語(yǔ)言,內(nèi)容簡(jiǎn)潔明了,并且便于后期功能擴(kuò)展,數(shù)據(jù)庫(kù)標(biāo)準(zhǔn)化,將其引入數(shù)據(jù)分析領(lǐng)域取得了較為理想的成果。所以,Python逐漸成為數(shù)據(jù)分析領(lǐng)域的主要工具手段,有助于實(shí)現(xiàn)數(shù)據(jù)分析可視化,提取有價(jià)值信息,并且在Web上直觀展示。
Python是跨平臺(tái)的一種高級(jí)計(jì)算機(jī)應(yīng)用程序設(shè)計(jì)語(yǔ)言,正式發(fā)行于1991年,擁有豐富、強(qiáng)大的文件庫(kù)支持,可以滿足多種編程設(shè)計(jì)語(yǔ)言的模塊化文件信息提取和聯(lián)接?;赑ython可以快速改寫生成系統(tǒng)程序中的各個(gè)原型,依據(jù)技術(shù)特殊要求對(duì)某原型更改處理。Python是高級(jí)的編程語(yǔ)言,后期便于功能擴(kuò)展,但同時(shí)Python 的多方面?zhèn)鬏斮|(zhì)量平衡問(wèn)題無(wú)法規(guī)避,相較于C++編程語(yǔ)言傳輸較慢,因此多是應(yīng)用在數(shù)學(xué)圖像處理、科學(xué)圖像視頻處理、多媒體視頻應(yīng)用、文本W(wǎng)eb 視頻編程、PYMO 搜索引擎等領(lǐng)域??梢暬_(kāi)源數(shù)據(jù)分析服務(wù)平臺(tái),可以滿足在線數(shù)據(jù)分析、互動(dòng)開(kāi)源數(shù)據(jù)管理分析,同時(shí)配備了專門的下載幫助模塊功能,便于用戶更加便捷地下載使用[1]。
Python的優(yōu)勢(shì)非常鮮明,具有較強(qiáng)的應(yīng)用功能,在圖形用戶界面開(kāi)發(fā)、信息系統(tǒng)開(kāi)發(fā)以及游戲軟件系統(tǒng)開(kāi)放等領(lǐng)域均有所應(yīng)用。Python 的兼容性較強(qiáng),可以滿足常見(jiàn)的網(wǎng)絡(luò),主要是由于內(nèi)部配備了網(wǎng)絡(luò)中繼器,在不同網(wǎng)絡(luò)環(huán)境中運(yùn)行程序時(shí),可以同時(shí)支持多重網(wǎng)絡(luò),如urllib 以及socket 等。數(shù)據(jù)信息分析排重庫(kù)中,幫助用戶捕捉網(wǎng)頁(yè)或其他相關(guān)數(shù)據(jù)信息,提供數(shù)據(jù)框用于數(shù)據(jù)信息快速提取和分析,通過(guò)正則表達(dá)式來(lái)收集、分析和處理數(shù)據(jù)信息?;赑ython 進(jìn)行數(shù)據(jù)分析和處理,憑借海量資源優(yōu)勢(shì),可以快速捕捉所需要數(shù)據(jù)信息,完成信息提取需要[2]。另外,Python 的海量信息處理分析軟件庫(kù)豐富全面,具有擴(kuò)展性功能,逐漸從傳統(tǒng)計(jì)算機(jī)領(lǐng)域朝著Web 領(lǐng)域延伸拓展,快速提取數(shù)據(jù)信息,加之配備了多類型的數(shù)據(jù)模型,實(shí)現(xiàn)數(shù)據(jù)快速提取和分析處理。
Python將神經(jīng)網(wǎng)絡(luò)和人工智能等數(shù)據(jù)資源整合在一起,在云端平臺(tái)即可實(shí)現(xiàn)兼容多種編程語(yǔ)言,借助專門的數(shù)據(jù)庫(kù)管理工具快速提取、分析和處理數(shù)據(jù),滿足云數(shù)據(jù)服務(wù)的多功能需求,在減少運(yùn)營(yíng)管理成本的同時(shí),進(jìn)一步縮短分析開(kāi)發(fā)周期,整體效率也將大大提升。在項(xiàng)目數(shù)據(jù)中提取、整理和挖掘,并展示數(shù)據(jù)分析成果,不需要其他數(shù)據(jù)數(shù)據(jù)分析資源庫(kù)支持,用戶可以便捷地通過(guò)Python 完成數(shù)據(jù)分析整個(gè)過(guò)程,最大程度地避免數(shù)據(jù)分析錯(cuò)誤轉(zhuǎn)化,切實(shí)提升大數(shù)據(jù)綜合應(yīng)用性[3]。相較于以往企業(yè)網(wǎng)頁(yè)設(shè)計(jì)數(shù)據(jù)處理,Python可以充分依據(jù)開(kāi)發(fā)需求來(lái)建構(gòu)多樣化功能,還具有深度交互和學(xué)習(xí)功能,增強(qiáng)功能開(kāi)發(fā)能力,實(shí)現(xiàn)數(shù)據(jù)信息高效、便捷處理,在加快產(chǎn)品程序開(kāi)發(fā)效率提升方面同樣有著積極作用。Python 的數(shù)據(jù)圖表系統(tǒng),對(duì)于多類型數(shù)據(jù)圖表可以高效快速統(tǒng)計(jì)分析,實(shí)現(xiàn)全過(guò)程可視化,并且通過(guò)合理化的形象直觀呈現(xiàn),相較于其他應(yīng)用程序而言處理成本更低。
數(shù)據(jù)分析可視化,是通過(guò)對(duì)復(fù)雜數(shù)據(jù)信息整理、歸納和處理,采用多種形式將數(shù)據(jù)信息呈現(xiàn)出來(lái),便于人們獲取所需要數(shù)據(jù)信息,并通過(guò)深度數(shù)據(jù)挖掘來(lái)獲取有價(jià)值信息。核心思想是將每一個(gè)數(shù)據(jù)項(xiàng)作為單獨(dú)的圖元元素表示,將大量數(shù)據(jù)集合在一起構(gòu)成數(shù)據(jù)圖像,并通過(guò)多維數(shù)據(jù)呈現(xiàn),多維度觀察和分析數(shù)據(jù)。數(shù)據(jù)分析中,對(duì)于可分類、有規(guī)律和有邏輯的數(shù)據(jù)可視化呈現(xiàn)表達(dá),具體環(huán)節(jié)如下。
(1)數(shù)據(jù)讀取。獲取多來(lái)源的對(duì)象數(shù)據(jù),明確數(shù)據(jù)屬性和可視化用途。(2)數(shù)據(jù)化處理[4]。加工處理現(xiàn)有數(shù)據(jù),依據(jù)標(biāo)準(zhǔn)篩選和降維,為后續(xù)數(shù)據(jù)分析奠定基礎(chǔ)。由于Python 是一種高級(jí)的編程語(yǔ)言,可以跨平臺(tái)使用,可以清晰呈現(xiàn)數(shù)據(jù)信息在用戶面前,在促進(jìn)工作效率提升方面有著積極作用。
數(shù)據(jù)分析可視化平臺(tái),其中包括多個(gè)模塊,具體有數(shù)據(jù)分析模塊、數(shù)據(jù)采集模塊、結(jié)果展示模塊。采用Python 3.5 開(kāi)發(fā),F(xiàn)lask 為Web 開(kāi)發(fā)框架,數(shù)據(jù)庫(kù)為MySQL;使用Pandas 分次結(jié)構(gòu)化數(shù)據(jù),Matplotlib 滿足可視化需要;非結(jié)構(gòu)化數(shù)據(jù)中,分詞處理基于Jieba 實(shí)現(xiàn),詞云展示為Wordcloud,在PyCharm 2018 集成環(huán)境中進(jìn)行平臺(tái)開(kāi)發(fā)。平臺(tái)的數(shù)據(jù)處理流程如圖1所示。
圖1 數(shù)據(jù)處理流程
3.2.1 數(shù)據(jù)采集
數(shù)據(jù)采集階段,采集信息是否全面、準(zhǔn)確,直接影響到后續(xù)數(shù)據(jù)分析結(jié)果合理性。因此,可以選擇Pandas的read SQL函數(shù)來(lái)提取數(shù)據(jù)庫(kù)中的數(shù)據(jù)?;贒ata Frame 的索引功能,實(shí)現(xiàn)數(shù)據(jù)庫(kù)表的數(shù)據(jù)信息檢索和存儲(chǔ)。常見(jiàn)的數(shù)據(jù)庫(kù)有SQL Server、Oracle 以及MySQL 等,借助Pandas 可以基于數(shù)據(jù)庫(kù)驅(qū)動(dòng)與常用數(shù)據(jù)庫(kù)建立連接,將數(shù)據(jù)信息輸入Data Frame 中。為了滿足后續(xù)數(shù)據(jù)分析需要,將業(yè)務(wù)系統(tǒng)數(shù)據(jù)庫(kù)連接字符串在數(shù)據(jù)分析可視化平臺(tái)數(shù)據(jù)庫(kù)中存儲(chǔ),并且在數(shù)據(jù)庫(kù)中建立相對(duì)應(yīng)的視圖?;趓ead-excel 函數(shù)讀取文件中數(shù)據(jù)。結(jié)合實(shí)踐經(jīng)驗(yàn)來(lái)看,在數(shù)據(jù)采集階段中經(jīng)常出現(xiàn)數(shù)據(jù)重復(fù)、丟失和數(shù)據(jù)異常等情況,這就需要在數(shù)據(jù)分析前對(duì)容易出現(xiàn)問(wèn)題的數(shù)據(jù)預(yù)處理,比如:數(shù)據(jù)重復(fù)可以選擇刪除操作,數(shù)據(jù)缺失可以填充或刪除操作,在深入剖析導(dǎo)致數(shù)據(jù)信息異常原因基礎(chǔ)上,及時(shí)調(diào)整處理,全面保障數(shù)據(jù)信息準(zhǔn)確性和真實(shí)性[5]。
3.2.2 數(shù)據(jù)分析
在數(shù)據(jù)分析階段,針對(duì)收集的數(shù)據(jù)信息要加深認(rèn)知和熟悉,可以使用Pandas的head提前預(yù)覽少部分?jǐn)?shù)據(jù),shape、info可以分別反饋數(shù)據(jù)表大小、數(shù)據(jù)類型,借助describe 了解具體數(shù)值分布情況。將需要分析的數(shù)據(jù)篩選出來(lái),基于數(shù)據(jù)計(jì)算、分組和查詢等一系列操作,實(shí)現(xiàn)數(shù)據(jù)信息高質(zhì)量分析。使用Pandas 中的tosql 函數(shù),將分析結(jié)果寫入可視化平臺(tái)數(shù)據(jù)庫(kù)中,在Web瀏覽器上直觀呈現(xiàn)。
3.2.3 數(shù)據(jù)可視化
Python 中的Matplotlib 擁有豐富的圖表數(shù)據(jù)資源,可以跨平臺(tái)生成高質(zhì)量的圖形,兼容性較強(qiáng),主要是通過(guò)硬拷貝格式實(shí)現(xiàn)。Matplotlib 文檔完備,與Matlab 一樣配備了相似的API,在交互式繪圖方面有著積極優(yōu)勢(shì)。具體可以生成餅狀圖、散點(diǎn)圖、柱狀圖以及折線圖等。Pandas 分析結(jié)果,可以借助Matplotlib 可視化呈現(xiàn),也可以直接在平臺(tái)數(shù)據(jù)庫(kù)中提取數(shù)據(jù)信息,可視化呈現(xiàn)[6]。
3.2.4 案例系統(tǒng)
案例系統(tǒng)可以滿足用戶之間信息交流需要,共享案例經(jīng)驗(yàn),跨平臺(tái)交互。通過(guò)引入實(shí)際案例,可以促進(jìn)用戶深入理解和分析,理解數(shù)據(jù)分析結(jié)果并實(shí)際應(yīng)用,針對(duì)性解決系統(tǒng)實(shí)際應(yīng)用中存在的問(wèn)題。案例展示界面配備了詳細(xì)的背景描述,同時(shí)有多類型的數(shù)據(jù)信息支持。在了解相關(guān)案例后,遵循操作步驟可以自行操作,更進(jìn)一步加深數(shù)據(jù)分析結(jié)果,在此基礎(chǔ)上分析和處理問(wèn)題,共享問(wèn)題解決經(jīng)驗(yàn)。
3.3.1 數(shù)據(jù)采集
伴隨著結(jié)構(gòu)化數(shù)據(jù)量增加,非結(jié)構(gòu)化數(shù)據(jù)信息總量也在隨之增加,包括PPT 文檔、Word 文檔以及視頻等非結(jié)構(gòu)化數(shù)據(jù),主要是采用文件形式存儲(chǔ),但是由于文件過(guò)于碎片化,后期文件檢索難度較大,耗費(fèi)時(shí)間長(zhǎng),不便于文件的有效利用。因此,為了滿足后期數(shù)據(jù)分析和處理需要,非結(jié)構(gòu)化數(shù)據(jù)要做好前期預(yù)處理工作,比如:視頻文件可以借助MoviePy 庫(kù),從視頻文件中提取音頻數(shù)據(jù)文件,借助平臺(tái)的語(yǔ)言轉(zhuǎn)化功能,將音頻文件轉(zhuǎn)化為本;Word 文件,基于Python-docx,將Word 文檔中的文本內(nèi)容提取出來(lái);PDF 文件內(nèi)容,使用pdfminer3k 庫(kù)提??;PPT 課件,使用Python-pptx 庫(kù)提取[7]。
3.3.2 詞頻統(tǒng)計(jì)可視化
由于中文主要是以字作為基本單位,所以詞語(yǔ)之間并沒(méi)有確切的區(qū)分標(biāo)記,所以關(guān)于中文文本詞頻統(tǒng)計(jì)需要分詞處理,自動(dòng)化切分詞語(yǔ),然后進(jìn)行統(tǒng)計(jì)。作為Python 中的一項(xiàng)常用中文分詞庫(kù),Jieba 可以自動(dòng)化將需要分詞的內(nèi)容與詞庫(kù)對(duì)比檢索,找到對(duì)應(yīng)的詞組。Jieba的分詞模式有保羅全模式、索索引擎模式以及精確模式3 種,即便是繁體字詞,也可以支持自動(dòng)化分詞,對(duì)于Jieba 詞庫(kù)中并沒(méi)有收錄的詞,可以自定義詞典予以處理。即便Jieba 詞庫(kù)具有突出的詞語(yǔ)識(shí)別能力,但可以讓用戶自行添加新詞,這樣可以大大提升準(zhǔn)確率。
詞云是將詞語(yǔ)作為基本單位,對(duì)于出現(xiàn)頻率高的關(guān)鍵詞突出顯示,更加直觀,形成彩色圖片。此種方式可以將低頻文本信息篩選過(guò)濾,遵循相應(yīng)標(biāo)準(zhǔn),只需要簡(jiǎn)單掃過(guò)即可了解到文本主題內(nèi)容,目前詞云已經(jīng)成為文本數(shù)據(jù)可視化的有效方式。Python 的Wordcloud是文本生成詞云的庫(kù),基于詞云圖即可了解非結(jié)構(gòu)化數(shù)據(jù)主要內(nèi)容。非結(jié)構(gòu)化數(shù)據(jù)信息的處理和管理,可以提前將對(duì)應(yīng)文本、非結(jié)構(gòu)化數(shù)據(jù)文件和詞云圖等文件路徑輸入平臺(tái)數(shù)據(jù)庫(kù)中,重點(diǎn)將出現(xiàn)頻率高的關(guān)鍵詞輸入數(shù)據(jù)庫(kù),定期更新和完善。
基于Python 的數(shù)據(jù)分析可視化平臺(tái),具有產(chǎn)品數(shù)據(jù)分析功能。通過(guò)輸入和分析客戶數(shù)據(jù)信息,可以反饋客戶需求,結(jié)合客戶喜好和需求來(lái)針對(duì)性調(diào)整生產(chǎn)方案,更具針對(duì)性地開(kāi)發(fā)產(chǎn)品和提供服務(wù)。對(duì)于可視化數(shù)據(jù)的應(yīng)用,伴隨著數(shù)據(jù)分析技術(shù)不斷成熟發(fā)展,開(kāi)始在諸多領(lǐng)域中引用此項(xiàng)技術(shù),如工程、地圖、城市規(guī)劃等領(lǐng)域??梢哉f(shuō),數(shù)據(jù)可視化技術(shù)的涌現(xiàn),為社會(huì)生產(chǎn)生活帶來(lái)了極大的便利,可以梳理數(shù)據(jù)思維,獲取所需要的數(shù)據(jù)信息。目前,美國(guó)已經(jīng)對(duì)可視化數(shù)據(jù)的研究力度不斷增加,并將其應(yīng)用到諸多領(lǐng)域,如人口、氣候。因此,應(yīng)積極探索和研究可視化數(shù)據(jù)應(yīng)用,摸索數(shù)據(jù)規(guī)律,令數(shù)據(jù)更加清晰呈現(xiàn),高效完成各項(xiàng)任務(wù)。
由于數(shù)據(jù)信息規(guī)模大,內(nèi)容繁瑣,對(duì)重要信息提取和挖掘具有不良影響,因此需要將繁瑣數(shù)據(jù)信息加工處理呈現(xiàn)。通過(guò)數(shù)據(jù)分析、篩選和處理,基于圖形和表格等方式直觀呈現(xiàn),也可以依據(jù)需要選擇水球圖、餅圖、3D 圖形、樹(shù)狀圖形以及折線圖等,有邏輯、有規(guī)律地呈現(xiàn)數(shù)據(jù),便于挖掘數(shù)據(jù)規(guī)律,為后續(xù)數(shù)據(jù)處理和應(yīng)用提供支持[8]。
基于Python 的數(shù)據(jù)分析可視化平臺(tái),提供開(kāi)源論壇模塊,用戶可以在論壇模塊中自由交互和學(xué)習(xí),深入掌握算法數(shù)據(jù)結(jié)構(gòu)分析和算法應(yīng)用實(shí)現(xiàn)方式,充分掌握各種算法。在此基礎(chǔ)上,依據(jù)個(gè)性化需求二次開(kāi)發(fā),進(jìn)一步激發(fā)用戶的開(kāi)發(fā)與研究興趣。
Python的Matplotlib自動(dòng)化生成圖表,Wordcloud生成詞云圖,均是本地存儲(chǔ),用戶無(wú)法在遠(yuǎn)程查看獲取,因此還需要將圖像在Web 上發(fā)布。Flask 是輕量級(jí)的Web 框架,借助WSGI 工具箱的Werkzeug,選擇Jinja2模板引擎。Flask 中并不涵蓋抽象訪問(wèn)層,在SQLAlchemy 基礎(chǔ)上精簡(jiǎn)優(yōu)化Flask-SQLAlchemy 操作。此種方式,充分發(fā)揮Flask-SQLAlchemy 優(yōu)勢(shì)來(lái)高效數(shù)據(jù)分析,便于在可視化平臺(tái)上高效處理數(shù)據(jù)信息。需要注意的是,為了便于在Web上進(jìn)行結(jié)構(gòu)化數(shù)據(jù)信息交互,可以選擇參數(shù)、圖表等可視化數(shù)據(jù),按照服務(wù)器參數(shù)自動(dòng)化生成圖表數(shù)據(jù),在Web 上發(fā)布交互。伴隨著客戶端參數(shù)調(diào)整,圖表參數(shù)也會(huì)隨之變化,因此不適合在服務(wù)器磁盤上存儲(chǔ),直接從內(nèi)存中提取Matplotlib自動(dòng)化生成圖表,使用Base64 編碼處理,最后在Web 上發(fā)布呈現(xiàn),此種方式可以減少服務(wù)器IO 操作,系統(tǒng)的響應(yīng)速度大大增加,為用戶提供優(yōu)質(zhì)服務(wù)。
#寫入內(nèi)存,基于BytesIO 對(duì)象存儲(chǔ)png 圖像在內(nèi)存中。
非結(jié)構(gòu)化數(shù)據(jù)信息,基于Web 瀏覽器上傳或下載,首先提取非結(jié)構(gòu)化中的文本信息,并通過(guò)詞頻統(tǒng)計(jì)自動(dòng)化生成詞云。需要注意的是,非結(jié)構(gòu)化數(shù)據(jù)的文本詞云是固定不變的,可以直接在云端服務(wù)器上存儲(chǔ)詞云圖。瀏覽器端在發(fā)出請(qǐng)求后,F(xiàn)lask的Web頁(yè)面自動(dòng)化加載詞云圖,并傳輸?shù)綖g覽器上呈現(xiàn)。使用Flask可以實(shí)現(xiàn)Web 頁(yè)面上非結(jié)構(gòu)化數(shù)據(jù)信息檢索,為用戶提供更加便捷、優(yōu)質(zhì)的服務(wù)。
在信息時(shí)代背景下,網(wǎng)民數(shù)量不斷增加,因此相應(yīng)的數(shù)據(jù)信息總量也在不斷增長(zhǎng),如何從海量信息中挖掘有價(jià)值信息面臨著嚴(yán)峻挑戰(zhàn)。比如:我國(guó)電子商務(wù)飛快發(fā)展,越來(lái)越多用戶習(xí)慣網(wǎng)上購(gòu)物,基于數(shù)據(jù)分析和數(shù)據(jù)挖掘,可以了解用戶的購(gòu)物需求和傾向,并反饋用戶對(duì)產(chǎn)品或服務(wù)的滿意程度。商家應(yīng)該加強(qiáng)產(chǎn)品研發(fā)、制作和銷售各環(huán)節(jié)監(jiān)管,適當(dāng)?shù)靥嵘郎?zhǔn)入門檻,由專業(yè)能力較強(qiáng)的人員負(fù)責(zé),全方位保障產(chǎn)品質(zhì)量。
通過(guò)數(shù)據(jù)分析,可以摸索數(shù)據(jù)規(guī)律,從中摸索出客戶需求,有針對(duì)性地調(diào)整策略方向,以便于留住更多新客戶。基于Python 進(jìn)行數(shù)據(jù)分析,可以實(shí)現(xiàn)數(shù)據(jù)信息統(tǒng)計(jì)和分類,比如:使用條形圖來(lái)深層次剖析用戶對(duì)產(chǎn)品質(zhì)量不滿意點(diǎn)所在,充分?jǐn)?shù)據(jù)調(diào)查基礎(chǔ)上,調(diào)整方案。也可以借助微博、微信和抖音等新媒體平臺(tái)發(fā)起投票,將投票的數(shù)據(jù)采用Python進(jìn)行數(shù)據(jù)分析,選擇折線圖方式來(lái)直觀清晰地挖掘數(shù)據(jù)潛在價(jià)值,有針對(duì)性地調(diào)整產(chǎn)品設(shè)計(jì)方案,滿足市場(chǎng)上多元化需求。
總而言之,基于Python 數(shù)據(jù)分析的可視化平臺(tái)建構(gòu),有助于充分發(fā)揮Python 優(yōu)勢(shì),提供豐富數(shù)據(jù)庫(kù),跨平臺(tái)操作,拓寬數(shù)據(jù)分析深度和廣度,從海量信息中提取有價(jià)值信息,為后續(xù)數(shù)據(jù)利用提供可靠支持。