◆陳華
基于Python的數(shù)據(jù)分析與可視化平臺(tái)研究
◆陳華
(昆明冶金高等??茖W(xué)校 云南 650000)
在數(shù)據(jù)時(shí)代,數(shù)據(jù)的價(jià)值受到廣泛關(guān)注,分析數(shù)據(jù)背后的含義已成為廣泛研究的問題。Python是一種可操作性強(qiáng)、易于使用、功能齊全的工具,廣泛用于數(shù)據(jù)分析。本文使用Python作為主要工具,并使用其內(nèi)置和集成庫來分析和可視化不同類型的數(shù)據(jù),充分發(fā)揮Python在數(shù)據(jù)分析領(lǐng)域的作用。
Python;數(shù)據(jù)分析;可視化平臺(tái)
隨著信息技術(shù)的發(fā)展,各種應(yīng)用系統(tǒng)應(yīng)運(yùn)而生。大學(xué)的軟件系統(tǒng)主要包括教務(wù)管理系統(tǒng)、辦公系統(tǒng)、學(xué)術(shù)系統(tǒng)等,這些系統(tǒng)的數(shù)據(jù)主要是存儲(chǔ)在數(shù)據(jù)庫中的結(jié)構(gòu)化數(shù)據(jù)。非結(jié)構(gòu)化數(shù)據(jù)主要以文件形式存儲(chǔ),具有碎片化的特點(diǎn),查找時(shí)存在一定的困難,這些數(shù)據(jù)中包含的有用信息未被充分利用。在本文中,將使用Python的數(shù)據(jù)分析,以相對(duì)較低的成本構(gòu)建一個(gè)可視化平臺(tái)。
Python是一種計(jì)算機(jī)編程語言。由于其可讀性高、集成方法更加全面、易于使用和理解等優(yōu)點(diǎn),被廣泛應(yīng)用于計(jì)算機(jī)領(lǐng)域和非計(jì)算機(jī)領(lǐng)域的數(shù)據(jù)分析。
從廣義上講,數(shù)據(jù)分析意味著從數(shù)據(jù)中收集大量數(shù)據(jù),例如讀取、存儲(chǔ)、計(jì)算、可視化、分析和其他技術(shù),以發(fā)現(xiàn)隱藏的信息、價(jià)值和決策參考。因此,數(shù)據(jù)分析是計(jì)算機(jī)科學(xué)的一個(gè)多學(xué)科分支,是挖掘數(shù)據(jù)價(jià)值的重要手段。
傳統(tǒng)的數(shù)據(jù)分析課程教學(xué)方式存在重理論、概念性強(qiáng),學(xué)生難以理解等很多問題?,F(xiàn)有的數(shù)據(jù)分析工具不適合作為課程的通用動(dòng)手工具,因?yàn)樗鼈兏鼘I(yè)且學(xué)習(xí)成本更高?;赑ython的數(shù)據(jù)分析與可視化平臺(tái)可以很好地解決上面提到的問題。
學(xué)生可以使用系統(tǒng)的數(shù)據(jù)分析模塊,在學(xué)習(xí)完理論知識(shí)后,可以根據(jù)自己的興趣和需求,選擇不同的算法進(jìn)行數(shù)據(jù)挖掘?qū)嵺`。由于每個(gè)學(xué)生的知識(shí)掌握水平存在差異,學(xué)生可以通過可視化平臺(tái)進(jìn)行針對(duì)性學(xué)習(xí),增加學(xué)習(xí)積極性。
提供了與學(xué)生實(shí)際專業(yè)相關(guān)的案例,結(jié)合這些案例,結(jié)合理論知識(shí),加深對(duì)數(shù)據(jù)挖掘應(yīng)用的理解。還可以創(chuàng)建和上傳自己的案例,與其他用戶建立聯(lián)系,并在此過程中獲得自我知識(shí)和技能提升。
系統(tǒng)提供所有算法的開源代碼,并帶有注釋,學(xué)生可以理解這些算法的具體實(shí)現(xiàn),并在理論學(xué)習(xí)的同時(shí)運(yùn)行這些代碼,也可以改進(jìn)原始算法解決自己的問題,提高理論水平和應(yīng)用水平,滿足不同層次學(xué)生的探究需求。
系統(tǒng)的網(wǎng)站配置采用B/S平臺(tái)技術(shù),使用HTML、CSS、JS實(shí)現(xiàn)網(wǎng)頁顯示,F(xiàn)lask框架實(shí)現(xiàn)后臺(tái)處理。用戶可以在網(wǎng)站上選擇合適的算法,輸入自己想要分析的數(shù)據(jù),或者上傳相關(guān)的數(shù)據(jù)文件,得到在Echarts中可視化的分析結(jié)果。
使用Python語言執(zhí)行數(shù)據(jù)分析任務(wù)的基本流程如下:
(1)在需求識(shí)別數(shù)據(jù)分析過程中,首先要明確數(shù)據(jù)分析、流程分析等數(shù)據(jù)使用需求。根據(jù)目標(biāo)數(shù)據(jù)的特點(diǎn),采用數(shù)據(jù)分析方法,深入挖掘數(shù)據(jù)的特點(diǎn)和潛在使用價(jià)值。
(2)數(shù)據(jù)采集明確數(shù)據(jù)分析要求后,應(yīng)盡可能全面地采集目標(biāo)數(shù)據(jù),尤其可以采用本地采集和Python網(wǎng)絡(luò)爬蟲采集方式。
(3)數(shù)據(jù)預(yù)處理。在正式的數(shù)據(jù)分析之前,首先要完成數(shù)據(jù)預(yù)處理,對(duì)目標(biāo)數(shù)據(jù)進(jìn)行合并、清洗、轉(zhuǎn)換和標(biāo)準(zhǔn)化,特別是要滿足后續(xù)建模分析的需要。
(4)挖掘建模。平臺(tái)使用一套算法(KNN、決策樹、K-means、PCA、線性回歸等)對(duì)數(shù)據(jù)進(jìn)行分析、處理和可視化。采用K-means算法,允許組合文件的數(shù)據(jù)維度配適當(dāng)?shù)膱D表,提供分析結(jié)果圖表和必要的文字說明以供自動(dòng)選擇。采用PCA算法對(duì)數(shù)據(jù)進(jìn)行降維,保留原始數(shù)據(jù)的主要成分,并提供原始數(shù)據(jù)結(jié)果圖和降維結(jié)果圖。
(5)結(jié)果生成數(shù)據(jù)分析完成后,應(yīng)將結(jié)果以可視化的形式展示和輸出,以便用戶使用數(shù)據(jù)結(jié)果。
數(shù)據(jù)分析平臺(tái)主要基于Python設(shè)計(jì),解決數(shù)據(jù)分析過程中的數(shù)據(jù)采集和導(dǎo)入問題,完成整個(gè)數(shù)據(jù)分析處理過程。例如,在設(shè)計(jì)產(chǎn)品售后客戶滿意度調(diào)查分析工具的過程中,主要通過本地采集完成數(shù)據(jù)的收集,引導(dǎo)調(diào)查后需要進(jìn)行數(shù)據(jù)預(yù)處理,根據(jù)問題提取數(shù)據(jù)分類和格式化,然后使用預(yù)先構(gòu)建的數(shù)據(jù)分析模型來執(zhí)行數(shù)據(jù)分析和評(píng)估任務(wù),并獲得綜合評(píng)估結(jié)果。
在設(shè)計(jì)數(shù)據(jù)分析平臺(tái)主要功能模塊的過程中,首先為用戶提供一個(gè)易于操作的圖形界面,基本操作界面主要包括導(dǎo)入調(diào)查、查詢、分析數(shù)據(jù)、顯示結(jié)果等功能??赏ㄟ^主界面操作更新數(shù)據(jù)庫,完成按操作約束分類的數(shù)據(jù)處理功能。使用數(shù)據(jù)結(jié)果時(shí),可以通過查詢、編輯、標(biāo)注、選擇、刪除等功能,獲取所需的數(shù)據(jù)分析結(jié)果,并保存到結(jié)果數(shù)據(jù)庫中。
案例系統(tǒng)是搭建一個(gè)交流學(xué)習(xí)分享平臺(tái),根據(jù)目前的用戶反饋和試用結(jié)果,對(duì)于可視化數(shù)據(jù)分析平臺(tái)的開發(fā),基于Python的可視化數(shù)據(jù)分析平臺(tái),除了數(shù)據(jù)分析之外,還有很高的教育價(jià)值和信息處理功能。隨著學(xué)生學(xué)習(xí)和數(shù)據(jù)挖掘課程的教育需求,學(xué)生通過平臺(tái)交流和使用數(shù)據(jù),應(yīng)用課程中學(xué)到的知識(shí),更好地理解平臺(tái)在數(shù)據(jù)分析中的應(yīng)用,解決數(shù)據(jù)分析和挖掘問題。
大部分視頻、PDF文檔、Word文檔、PPT文檔等非結(jié)構(gòu)化數(shù)據(jù)都以文件的形式存儲(chǔ)。對(duì)于非結(jié)構(gòu)化數(shù)據(jù),可以先提取文本內(nèi)容,方便分析,再對(duì)文本內(nèi)容進(jìn)行分析處理。對(duì)于視頻文件,可以使用Python的MoviePy庫從視頻文件中提取音頻,然后調(diào)用科大訊飛開放平臺(tái)的語音轉(zhuǎn)錄功能將語音轉(zhuǎn)換為文本。對(duì)于PDF文件,可以使用pdfminer3k庫提取文本內(nèi)容。Python可取PDF文件的文本內(nèi)容。對(duì)于Word文檔文件,可以使用Python中的python-docx庫來提取Word文檔的文本內(nèi)容。對(duì)于PPT課件,可以使用Python的python-pptx庫來提取PPT的文本內(nèi)容。
對(duì)于中文文本的詞頻統(tǒng)計(jì),需要分詞來自動(dòng)對(duì)中文文本進(jìn)行分詞。jieba是Python中常用的中文分詞庫,使用同義詞庫將需要切分的內(nèi)容與同義詞庫進(jìn)行比較,以找到最可能的詞組。Jieba支持三種中文分詞模式:精確模式、完整模式和搜索引擎模式。Jieba有生詞識(shí)別能力,但是自己添加生詞可以保證更高的準(zhǔn)確率。詞云以詞為單位,對(duì)文本中出現(xiàn)頻率高的關(guān)鍵詞進(jìn)行視覺上的突出顯示,并將關(guān)鍵詞渲染成云狀的彩色圖片。詞云可以過濾掉大量低頻、低質(zhì)量的文本信息,讓瀏覽者一目了然,已經(jīng)成為可視化文本數(shù)據(jù)的常用方法。Wordcloud是Python中的一個(gè)庫,可從文本生成詞云。通過詞云圖,視頻、PDF、Word、PPT等非結(jié)構(gòu)化數(shù)據(jù)的主要內(nèi)容一目了然。為方便非結(jié)構(gòu)化數(shù)據(jù)的管理,將非結(jié)構(gòu)化數(shù)據(jù)文件、文本、詞云圖等文件的路徑信息以及出現(xiàn)頻率較高的關(guān)鍵詞存儲(chǔ)在數(shù)據(jù)分析可視化平臺(tái)的數(shù)據(jù)庫中。
由于Matplotlib中創(chuàng)建的圖表和wordcloud中創(chuàng)建的wordcloud圖都是本地圖片,用戶通過瀏覽器遠(yuǎn)程查看不方便,因此需要將生成的圖表和wordcloud圖發(fā)布到網(wǎng)絡(luò)上。Flask是一個(gè)小巧而復(fù)雜的輕量級(jí)Web框架,其WSGI工具箱使用Werkzeug,模板引擎使用Jinja2,F(xiàn)lask不包括對(duì)數(shù)據(jù)庫的抽象訪問層。Flask-SQLAlchemy是一個(gè)Flask擴(kuò)展,簡化了在基于SQLAlchemy的Flask程序中使用SQLAlchemy的任務(wù)。Flask-SQLAlchemy在數(shù)據(jù)分析和可視化平臺(tái)中提供了對(duì)數(shù)據(jù)庫中數(shù)據(jù)的便捷操作。對(duì)于結(jié)構(gòu)化數(shù)據(jù),為了方便客戶端瀏覽器的交互,客戶端選擇圖表類型、參數(shù)和數(shù)據(jù)進(jìn)行可視化,服務(wù)器根據(jù)參數(shù)生成相應(yīng)的圖表。因?yàn)閳D表是根據(jù)客戶端參數(shù)發(fā)生變化,而不是將圖表存儲(chǔ)在服務(wù)器磁盤上,將Matplotlib生成的圖表通過Base64直接編碼到內(nèi)存中并傳輸?shù)骄W(wǎng)頁,從而提高了響應(yīng)速度服務(wù)器的IO操作和系統(tǒng)改進(jìn)。
面對(duì)越來越多的結(jié)構(gòu)化和非結(jié)構(gòu)化數(shù)據(jù),數(shù)據(jù)分析和可視化變得非常必要。本文使用Python搭建了一個(gè)數(shù)據(jù)分析和可視化平臺(tái),使用Pandas對(duì)結(jié)構(gòu)化數(shù)據(jù)進(jìn)行預(yù)處理和分析,將分析結(jié)果存儲(chǔ)在數(shù)據(jù)分析和可視化平臺(tái)的數(shù)據(jù)庫中,使用Matplotlib可視化數(shù)據(jù),并通過Flask發(fā)布圖表。當(dāng)用戶在瀏覽器中選擇要可視化的結(jié)構(gòu)化數(shù)據(jù)、圖表類型和參數(shù)時(shí),就可以在瀏覽器中查看結(jié)構(gòu)化數(shù)據(jù)的圖表。當(dāng)用戶上傳非結(jié)構(gòu)化數(shù)據(jù)進(jìn)行分析時(shí),服務(wù)器自動(dòng)將其轉(zhuǎn)化為文本,對(duì)文本進(jìn)行詞頻統(tǒng)計(jì),并以詞云形式展示,在瀏覽器中即可查看詞云圖片。為方便非結(jié)構(gòu)化數(shù)據(jù)的管理,將非結(jié)構(gòu)化數(shù)據(jù)、對(duì)應(yīng)文本、詞云圖路線信息、高頻關(guān)鍵詞等存儲(chǔ)在數(shù)據(jù)庫中,利用Flask實(shí)現(xiàn)非結(jié)構(gòu)化數(shù)據(jù)搜索功能。
[1]宋永生,吳新華.基于Python的Moodle學(xué)習(xí)平臺(tái)日志分析[J].計(jì)算機(jī)時(shí)代,2018(10):19-21+25.
[2]嵩天,禮欣,黃天羽.Python語言程序設(shè)計(jì)基礎(chǔ)[M].北京:高等教育出版社,2017.
[3]葉惠仙.Python在學(xué)院招生數(shù)據(jù)分析中的應(yīng)用[J].計(jì)算機(jī)時(shí)代,2018(11):102-106.
[4]祝永志,荊靜.基于Python語言的中文分詞技術(shù)的研究[J].通信技術(shù),2019,52(7):1612-1619.
[5]嚴(yán)明,鄭昌興.Python環(huán)境下的文本分詞與詞云制作[J].現(xiàn)代計(jì)算機(jī)(專業(yè)版),2018(34):86-89.
[6]李強(qiáng),白建榮,李振林,等.基于Python的數(shù)據(jù)批處理技術(shù)探討及實(shí)現(xiàn)[J].地理空間信息,2015(04):24.