劉海 石悅 薛奕飛 張鵬陽 王立新
關(guān)鍵詞: 高考錄取分數(shù)分析;Hadoop偽分布式集群;PySpark;PyEcharts
0 引言
近年來,大學(xué)轉(zhuǎn)專業(yè)的現(xiàn)象愈發(fā)普遍,大學(xué)生因?qū)I(yè)問題導(dǎo)致的學(xué)習(xí)困擾也時有發(fā)生,專業(yè)與學(xué)生之間的匹配度逐漸受到關(guān)注[1]。我國高考目前普遍采取的高考錄取政策是個人志愿與專業(yè)調(diào)劑相結(jié)合的方式。在此過程中,常存在兩方面問題:一是部分考生在報考時,由于對大學(xué)專業(yè)缺乏足夠了解,受到就業(yè)、親友推薦等主客觀因素影響,忽略個人特長和興趣,盲目選擇所謂“適合”的專業(yè);二是考生在填報志愿時,往往更看重院校知名度而非專業(yè)喜好,更傾向于選擇熱門專業(yè)而非真正喜愛的專業(yè)。這導(dǎo)致一些分數(shù)達到目標(biāo)學(xué)校但未達到所報專業(yè)的考生,為求錄取而接受調(diào)劑到其他專業(yè)。
興趣是最好的老師。進入大學(xué)后,部分學(xué)生發(fā)現(xiàn)所學(xué)專業(yè)與個人興趣或特長存在較大差異。能轉(zhuǎn)專業(yè)的學(xué)生尚可重拾興趣,但無法轉(zhuǎn)專業(yè)的學(xué)生往往會在學(xué)習(xí)過程中遭遇負面問題。為解決此類問題,須使學(xué)生在高考選專業(yè)前對大學(xué)專業(yè)有科學(xué)、正確的認識。近年來,隨著大數(shù)據(jù)技術(shù)的飛速發(fā)展,我國高校正積極推進數(shù)字化轉(zhuǎn)型,通過引入先進技術(shù),提升教育管理效率和質(zhì)量[2]。作為高考錄取方,高??衫弥腔坌@生態(tài)體系的大數(shù)據(jù)技術(shù),解決錄取數(shù)據(jù)繁雜的問題,為考生提供直觀、簡潔的高考數(shù)據(jù)參考,從而科學(xué)指導(dǎo)考生精準(zhǔn)報考。
1 系統(tǒng)需求分析
在進行系統(tǒng)設(shè)計之前,需首先進行需求分析,即根據(jù)現(xiàn)有研究背景與現(xiàn)狀,確定系統(tǒng)所需滿足的功能需求[3]。一方面,考生在填報志愿時,對院校了解不足,希望深入了解目標(biāo)院校的招生情況,如特色專業(yè)、歷年錄取數(shù)據(jù)、專業(yè)變動及錄取趨勢等。然而,院校提供的錄取數(shù)據(jù)往往原始且繁雜,考生難以從中獲取有效信息。另一方面,作為智慧校園建設(shè)的一環(huán),院校也希望通過分析往年錄取信息,制定更合理的招生計劃,并更好地展示自身專業(yè)特色。本系統(tǒng)以安陽師范學(xué)院歷年普通本科錄取數(shù)據(jù)為例,進行大數(shù)據(jù)處理、分析及可視化呈現(xiàn),旨在幫助考生快速了解院校往年錄取情況,并為院校制定招生計劃提供數(shù)據(jù)支持。
2 系統(tǒng)可行性分析
本系統(tǒng)計劃用的開發(fā)環(huán)境對計算機硬件要求并不高,都可以在普通電腦上部署。系統(tǒng)計劃使用Py?thon語言進行開發(fā),Python語言開源免費,并且也提供了可以直接在開發(fā)工具上下載就可以滿足系統(tǒng)依賴的豐富開源庫。因此,本系統(tǒng)在經(jīng)濟方面是可行的,無須花費太多資金,但需要付出一定的時間成本。
Linux操作系統(tǒng)安全可靠,穩(wěn)定性強,操作簡單,是本系統(tǒng)首選的開發(fā)環(huán)境和集成環(huán)境。在Linux操作系統(tǒng)中安裝Hadoop提供的HDFS偽分布式文件存儲系統(tǒng)用來存儲數(shù)據(jù),安全可靠。Spark部署簡單,穩(wěn)定可靠,Python版本PySpark支持Python語言。綜上所示,本項目在技術(shù)層面實現(xiàn)難度不大,可行性很強。
從操作方面來看,本平臺前端采用了交互性較強的Web界面,操作簡單、直觀,對使用者的技術(shù)要求不高[4]。后端Ubuntu 16.04作為一個以桌面應(yīng)用為主的Linux操作系統(tǒng),界面簡單,在支持shell命令的同時,圖形化的界面使用起來也更加方便快捷。在Ubuntu16.04上安裝PyCharm-2021.3.2開發(fā)工具供系統(tǒng)開發(fā)使用。PyCharm作為流行的Python開發(fā)工具,界面簡潔,操作簡單易上手。Hadoop分布式系統(tǒng)安裝方便,提供HDFS分布式存儲組件,只用了解常規(guī)的命令即可完成海量數(shù)據(jù)的存取,而無須了解其構(gòu)造原理,不僅操作簡單,而且安全可靠。
3 系統(tǒng)設(shè)計與實現(xiàn)
3.1 系統(tǒng)數(shù)據(jù)處理流程設(shè)計
對于一個完整的大數(shù)據(jù)系統(tǒng)開發(fā)而言,按照數(shù)據(jù)的流向來劃分,本系統(tǒng)主要涉及數(shù)據(jù)采集,數(shù)據(jù)存儲和預(yù)處理、數(shù)據(jù)分析、數(shù)據(jù)可視化4個部分。本系統(tǒng)首先通過Python爬蟲技術(shù)從安陽師范學(xué)院招生官網(wǎng)獲取源數(shù)據(jù),然后將爬取到的源數(shù)據(jù)通過Pandas進行預(yù)處理。接著將清洗好的干凈數(shù)據(jù)以CSV文件的形式上傳到HDFS分布式文件存儲系統(tǒng)中,以免文件丟失或損壞。數(shù)據(jù)分析階段可以使用PySpark工具直接讀取HDFS內(nèi)的干凈數(shù)據(jù)進行RDD編程分析。在大數(shù)據(jù)數(shù)據(jù)處理方面,目前的大數(shù)據(jù)處理框架較多,之所以選擇Spark,是因為Spark的設(shè)計遵循“一個軟件棧滿足不同應(yīng)用場景”的概念,并逐漸形成一個完整的生態(tài)系統(tǒng)[5],并且Spark框架與分布式文件存儲系統(tǒng)HDFS具有良好的兼容性,因此可以使用大數(shù)據(jù)處理框架技術(shù)Spark完成錄取分數(shù)數(shù)據(jù)的處理與分析。同樣,我們也將分析結(jié)果導(dǎo)出到CSV文件后存入HDFS 內(nèi),安全可靠。最后將分析后的數(shù)據(jù)從HDFS中讀取后,使用PyEcharts工具進行可視化展現(xiàn)。為了更清楚本系統(tǒng)架構(gòu),本系統(tǒng)架構(gòu)設(shè)計圖如圖1所示。
3.2 系統(tǒng)功能設(shè)計
錄取數(shù)據(jù)分析系統(tǒng)主要分為5塊,分別為數(shù)據(jù)采集、數(shù)據(jù)預(yù)處理、數(shù)據(jù)分析、數(shù)據(jù)存儲和數(shù)據(jù)可視化。圖2為系統(tǒng)功能模塊圖。
3.2.1 數(shù)據(jù)采集模塊
在數(shù)據(jù)采集模塊,系統(tǒng)使用的方法是比較流行的網(wǎng)絡(luò)爬蟲技術(shù)。使用Python 的Requests 庫中的re?quests方法模擬瀏覽器向目標(biāo)網(wǎng)頁發(fā)送請求以獲取網(wǎng)頁源代碼。然后在瀏覽器中進入開發(fā)者模式分析網(wǎng)頁結(jié)構(gòu),確定數(shù)據(jù)位置,最后利用Beautifulsoup庫中方法創(chuàng)建Beautifulsoup對象用來解析網(wǎng)頁源代碼。由于系統(tǒng)需要爬取多個網(wǎng)頁信息,所以將用到的Requests 方法和Beautifulsoup中的方法封裝在Spider類中以方便使用。接著創(chuàng)建data鏈表作為容器,將爬取到的學(xué)院歷年專業(yè)名稱、科類、年份、最高分、最低分、平均分以及部分年份的招生計劃人數(shù)和實錄人數(shù)等信息存入data鏈表。最后將data鏈表傳入數(shù)據(jù)預(yù)處理模塊進行加工。
3.2.2 數(shù)據(jù)預(yù)處理模塊
數(shù)據(jù)預(yù)處理模塊是將數(shù)據(jù)采集來的數(shù)據(jù)進行規(guī)范化、格式化、整齊化的模塊。接收到數(shù)據(jù)采集模塊傳來的data鏈表后,將多余的數(shù)據(jù)過濾掉,只保留專業(yè)名稱、科類、年份、最高分、最低分、平均分6個屬性。將每行數(shù)據(jù)重新整合為以這6個屬性為Key,以實際數(shù)據(jù)為Value的鍵值對的鏈表存入事先創(chuàng)建好的cleandata鏈表中,最后利用CSV庫中的writerows() 方法將cleandata鏈表寫入CSV文件中。處理完成后系統(tǒng)要將得到的全部數(shù)據(jù)的CSV文件存入HDFS分布式文件系統(tǒng)以防丟失或者損壞。
3.2.3 數(shù)據(jù)分析模塊
本系統(tǒng)的數(shù)據(jù)分析模塊主要依靠PySpark第三方庫來完成,通過RDD編程能夠更加高效,快速地計算分析。數(shù)據(jù)分析時候,需要先將已經(jīng)預(yù)處理后的數(shù)據(jù)從分布式文件系統(tǒng)中讀取后,創(chuàng)建一個最初的RDD,然后再利用這個RDD進行一系列包含行動和轉(zhuǎn)化操作的RDD編程來分析本校熱門專業(yè)歷年平均分變化趨勢、近年新開大數(shù)據(jù)專業(yè)的各項錄取分數(shù)詳細數(shù)據(jù)、錄取平均分數(shù)最高的專業(yè)數(shù)據(jù)等。利用createOr?ReplaceTempView()方法來創(chuàng)建臨時表,然后利用spark.sql()方法編寫SQL語句完成同專業(yè)文理錄取分數(shù)對比數(shù)據(jù),單招文科考生或者理科考生的專業(yè)數(shù)據(jù)分析,錄取最高分與最低分差值較大的專業(yè)數(shù)據(jù)分析等。最后利用Pandas庫中的方法將結(jié)果導(dǎo)出到CSV 文件后存入HDFS。
3.2.4 數(shù)據(jù)存儲
本系統(tǒng)的數(shù)據(jù)以CSV 的格式存儲。Python 的CSV模塊提供了一系列針對CSV文件的方法,為系統(tǒng)進行數(shù)據(jù)轉(zhuǎn)化提供了便利,這種存儲方式可以大大提升開發(fā)速度和效率。在完成數(shù)據(jù)預(yù)處理后,系統(tǒng)將干凈的所有數(shù)據(jù)存儲為CSV文件以供數(shù)據(jù)分析使用。在數(shù)據(jù)分析之前,系統(tǒng)會將數(shù)據(jù)存入HDFS,以保證數(shù)據(jù)的安全。HDFS具有高容錯性、高可靠性、部署廉價等特性。系統(tǒng)的數(shù)據(jù)及衍生數(shù)據(jù)都會存儲到里面,以保證數(shù)據(jù)的安全,防止數(shù)據(jù)丟失。
3.2.5 數(shù)據(jù)可視化
最后的數(shù)據(jù)可視化模塊系統(tǒng)主要使用PyEcharts 庫。這是非常重要的模塊,也是用戶會直接接觸看到的模塊,系統(tǒng)在這個模塊會將數(shù)據(jù)分析得到的數(shù)據(jù)以圖形化的方式展現(xiàn)給用戶,這就考驗我們對數(shù)據(jù)格式的了解及可視化手段的運用。PyEcharts官方網(wǎng)站提供了多樣的圖表類型以及修改方法,可以對比其中合適的圖表示例來可視化系統(tǒng)的結(jié)果數(shù)據(jù)。比如本校熱門專業(yè)歷年平均分變化趨勢可以用折線圖的方式呈現(xiàn),凸顯變化趨勢,大數(shù)據(jù)專業(yè)的各項錄取分數(shù)詳細數(shù)據(jù)以柱狀圖的方式呈現(xiàn)能使數(shù)據(jù)更加清晰,錄取平均分數(shù)最高的專業(yè)數(shù)據(jù)以柱狀圖的方式呈現(xiàn)更能展現(xiàn)分數(shù)差距。錄取最高分與最低分差值較大的專業(yè)數(shù)據(jù)以漏斗圖的方式展現(xiàn)能使用戶更直觀地了解專業(yè)錄取情況等。無論是柱狀圖、折線圖還是餅圖,我們要根據(jù)數(shù)據(jù)來選擇可視化方式才能凸顯數(shù)據(jù)重點以及數(shù)據(jù)特性。另外,不同顏色以及形狀也是可視化的重要手段。
3.3 系統(tǒng)數(shù)據(jù)可視化
數(shù)據(jù)可視化的作用在于提升人們對數(shù)據(jù)的分析利用程度,通過改變數(shù)據(jù)的表現(xiàn)形式,提高數(shù)據(jù)的利用率[6]。通過數(shù)據(jù)可視化中的柱狀圖、散點圖、雷達圖和熱力圖等圖形化表達方式,可以更直觀和清晰地把數(shù)據(jù)分析結(jié)果展示在人們眼前,給人們以更加直觀和規(guī)律化的展示。目前各大高校不同專業(yè)招生都有文理學(xué)科限制,有的專業(yè)只有文科生或者理科生才能報考。我們這里也利用詞云圖為考生展示了只招文科或者理科考生的專業(yè)名稱以及其對應(yīng)的平均分詞云圖,如圖3所示。從圖3可以看出,安陽師范學(xué)院只招收文科或者理科的專業(yè)詞云圖中,詞條前一部分為專業(yè)名稱,后一部分為學(xué)科。其中,詞號越大,代表專業(yè)對應(yīng)的平均分越高。
4 結(jié)束語
通過對大量冗余數(shù)據(jù)進行快速、準(zhǔn)確和多樣化的分析與展示,大數(shù)據(jù)技術(shù)為各行各業(yè)提供了豐富的洞察和決策支持。作為智慧校園生態(tài)體系建設(shè)的一部分,本系統(tǒng)通過使用大數(shù)據(jù)技術(shù)中的Spark框架對安陽師范學(xué)院歷年普通本科錄取數(shù)據(jù)進行了系統(tǒng)分析,深入地挖掘了數(shù)據(jù)潛在的應(yīng)用和研究價值。系統(tǒng)的實現(xiàn)可以幫助很多高考考生在填報志愿之前了解更多安陽師范學(xué)院的錄取信息,作為高校方面的安陽師范學(xué)院也可以展現(xiàn)院校招生特點和專業(yè)特色以吸引生源。系統(tǒng)在其他高校進行推廣后,也可以幫助考生了解其他院校的相關(guān)錄取信息和展現(xiàn)其他高校的專業(yè)特色,真正實現(xiàn)學(xué)生興趣、高考分數(shù)和錄取專業(yè)相匹配的目的。