張雁涔
(忻州職業(yè)技術(shù)學(xué)院,山西 忻州 034000)
近幾年,國內(nèi)蔬菜市場價格波動劇烈,嚴(yán)重影響?zhàn)B殖種植者的工作和消費(fèi)者的生活,尤其當(dāng)出現(xiàn)重大疫情及自然災(zāi)害影響國家和人民運(yùn)作生活時,建立一個完善的蔬菜銷售情況分析系統(tǒng),可以讓人們能夠看到全國各地區(qū)蔬菜價格及銷售情況,從而不必恐慌,讓國家及有關(guān)政府能夠有效監(jiān)測農(nóng)產(chǎn)品銷售波動[1],從而有針對性部署,已成為急切之事。 本文的蔬菜銷售情況分析可視化系統(tǒng)有助于同時搜集、分析、比較多種蔬菜種類的市場售價與相關(guān)數(shù)據(jù),并根據(jù)不同時期的蔬菜價格漲跌情況進(jìn)行分析和預(yù)判,主要可分為短期與中長期兩種情況。 此外,根據(jù)研究得到的成果將蔬菜當(dāng)期的銷售現(xiàn)狀通過更為直觀的形式表現(xiàn)出來,可交給從事農(nóng)業(yè)生產(chǎn)的企業(yè)或個體作為栽種參考,也可幫助當(dāng)?shù)卣块T在把控蔬菜市場價格動態(tài)方面提供宏觀數(shù)據(jù),方便其進(jìn)行決策[2]。
采用Python 語言,選取適合的算法以蔬菜價格波動為核心進(jìn)行研究,構(gòu)建一個以特征和影響為維度的蔬菜銷售情況的分析框架,形成一個用戶可操作的系統(tǒng),優(yōu)化用戶體驗(yàn),為用戶提供更加直觀,方便使用的界面。
本文用Python 編程語言設(shè)計了蔬菜銷售情況分析系統(tǒng),主要借助以下的幾種技術(shù)。
Phthon 在眾多計算機(jī)語言當(dāng)中,屬于比較容易應(yīng)用與功能較多的一種,使用該語言編寫的程序代碼屬于開源性質(zhì),可以兼容多種平臺;在編寫程序的過程中不但包括抽象類型也有函數(shù)類型,前者主要基于分析對象,后者則更側(cè)重于分析過程。 Phthon 語言既可以根據(jù)需要進(jìn)行嵌入,也可以持續(xù)擴(kuò)展內(nèi)容,基于Phthon編就的數(shù)據(jù)庫較為豐富,能夠在其中根據(jù)需求進(jìn)行下載或更換。
本系統(tǒng)的開發(fā)是以Django 作為基礎(chǔ)性框架,此應(yīng)用也是由Phthon 語言編寫而成,同時也屬于開源類型,需要在Web 的應(yīng)用框架當(dāng)中進(jìn)行使用。 由于Web 框架在建立之初是基于MVC 模式,即模型(Model)、視圖(View)和控制器(Controller)。 其中,控制器部分無需用戶自行調(diào)配,自動設(shè)定為系統(tǒng)默認(rèn)。 因此,Django 框架中存在一種MTC 模式,即模型(Model)、模板(Template)與視圖(Views)[3]。
模型(Model),即數(shù)據(jù)存儲層,負(fù)責(zé)管理數(shù)據(jù)庫當(dāng)中的各種信息,可以進(jìn)行增添數(shù)據(jù)、刪減數(shù)據(jù)、修改數(shù)據(jù)或查詢數(shù)據(jù)等操作。
模板(Template),是表現(xiàn)層,當(dāng)中負(fù)責(zé)的職能包括接收申請、處理請求與回復(fù)作答。
視圖(Views),屬于業(yè)務(wù)邏輯層,主要對退回的html 進(jìn)行封存與建造。
爬蟲技術(shù)從本質(zhì)上來說屬于算法語言編寫而成的腳本,適用于大多數(shù)網(wǎng)站和搜索引擎,可以根據(jù)特定要求在網(wǎng)絡(luò)上自動獲取相關(guān)信息,還可以按照要求爬取一定時間范圍內(nèi)的數(shù)據(jù)并進(jìn)行實(shí)時更新。 Web 爬蟲在實(shí)際操作過程中,需要把URL 種子加入下載列表,并直接在列表最前端選擇一個URL 下載鏈接,使爬蟲系統(tǒng)直接與網(wǎng)頁相連[4]。 成功爬取網(wǎng)頁所需內(nèi)容之后,可以將其儲存到系統(tǒng)數(shù)據(jù)庫。 如果想繼續(xù)獲取網(wǎng)頁的其他數(shù)據(jù),也可以將網(wǎng)頁鏈接作進(jìn)一步解析,從中得到一個新的URL 種子,然后不斷重復(fù)上述步驟,直到目標(biāo)信息全部獲取完畢,方可停止爬蟲系統(tǒng)的運(yùn)行,然后將得到的信息整合后存儲到系統(tǒng)的MySQL 庫中,以便及時調(diào)取。
造成蔬菜售價發(fā)生變化的要素主要包括以下兩種:其一,存在于銷售市場內(nèi)部,主要指的是產(chǎn)品供應(yīng)與購買需求這兩個基礎(chǔ)性因素。 其二,外部因素的影響,包括政府制定政策以及發(fā)生農(nóng)業(yè)類疫情災(zāi)害等對價格的影響。 只有找出影響蔬菜價格主要因素,才能正確構(gòu)建模型分析預(yù)測價格。
隨著網(wǎng)絡(luò)時代的發(fā)展,“互聯(lián)網(wǎng)+”得到了快速發(fā)展。 農(nóng)業(yè)相關(guān)大數(shù)據(jù)分析主要用來做決策分析,包括價格趨勢預(yù)測、影響農(nóng)產(chǎn)品價格的因素、農(nóng)產(chǎn)品的區(qū)域特征分析等。 決策者在系統(tǒng)上了解到蔬菜的銷售情況并制定決策,銷售情況隨著價格波動改變,且影響著未來的銷售趨勢,從而影響很多的農(nóng)戶或者商家。 基于這種情況,蔬菜銷售情況分析系統(tǒng)就應(yīng)運(yùn)而生了。
基于Python 的蔬菜銷售情況分析系統(tǒng)所用的數(shù)據(jù)需要通過爬蟲從農(nóng)產(chǎn)品網(wǎng)中實(shí)時地進(jìn)行數(shù)據(jù)采集,當(dāng)需要處理的數(shù)據(jù)成功進(jìn)入系統(tǒng)分析庫時,下一步為預(yù)處理環(huán)節(jié),即借助數(shù)據(jù)挖掘技術(shù)對現(xiàn)存數(shù)據(jù)作類型區(qū)分,并根據(jù)這些數(shù)據(jù)對未來的走向進(jìn)行預(yù)判,系統(tǒng)流程如圖1 所示。
圖1 系統(tǒng)流程
基于Python 的蔬菜銷售情況分析系統(tǒng),一般來說,數(shù)據(jù)流圖的類型主要有兩種,即頂層圖與分層圖。 為了讓數(shù)據(jù)分析結(jié)果更加清晰直觀,本系統(tǒng)只對頂層與0層的數(shù)據(jù)流圖進(jìn)行制作。 其中,圖2 即頂層數(shù)據(jù)流圖。然后進(jìn)一步作具體分析就得到了圖3 的0 層數(shù)據(jù)流圖。
圖2 頂層數(shù)據(jù)流
圖3 0 層數(shù)據(jù)流
本次研究過程中建立的蔬菜銷售分析系統(tǒng),主要由Phthon 語言編寫而成,當(dāng)中設(shè)置有多個功能板塊,主要有如下幾種:用戶板塊、管理板塊、數(shù)據(jù)展示板塊、數(shù)據(jù)處理板塊。
用戶登錄時,如果沒有賬戶,則需要注冊賬戶。 但是,應(yīng)當(dāng)指出的是,該賬戶不能修改。 系統(tǒng)當(dāng)中的每個賬號都獨(dú)一無二,通過用戶名來進(jìn)行區(qū)分。 在注冊界面上,需要準(zhǔn)確填寫隨機(jī)形成的驗(yàn)證碼,當(dāng)完成注冊之后,系統(tǒng)會自動跳轉(zhuǎn)到登錄界面,用戶需要再次填寫用戶名與密碼,顯示登錄完成后,相應(yīng)的用戶名也會被系統(tǒng)存儲到session 當(dāng)中。 用戶之后可以在個人信息界面對基本信息和登錄密碼進(jìn)行修改。
系統(tǒng)管理員有權(quán)限進(jìn)入系統(tǒng)后臺,當(dāng)成功登錄管理員賬號后,可以對自己的登錄密碼進(jìn)行更換或查看用戶的相關(guān)信息。
本系統(tǒng)中的蔬菜信息都是通過爬蟲技術(shù)爬取的。所以數(shù)據(jù)處理模塊主要有數(shù)據(jù)采集、數(shù)據(jù)清洗、數(shù)據(jù)轉(zhuǎn)換、數(shù)據(jù)挖掘。
3.4.1 數(shù)據(jù)采集
利用Python 的爬蟲技術(shù)爬取各農(nóng)業(yè)網(wǎng)站上的價格及影響因素的信息,該工具需能夠監(jiān)測網(wǎng)站數(shù)據(jù)的變化[5],然后將變化的網(wǎng)頁爬取下來用于后期的分析,具備解析網(wǎng)頁的能力。
3.4.2 數(shù)據(jù)清洗
去掉“臟”數(shù)據(jù),在采集數(shù)據(jù)的時候,數(shù)據(jù)會可能出現(xiàn)殘缺、錯誤、重復(fù)等情況,為了確保數(shù)據(jù)的準(zhǔn)確性、完整性、一致性、唯一性、適時性、有效性,就需要對數(shù)據(jù)進(jìn)行“清洗”。
3.4.3 數(shù)據(jù)轉(zhuǎn)換
由于數(shù)據(jù)來自不同的網(wǎng)站,自然就有不同的語義和規(guī)范,所以需要對采集后的數(shù)據(jù)進(jìn)行命名檢查將同種數(shù)據(jù)以同樣的命名來表示,使得系統(tǒng)內(nèi)的數(shù)據(jù)達(dá)到一致性和完整性,還需要對數(shù)據(jù)質(zhì)量進(jìn)行判斷確保后面分析結(jié)果的準(zhǔn)確性及合理性。
3.4.4 數(shù)據(jù)挖掘
數(shù)據(jù)挖掘的主要目的是為了發(fā)現(xiàn)隱藏的可用信息,而過程中需要先對海量數(shù)據(jù)進(jìn)行搜集,然后才能建立相應(yīng)的分析模型,在模型當(dāng)中可以對數(shù)據(jù)進(jìn)行基礎(chǔ)的分類操作,也可以對某項(xiàng)數(shù)據(jù)未來的走向進(jìn)行預(yù)判[1]。 數(shù)據(jù)挖掘技術(shù)作為一項(xiàng)先進(jìn)的技術(shù)應(yīng)用,相比于人工檢索和處理信息的速度,顯然數(shù)據(jù)挖掘技術(shù)擁有更多優(yōu)勢,不僅可以同時處理較多數(shù)據(jù)信息,還能從中準(zhǔn)確得出有價值的數(shù)據(jù)分析。
將提煉后得到的數(shù)據(jù)作可靠性與有效性等評估后,將數(shù)據(jù)分析進(jìn)行可視化展示。
本次設(shè)計選擇的數(shù)據(jù)庫為MySQL,數(shù)據(jù)庫具體的操作工具為Navicat 可視化工具,嚴(yán)格遵循數(shù)據(jù)庫設(shè)計規(guī)則進(jìn)行表table 的設(shè)計。 在數(shù)據(jù)庫的設(shè)計過程中,為了保證其完整性,表的設(shè)計完全按照一對一,一對多的規(guī)則進(jìn)行。 本次設(shè)計的系統(tǒng)數(shù)據(jù)庫包括的信息有:管理員、用戶以及蔬菜信息,如圖4 所示。
圖4 總體設(shè)計的E-R 圖
本文基于Python 的蔬菜銷售情況分析系統(tǒng)還處于較為初期的實(shí)現(xiàn)階段,可以做出簡單的蔬菜價格預(yù)測以及銷售情況可視化展示。 并且對數(shù)據(jù)的預(yù)測是根據(jù)已知方程中各變量的數(shù)據(jù),在實(shí)際應(yīng)用時操作較為復(fù)雜且意義不大。 因此,未來將從這一點(diǎn)出發(fā),嘗試在數(shù)據(jù)未知的情況下對農(nóng)產(chǎn)品市場價格進(jìn)行預(yù)測和分析。本系統(tǒng)設(shè)計與開發(fā)時的主要困難在于數(shù)據(jù)的采集與處理。 由于爬蟲得到的數(shù)據(jù)量小,使得模型的效果并不明顯。 建立和完善農(nóng)產(chǎn)品價格及其相關(guān)因素的短期信息系統(tǒng),有利于提高研究蔬菜銷售情況分析的效率和研究范圍的覆蓋面。
隨著研究的深入,相關(guān)系統(tǒng)將走出理論層面,為政府及有關(guān)決策者制定政策提供有效的信息支持。 農(nóng)業(yè)相關(guān)部門應(yīng)結(jié)合技術(shù)對涉農(nóng)信息資源進(jìn)行收集整理,及時了解農(nóng)民蔬菜種植定價情況并且了解人們生產(chǎn)生活中的蔬菜需求,以建立信息共享機(jī)制。 只有預(yù)測與展示時所依賴的數(shù)據(jù)信息真實(shí)全面、及時有效,此類銷售情況分析系統(tǒng)才能更貼近實(shí)際,也將繼續(xù)完善功能,提高其應(yīng)用到實(shí)際生活中的可能性。