宋偉偉
(四川財(cái)經(jīng)職業(yè)學(xué)院,四川 成都 610101)
大數(shù)據(jù)技術(shù)是當(dāng)前比較熱門的技術(shù)之一,萬(wàn)物信息化、數(shù)字化就會(huì)產(chǎn)生大量的數(shù)據(jù),而產(chǎn)生的大量數(shù)據(jù)是錯(cuò)綜雜亂的,可以通過(guò)數(shù)據(jù)分析、可視化等技術(shù),將有規(guī)律有用的信息呈現(xiàn)出來(lái)[1]。數(shù)據(jù)科學(xué)與大數(shù)據(jù)技術(shù)是一門比較新穎且跨學(xué)科比較多的技術(shù), 因此需要有數(shù)學(xué)、編程、統(tǒng)計(jì)學(xué)、計(jì)算機(jī)等知識(shí)。
商業(yè)數(shù)據(jù)分析不僅是向管理者提供各種數(shù)據(jù), 還需要更加深入的方法來(lái)記錄、分析和提煉數(shù)據(jù), 并以易于理解的格式呈現(xiàn)結(jié)果。數(shù)據(jù)本身僅僅是事實(shí)和數(shù)字,可以通過(guò)大數(shù)據(jù)技術(shù)尋找數(shù)據(jù)規(guī)律,結(jié)合業(yè)務(wù)問(wèn)題找出有用信息,提高生產(chǎn)力。
網(wǎng)絡(luò)爬蟲[2]是一種基于B/S架構(gòu)的數(shù)據(jù)采集技術(shù),它能夠按照一定的規(guī)則自動(dòng)抓取萬(wàn)維網(wǎng)信息的程序或者腳本。網(wǎng)絡(luò)爬蟲運(yùn)行流程如圖1所示,由調(diào)度器負(fù)責(zé)URL管理器、網(wǎng)頁(yè)下載器、網(wǎng)頁(yè)解析器之間的協(xié)調(diào)工作,價(jià)值數(shù)據(jù)是從網(wǎng)頁(yè)中提取出的數(shù)據(jù),其通常被保存在文件或者數(shù)據(jù)庫(kù)中。
圖1 網(wǎng)絡(luò)爬蟲運(yùn)行流程
通過(guò)網(wǎng)絡(luò)爬蟲對(duì)于爬取到的數(shù)據(jù)列表進(jìn)行存儲(chǔ),以備下一步數(shù)據(jù)分析使用。主要用到的數(shù)據(jù)存儲(chǔ)技術(shù)是mysql、sqlserver、csv文 件 存 儲(chǔ)、excel表 格 存 儲(chǔ)、mongoDB等,本文實(shí)驗(yàn)中是將爬取到的數(shù)據(jù)存儲(chǔ)到mysql數(shù)據(jù)庫(kù)中。
商業(yè)數(shù)據(jù)分析工具主要包括Python、R、Stata、MATLAB、EViews、SAS、SPSS等,本文實(shí)驗(yàn)應(yīng)用的是Python數(shù)據(jù)分析工具。
Python是一種面向?qū)ο?、解釋性的?jì)算機(jī)程序設(shè)計(jì)語(yǔ)言,Python語(yǔ)言簡(jiǎn)潔而清晰,具有豐富而強(qiáng)大的類庫(kù),能夠把用其他語(yǔ)言制作的各種模塊很輕松地聯(lián)結(jié)在一起。在Python中,通過(guò)安裝Pandas、Numpy、
Scipy、Statsmodels、Matplotlib、Seaborn、Scikit-Learn、Theano、Tensorf low等一系列的程序包實(shí)現(xiàn)上述功能,還需要安裝IPython交互環(huán)境。
本文實(shí)驗(yàn)中,通過(guò)Numpy實(shí)現(xiàn)數(shù)值計(jì)算, Pandas實(shí)現(xiàn)數(shù)據(jù)分析、分組聚合等操作,Matplotlib 和Seaborn實(shí)現(xiàn)數(shù)據(jù)可視化。
Python提供了非常多樣的繪圖功能,可以通過(guò)Python提供的工具M(jìn)atplotlib繪制二維、三維圖形。Seaborn在Python中用于創(chuàng)建信息豐富和有吸引力的統(tǒng)計(jì)圖形庫(kù),它基于Matplotlib,提供多種功能,實(shí)現(xiàn)單因素、雙因素、線性回歸、數(shù)據(jù)矩陣、統(tǒng)計(jì)時(shí)間序列等的可視化,以便進(jìn)一步實(shí)現(xiàn)更加復(fù)雜的可視化過(guò)程。
Matplotlib常用的制圖功能有直方圖、散點(diǎn)圖、曲線標(biāo)繪圖、連線標(biāo)繪圖、箱圖、餅圖、條形圖、點(diǎn)圖等。
準(zhǔn)備好工具后,首先需要從網(wǎng)站上抓取信息并對(duì)數(shù)據(jù)進(jìn)行初步分析,了解數(shù)據(jù)的構(gòu)成并判斷數(shù)據(jù)的質(zhì)量。數(shù)據(jù)初步分析往往是統(tǒng)計(jì)性的、多角度的、嘗試性的。根據(jù)分析的結(jié)果進(jìn)行深入的挖掘, 得到更有價(jià)值的結(jié)果。
論文中的目標(biāo)相對(duì)比較明確,最終目標(biāo)是要根據(jù)實(shí)時(shí)獲取到的Top100排名圖書,可視化顯示前十名熱銷圖書和熱評(píng)圖書的數(shù)據(jù),以及根據(jù)關(guān)注的圖書進(jìn)行圖書推薦、圖書價(jià)格和評(píng)論預(yù)警等功能。
在進(jìn)行數(shù)據(jù)采集時(shí),需要根據(jù)實(shí)際的業(yè)務(wù)環(huán)境采用不同的方式,本文中使用爬蟲對(duì)數(shù)據(jù)進(jìn)行采集,使用爬蟲獲取京東計(jì)算機(jī)行業(yè)排行榜數(shù)據(jù)。獲取的數(shù)據(jù)有:獲取排名前100名的圖書名、出版社、圖書鏈接、圖書ID、價(jià)格。
本文采集數(shù)據(jù)中,創(chuàng)建了Crawl.py文件,創(chuàng)建了的Crawl類定義三個(gè)方法:def get_ranking( ):獲取排行前100名的圖書ID;def get_ pr ice( ):根據(jù)ID獲取前100名在圖書價(jià)格,并存儲(chǔ)圖書名、出版社、京東價(jià)格、定價(jià)、鏈接、ID列表;def get_evaluation():獲取評(píng)價(jià)評(píng)分內(nèi)容。
將獲取到的圖書信息存儲(chǔ)到MySQL數(shù)據(jù)庫(kù)表中。新建mysql.py文件,在文件中定義各個(gè)應(yīng)用方法:如連接數(shù)據(jù)庫(kù)、關(guān)閉數(shù)據(jù)庫(kù)、數(shù)據(jù)表的紀(jì)錄插入、查詢數(shù)據(jù)的方法。
首先,單擊File菜單——Settings,打開的對(duì)話框中單擊Tools——External Tools打開的界面中添加擴(kuò)展工具,主要是QT Designer和PyUIC,它們的主要功能是通過(guò)Qt Designer進(jìn)行圖形可視化設(shè)計(jì)[3],采用pyUIC插件將可視化圖形界面轉(zhuǎn)換生成相應(yīng)的Python 文件,生產(chǎn)的Python文件需要移動(dòng)到項(xiàng)目的根目錄下, 可以在生成的Python文件中進(jìn)行代碼功能編寫。
采用NumPy、Pandas、Matplotlib模塊進(jìn)行計(jì)算、處理分析、可視化編程。
NumPy是Python處理數(shù)組和矢量運(yùn)算的庫(kù), 是進(jìn)行高性能計(jì)算和數(shù)據(jù)分析的基礎(chǔ),NumPy提供了對(duì)數(shù)組進(jìn)行快速運(yùn)算的標(biāo)準(zhǔn)數(shù)學(xué)函數(shù)。Pandas是Python的一個(gè)開源庫(kù),為Python提供了高性能、簡(jiǎn)單易用的數(shù)據(jù)結(jié)構(gòu)和數(shù)據(jù)分析工具。Pandas提供了方便的類似表格統(tǒng)計(jì)操作和SQL操作等操作,使得數(shù)據(jù)處理工作更加便捷。Matplotlib是利用Python進(jìn)行數(shù)據(jù)分析的一個(gè)重要的可視化工具,繪制多種高質(zhì)量的2D、3D圖形。
在生成的Python文件中,我們主要完成了10個(gè)可視化界面的設(shè)計(jì),以及13個(gè)Python文件的代碼編寫。完成本項(xiàng)目數(shù)據(jù)服務(wù)功能。
本文中的項(xiàng)目對(duì)網(wǎng)絡(luò)爬蟲技術(shù)、數(shù)據(jù)庫(kù)存儲(chǔ)技術(shù)、數(shù)據(jù)分析技術(shù)及可視化技術(shù)進(jìn)行了流程和實(shí)踐總結(jié),從數(shù)據(jù)分析出發(fā),依靠技術(shù)工具,以決策優(yōu)化和一定的數(shù)據(jù)服務(wù)為目的,洞察數(shù)據(jù)背后的規(guī)律,為商業(yè)創(chuàng)造更大的數(shù)據(jù)獲取、分析、可視化等一系列技術(shù)思路。