朱正國
(安徽城市管理職業(yè)學(xué)院,安徽 合肥 230011)
伴隨著信息技術(shù)的發(fā)展和學(xué)校信息化建設(shè)的加強(qiáng),每天都會產(chǎn)生大量信息化數(shù)據(jù),如何有效利用好這些數(shù)據(jù)資源是目前很多學(xué)校面臨的問題.
當(dāng)今社會已經(jīng)進(jìn)入大數(shù)據(jù)時代,各種數(shù)據(jù)正在迅速膨脹變大,人們將越來越依賴大數(shù)據(jù)[1].大數(shù)據(jù)具備海量、多樣、高速、易變四大特點和數(shù)據(jù)類型繁多、價值密度相對較低、處理速度快時效性要求高三大特征[2].當(dāng)今高校也進(jìn)入了大數(shù)據(jù)時代,各種關(guān)聯(lián)性數(shù)據(jù)正在呈幾何級的增加,Python在大數(shù)據(jù)時代越來越凸顯出它的優(yōu)勢.Python豐富的工具包讓它在數(shù)據(jù)搜集、科學(xué)計算、文件處理、數(shù)據(jù)處理、數(shù)據(jù)可視化、人工智能、自動化控制等方面具備很大的優(yōu)勢.我們使用Python進(jìn)行校園大數(shù)據(jù)的數(shù)據(jù)采集、分析、匯總,給學(xué)校的教學(xué)改進(jìn)和學(xué)生管理提供決策支持.
Python是一種計算機(jī)程序設(shè)計語言.它是面向?qū)ο蟮膭討B(tài)腳本語言,起初主要用于自動化腳本的編寫,后期版本的更新和新增的語言功能使得Python語言現(xiàn)在可以用來進(jìn)行大型項目和獨立項目的開發(fā)[3].
Python在處理數(shù)據(jù)上具備以下優(yōu)勢:(1)代碼量少,開發(fā)速度快;(2)豐富的數(shù)據(jù)處理包,對于正則表達(dá)式、html解析、xml解析等處理起來非常方便;(3)使用成本低,且不要額外操作;(4)語法簡單,學(xué)習(xí)快、維護(hù)成本低;(5)Python是免費開源的、且兼容眾多平臺.正是由于Python不需要考慮諸如如何管理程序使用的內(nèi)存之類的底層細(xì)節(jié)、可移植性、可擴(kuò)展性良好等優(yōu)點,非常適合高校做大數(shù)據(jù)分析.
學(xué)校每天的數(shù)據(jù)資源非常多,既有傳統(tǒng)的關(guān)系型數(shù)據(jù)庫,又有包含視頻、音頻、文本以及其他形式的非結(jié)構(gòu)化數(shù)據(jù).數(shù)據(jù)收集就是要對這些碎片化的數(shù)據(jù)進(jìn)行收集的同時進(jìn)行清洗來保證數(shù)據(jù)質(zhì)量,同時還要更新數(shù)據(jù)模式來確定數(shù)據(jù)實體之間的關(guān)系,統(tǒng)一格式存儲,以便給后期數(shù)據(jù)分析階段提供有效的優(yōu)質(zhì)數(shù)據(jù)資源[4].
本文研究的Python工具版本是Python3,開發(fā)工具使用的是Eclipse,具體開發(fā)環(huán)境搭建過程在此不做詳細(xì)闡述,網(wǎng)上案例很多.Python抓取的系統(tǒng)包括:網(wǎng)頁形式各種校方教務(wù)、學(xué)工系統(tǒng)、門戶網(wǎng)站、包含人臉識別的視頻采集分析系統(tǒng)的智慧教室、校園一卡通系統(tǒng)、相關(guān)的各種交流論壇、實訓(xùn)室管理系統(tǒng)、以及在線學(xué)習(xí)平臺網(wǎng)站等.設(shè)計思路是首先進(jìn)入校園門戶網(wǎng)站,根據(jù)該網(wǎng)絡(luò)爬出所有相關(guān)連的網(wǎng)站和系統(tǒng)url,包括校內(nèi)和校外的,部分實現(xiàn)代碼如下:
def crawl(pages,depth=2):
for i in range(depth):
newpages = set()
for page in pages:
try:
c = urllib.request.urlopen(page)
except:
print(’Invaild page:’,page)
continue
soup = bs4.BeautifulSoup(c.read())
links = soup(’a’)
for link in links……
通過一個循環(huán)抓取當(dāng)前頁面上所有的鏈接,我們盡可能多地去抓取鏈接,之所以選擇set而不使用list是防止重復(fù)的現(xiàn)象,我們可以將爬取的網(wǎng)站存放到文件或者M(jìn)ySQL或者是MongoDB里.
output = sys.stdout
outputfile = open(’chengguan.txt’,’w’)
sys.stdout = outputfile
list = GetFileList(chengguan,[])
這一步的目的是做數(shù)據(jù)資源的來源分析.接下來,需要做的是“關(guān)鍵詞”搜索,如:“學(xué)生成績”“某某班級”“某某人”“某某實訓(xùn)室”等,部分實現(xiàn)代碼如下:
import jiban
import jiban.analyse
text = “關(guān)鍵詞”
fenci_text = jiban.cut(text)……
通過Python編寫的網(wǎng)絡(luò)爬蟲程序,只需要設(shè)計好規(guī)則,程序就會自動的、不間斷的按照既定規(guī)則去抓取你所需要的數(shù)據(jù).同時對抓取的數(shù)據(jù)進(jìn)行存儲、分析、過濾、建立索引,方便后期查詢與檢索,通過這一系列過程所得到的分析結(jié)果還會對以后的抓取過程給出反饋和指導(dǎo)[5].
通過Python爬蟲抓取的數(shù)據(jù)是臃腫的、散亂的、未校驗、不規(guī)則的,在提交給“數(shù)據(jù)分析”之前,還需要進(jìn)行“數(shù)據(jù)清理”工作.因為Python是不間斷地進(jìn)行數(shù)據(jù)搜集工作,如果不進(jìn)行數(shù)據(jù)清洗,那么爬蟲庫也將越來越龐大、對其進(jìn)行的分析時間也將越來越長,逐漸的就會失去其意義.
我們利用數(shù)據(jù)挖掘、數(shù)理統(tǒng)計、預(yù)定義清理的規(guī)則等對數(shù)據(jù)進(jìn)行審查和校驗,剔除重復(fù)、錯誤的信息,保證數(shù)據(jù)的準(zhǔn)確、一致、有用[6].本研究部分Python編寫的數(shù)據(jù)清洗代碼如下:
import pandas as pd
import numpy as np
from collections import Counter
from sklearn import preprocessing
from matplotlib import pyplot as plt
matplotlib inline
import seaborn as sns
plt.rcParams[’font.sans-serif’]= [’SimHei’]
plt.rcParams[’axes.unicode_minus’]= False
sns.set(font=’SimHei’)
data=pd.read_excel(’...’)
data.head()
data.shape
data.describe()
data.isnull().any()
total = data.isnull().sum().sort_values(ascending=False)
print(total)
data.duplicated().sum()
data.drop_duplicates()
for i in cat_col:
print(pd.Series(data[i]).value_counts())
plt.plot(data[i])
dummies=pd.get_dummies(data[cat_col])
dummies
數(shù)據(jù)清洗路徑如圖:
圖2 數(shù)據(jù)清洗路徑
爬取后的數(shù)據(jù)經(jīng)過數(shù)據(jù)清洗后還需要經(jīng)過數(shù)據(jù)分析這個過程來挖掘其潛在的價值,我們可以用傳統(tǒng)的方法來對數(shù)據(jù)進(jìn)行分析諸如數(shù)據(jù)挖掘、機(jī)器學(xué)習(xí)、統(tǒng)計分析等[7].只是需要按照大數(shù)據(jù)的特點來進(jìn)行調(diào)整:首先對于處理海量信息化數(shù)據(jù)的分析,我們需要借助Map/ Reduce模型經(jīng)過數(shù)據(jù)拆分處理和結(jié)果匯總二個過程,一次完整的分析可能需要多次類似的處理過程;其次,正如前面所說的大數(shù)據(jù)的應(yīng)用有很強(qiáng)的時效性,數(shù)據(jù)的價值會隨著時間的推移而不斷降低,因此我們在進(jìn)行數(shù)據(jù)分析時需要處理和平衡好效率和準(zhǔn)確率之間的關(guān)系[7].
高校大數(shù)據(jù)分析需要從多維度進(jìn)行:例如課堂教學(xué)質(zhì)量分析,通過清洗后的課堂視頻數(shù)據(jù),我們可以得到課堂的出勤、教師提問、學(xué)生舉手抬頭鼓掌包括學(xué)生上課睡覺等情況;例如學(xué)校科目分析,通過清洗后的相關(guān)教學(xué)數(shù)據(jù),可以得到不同學(xué)年、不同教師對同一科目的教學(xué)成果,可以得到同一教師在不同學(xué)期、不同專業(yè)的同一科目教學(xué)成果;例如具體學(xué)生學(xué)習(xí)分析,可以通過清洗后的教學(xué)數(shù)據(jù)、學(xué)工數(shù)據(jù)、一卡通數(shù)據(jù),獲得該學(xué)生不同學(xué)科的 成績、進(jìn)出宿舍打卡時間統(tǒng)計信息、進(jìn)出教室打卡時間統(tǒng)計信息、進(jìn)出實訓(xùn)室打卡時間統(tǒng)計信息、科目教師對其評價匯總信息、該學(xué)生在學(xué)校推薦在線學(xué)習(xí)平臺學(xué)習(xí)情況匯總信息;例如學(xué)生消費分析,可以通過該學(xué)生的一卡通在校園內(nèi)食堂刷卡消費記錄、零食品店鋪刷卡消費記錄,獲得該學(xué)生不同時間段消費記錄匯總信息、不同類型消費對比信息.
本研究,部分Python編寫的數(shù)據(jù)分析代碼如下:
from collections import defaultdict
def group_data(data,key_name):
grouped_data=defaultdict(list)
for data_point in data:
grouped_data[data_point[key_name]].append(data_point)
return grouped_data……
數(shù)據(jù)分析的結(jié)果,很容易了解哪些課是受歡迎的;哪些教師是學(xué)生喜歡的,哪些院系重視教學(xué)工作;哪些課程需要改進(jìn),如何改進(jìn);哪些教師應(yīng)該獲得幫助,需要哪些幫助;哪些課程應(yīng)該獲得更多的投入;哪些教師應(yīng)該獲得獎勵;哪些教室應(yīng)該進(jìn)行改造,如何改造;哪些院系應(yīng)該淘汰哪些課程等.
數(shù)據(jù)分析的結(jié)果,能夠幫助學(xué)校健全學(xué)生信息,例如生源、家庭條件、專業(yè)背景、學(xué)習(xí)習(xí)慣、學(xué)習(xí)成績、消費習(xí)慣、網(wǎng)絡(luò)瀏覽習(xí)慣、上課狀態(tài)、對某些科目的喜好程度、校內(nèi)社交情況、主動上網(wǎng)在線學(xué)習(xí)情況、主動預(yù)約實訓(xùn)室學(xué)習(xí)情況等;這些信息具有很高的價值,角度全面、且信息處于不斷變化之中.
按照一定規(guī)則分析出的數(shù)據(jù),就可以進(jìn)行下一步環(huán)節(jié):數(shù)據(jù)匯總.
通過Python進(jìn)行數(shù)據(jù)搜集和分析,我們可以匯總出在校學(xué)生的各科學(xué)習(xí)情況、學(xué)生成績階段性對比情況、同級學(xué)生對比情況、同科學(xué)生對比情況、不同教師上同一科目的教學(xué)效果對比情況、同一教師上不同班級教學(xué)效果對比情況等;同時還匯總出學(xué)生在校消費行為報告、不同學(xué)生消費行為對比分析報告、不同時間段學(xué)生消費行為分析報告、學(xué)生在考試前和考試后消費行為分析報告等;以及學(xué)生消費行為和當(dāng)天上課效果關(guān)聯(lián)性分析、學(xué)生在節(jié)假日前后消費和學(xué)習(xí)效果關(guān)聯(lián)性分析等.
這些分析匯總數(shù)據(jù),對學(xué)校進(jìn)行教學(xué)診改、學(xué)生個性化優(yōu)勢教學(xué)、學(xué)生消費行為指導(dǎo)等,提供了決策數(shù)據(jù)支持.
本文運用Python對安徽城市管理職業(yè)學(xué)院的校園大數(shù)據(jù)進(jìn)行挖掘分析,旨在為校園大數(shù)據(jù)的充分利用探索可行路線.現(xiàn)在很多高校都在探索校園大數(shù)據(jù)問題,大部分是從發(fā)展規(guī)劃的角度去探索數(shù)據(jù)分析問題,包括挖掘關(guān)乎學(xué)校發(fā)展的各類數(shù)據(jù)指標(biāo),然后從幾個維度進(jìn)行縱、橫向比較分析,從而分析學(xué)校發(fā)展存在的問題[2].本研究以學(xué)生為中心,進(jìn)行數(shù)據(jù)搜集、挖掘、清洗、分析、匯總,通過對學(xué)生的多維度分析,從而更好地培養(yǎng)人才.
當(dāng)然,在研究的過程中,也遇到了一些問題:比如信息不全面,為此學(xué)校在智慧校園的改造過程中,把以前那些互聯(lián)性較差的、數(shù)據(jù)統(tǒng)一標(biāo)準(zhǔn)較差的系統(tǒng)進(jìn)行了逐步改造,現(xiàn)在學(xué)校的各種系統(tǒng)基本都是web方式部署,且建立了統(tǒng)一的數(shù)據(jù)標(biāo)準(zhǔn);比如缺乏數(shù)據(jù)分析的模式和方法,用戶需求零散瑣碎,數(shù)據(jù)價值難以真實體現(xiàn)等等[9].為了解決諸如此類問題,我們參考了多所其他院校分析模式結(jié)合網(wǎng)上專家的一些指導(dǎo)方向,通過摸索實驗,建立了適合本校的研究模式.利用Python對校園信息化大數(shù)據(jù)的分析應(yīng)用,只是起點,后續(xù)還有很多需要完善的地方.如何利用好這些數(shù)據(jù),讓其價值得到充分的體現(xiàn),是我們每個教育工作者都應(yīng)該盡力去做的事情.