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