關(guān)鍵詞:Python;大數(shù)據(jù)分析;可視化;理實(shí)一體;教學(xué)模式;探索與實(shí)踐
中圖法分類號(hào):G642 文獻(xiàn)標(biāo)識(shí)碼:A
隨著大數(shù)據(jù)時(shí)代的到來,了解大數(shù)據(jù)分析與可視化技術(shù)成為時(shí)代發(fā)展的需要。無論是說明事特屬性、展示數(shù)據(jù)規(guī)律、闡述規(guī)律原理,還是論述觀點(diǎn)、支持決策、預(yù)測分析,都離不開大數(shù)據(jù)分析。大數(shù)據(jù)是基于數(shù)學(xué)和運(yùn)算的科學(xué)表達(dá),這需要科學(xué)計(jì)算、需要數(shù)據(jù)分析的支持。因此,“大數(shù)據(jù)分析與可視化”課程成為了新工科背景下,學(xué)生不可或缺的知識(shí)架構(gòu)。
目前,傳統(tǒng)“(理論課)黑板+粉筆+多媒體+(實(shí)驗(yàn)課)實(shí)踐”教學(xué)模式,無法滿足教學(xué)需求。
1“理實(shí)一體”教學(xué)模式探索
Python語言因?yàn)楹唵?、易學(xué)、免費(fèi)開源等優(yōu)勢,連續(xù)四次獲得“年度編程語言”稱號(hào),受歡迎程度達(dá)到歷史新高。其擁有超九萬個(gè)的三方庫,涵蓋數(shù)據(jù)分析與挖掘、人工智能與機(jī)器學(xué)習(xí)、網(wǎng)絡(luò)爬蟲等計(jì)算機(jī)領(lǐng)域。
大數(shù)據(jù)分析與計(jì)算利用計(jì)算機(jī)進(jìn)行數(shù)值計(jì)算,它是科學(xué)家通過運(yùn)算掌握自然規(guī)律所采用的方法,更是普通人提升專業(yè)化程度的必要手段。開展基本的科學(xué)計(jì)算需要兩個(gè)步驟:組織數(shù)據(jù)和展示數(shù)據(jù)。組織數(shù)據(jù)是運(yùn)算的基礎(chǔ),是數(shù)據(jù)分析的基礎(chǔ),也是將客觀世界數(shù)字化的必要手段;展示數(shù)據(jù)是體現(xiàn)運(yùn)算結(jié)果的重要方式,也是展示結(jié)論的有力武器。而Python語言為開展人人都能使用數(shù)據(jù)計(jì)算與展示提供了有力的支持。
因此,選用“基于Python的大數(shù)據(jù)分析與可視化”教學(xué)是目前較為領(lǐng)先和業(yè)界公認(rèn)的最為合適的選擇。其中,Python的三個(gè)數(shù)據(jù)分析工具Numpy、Pandas、Matplotlib是在數(shù)據(jù)分析與可視化方面最具其代表性的三方庫。
由于到該門課程的實(shí)踐性很強(qiáng),傳統(tǒng)教學(xué)模式已不再符合課程要求。而在教學(xué)模式的探索中,我們發(fā)現(xiàn)實(shí)施“理實(shí)一體”教學(xué)模式則可解決這個(gè)問題。
“理實(shí)一體”教學(xué)模式即理論實(shí)踐一體化的教學(xué)模式。其突破了以往理論與實(shí)踐相脫節(jié)的現(xiàn)象,教學(xué)環(huán)節(jié)相對(duì)集中。它強(qiáng)調(diào)充分發(fā)揮教師的主導(dǎo)作用,通過設(shè)定教學(xué)任務(wù)和教學(xué)目標(biāo),讓師生雙方邊教、邊學(xué)、邊做,全程構(gòu)建素質(zhì)和技能培養(yǎng)框架,豐富課堂教學(xué)和實(shí)踐教學(xué)環(huán)節(jié),提高教學(xué)質(zhì)量[2]??梢哉f,“理實(shí)一體”是一種充分調(diào)動(dòng)和激發(fā)學(xué)生學(xué)習(xí)興趣的教學(xué)模式。
1.1教學(xué)環(huán)境的搭建及教學(xué)資源
1.1.1教學(xué)環(huán)境的搭建
該門課程的教學(xué)需在機(jī)房進(jìn)行,并安裝“Python+解釋器+三方庫”,搭建運(yùn)行環(huán)境。
Python的安裝建議選擇64位Python3最新版本;解釋器選擇Pycharm最新英文原版,建議不要漢化;同時(shí),使用pip命令安裝三個(gè)外置三方庫——數(shù)據(jù)分析基礎(chǔ)工具numpy、處理結(jié)構(gòu)化數(shù)據(jù)工具Panda、Matplotlib實(shí)現(xiàn)交互式圖表繪制。
1.1.2 教學(xué)資源
由于學(xué)生機(jī)安裝有不同的操作系統(tǒng),而Python的版本和運(yùn)行環(huán)境也有很多選擇。因此,我們已將錄制好的搭建Python運(yùn)行環(huán)境的視頻上傳至學(xué)習(xí)通在線平臺(tái),供學(xué)生課前參考。同時(shí),在教學(xué)的過程中,我們同步上傳了教學(xué)講解視頻和PPT,供學(xué)生課前預(yù)習(xí)和課后復(fù)習(xí);學(xué)習(xí)中需用到的data,即案例中用到的.csv、.xls文件及圖片資源均可以在學(xué)習(xí)通線平臺(tái)下載使用。
1.2教學(xué)內(nèi)容的選擇與組織
1.2.1教學(xué)內(nèi)容的選擇
本課程目前面向理工科類學(xué)生開設(shè),其教學(xué)內(nèi)容包括:了解三種常見數(shù)據(jù)形態(tài)——ndarry、Series、DataFrame。掌握三種數(shù)據(jù)的獲取、處理等方法,能完成將處理后的數(shù)據(jù)用圖形展示等操作。
圍繞以上教學(xué)內(nèi)容,我們采用“理實(shí)一體”教學(xué)模式,選用案例教學(xué)法,將教學(xué)內(nèi)容劃分成六個(gè)模塊。其中,課前導(dǎo)讀與結(jié)題文檔兩個(gè)模塊分別在開課前和結(jié)課后進(jìn)行,不占用課堂教學(xué)時(shí)間。其余四個(gè)模塊中的每個(gè)教學(xué)內(nèi)容均包括“理論講解+案例演示+操作實(shí)踐+課堂小測”四個(gè)教學(xué)環(huán)節(jié),具體內(nèi)容劃分如表1所列。
整個(gè)課程的教學(xué)內(nèi)容遵循科學(xué)計(jì)算兩步驟,即包括對(duì)數(shù)據(jù)的分析與組織和展示數(shù)據(jù)兩部分。先學(xué)習(xí)Numpy的矩陣,包括矩陣的創(chuàng)建、運(yùn)算、讀取、運(yùn)算等;再學(xué)習(xí)Pandas的Series、DataFramer,包括Series、DataFramer的創(chuàng)建、選擇、運(yùn)算、排序、分組、文件的讀寫等;接下來學(xué)習(xí)用Matplotlib進(jìn)行數(shù)據(jù)展示;最后通過綜合案例掌握數(shù)據(jù)處理方法和圖形展示技巧等,并形成實(shí)驗(yàn)報(bào)告。
1.2.2教學(xué)內(nèi)容的組織
以上六個(gè)模塊既相對(duì)獨(dú)立,又相互關(guān)聯(lián)。每個(gè)教學(xué)內(nèi)容均由“理論講解+案例演示+操作實(shí)踐+課堂小測”四個(gè)教學(xué)環(huán)節(jié)構(gòu)成。每個(gè)教學(xué)內(nèi)容的知識(shí)點(diǎn)不同,但每個(gè)知識(shí)點(diǎn)環(huán)環(huán)相扣,層層遞進(jìn)。
首先,對(duì)本堂課所涉及的教學(xué)內(nèi)容和知識(shí)點(diǎn)進(jìn)行講解和概括,讓學(xué)生建立本次教學(xué)內(nèi)容的知識(shí)輪廓;接著,將教學(xué)內(nèi)容中的各知識(shí)點(diǎn)穿插在案例中。一邊演示一邊講解,讓學(xué)生去體會(huì)、領(lǐng)悟。每個(gè)知識(shí)點(diǎn)的“案例演示”結(jié)束后,即進(jìn)入“操作實(shí)踐”環(huán)節(jié)。接下來進(jìn)入下一個(gè)知識(shí)點(diǎn),實(shí)現(xiàn)“案例演示+操作實(shí)踐”環(huán)節(jié)的循環(huán)進(jìn)行。隨著環(huán)環(huán)相扣的知識(shí)點(diǎn)在案例中演示與講解,并在操作實(shí)踐環(huán)節(jié)讓師生無縫交互與問答,讓學(xué)生享受這樣的教學(xué)過程。最后,通過課堂小測環(huán)節(jié),對(duì)這堂課的教學(xué)內(nèi)容進(jìn)行鞏固、復(fù)習(xí)。
同時(shí),在課堂中選用的案例和數(shù)據(jù)應(yīng)與生活、工作、學(xué)習(xí)息息相關(guān),比如某餐廳的消費(fèi)數(shù)據(jù)、部分運(yùn)動(dòng)品牌的各類產(chǎn)品銷售數(shù)據(jù)、共享單車的租賃數(shù)據(jù)等。通過對(duì)這些數(shù)據(jù)進(jìn)行分析、提取和展示,得出結(jié)果,最終為決策提供幫助。從而讓學(xué)生體會(huì)到學(xué)與用不能脫節(jié),用興趣引導(dǎo)學(xué)生愛上課堂,變被動(dòng)學(xué)習(xí)為主動(dòng)學(xué)習(xí)[3]。將知識(shí)融會(huì)貫通,體會(huì)到運(yùn)用知識(shí)解決實(shí)際問題的樂趣。
1.3教學(xué)過程的設(shè)計(jì)
教學(xué)過程的設(shè)計(jì)遵循從簡單到復(fù)雜、層層遞進(jìn)、環(huán)環(huán)相扣的原則。本文以教學(xué)內(nèi)容“柱狀圖”說明“理實(shí)一體”教學(xué)模式在教學(xué)中的應(yīng)用。
1.3.1理論講解
柱狀圖又稱長條圖或柱狀統(tǒng)計(jì)圖,通過三方庫matplotlib.pyplot的bar函數(shù)實(shí)現(xiàn),其中函數(shù)的基本語法為bar(x,y)。除了基本柱狀圖外,我們還會(huì)學(xué)習(xí)到疊加柱狀圖、半層疊柱狀圖、平行柱狀圖用法,并會(huì)同步學(xué)習(xí)bar函數(shù)其它各參數(shù)用法以及在figure中l(wèi)egend函數(shù)的用法[4]。
1.3.2 基本柱狀圖
①案例演示選擇tips.csv表,即將某餐廳的消費(fèi)數(shù)據(jù)導(dǎo)入cs=pd.read_csv(“……/tips.csv”),并讓學(xué)生觀察,表中數(shù)據(jù)為DataFrame,column信息如圖1所示。
簡單柱狀圖只需通過一次分類、簡單運(yùn)算就可獲得想要數(shù)據(jù)。案例1如圖2所示,展示不同gender與bill的關(guān)聯(lián)性:
此例需用到gender、bill兩列數(shù)據(jù),只需對(duì)gender列按female和male分類后對(duì)tip運(yùn)算,不需對(duì)數(shù)據(jù)進(jìn)行多次處理和復(fù)雜運(yùn)算。接下來,介紹兩種方法實(shí)現(xiàn)數(shù)據(jù)的獲取。
方法1:在原表中按條件運(yùn)算獲取數(shù)據(jù)
femalemean=cs[cs['gender']=='Female']['tip'].mean()
malemean=cs[cs['gender']=='Male']['tip'].mean()
此方法是在原表中按不同gender求平均值運(yùn)算,運(yùn)算結(jié)果為兩個(gè)數(shù)據(jù),分別存入femalemean和malemean中。依圖2所示將對(duì)應(yīng)參數(shù)放入函數(shù)相應(yīng)位置后可得:
plt.bar(['female','male'],[femalemean,malemean],width=0.5,color='green',edgecolor="red",alpha=0.4)
其中函數(shù)中x坐標(biāo)為'female'和'male',y坐標(biāo)為femalemean和malemean的值,放入兩個(gè)必選參數(shù)后,還有width、color等可選參數(shù)供設(shè)置。在此過程中,引入bar函數(shù)參數(shù)的格式、用法。注意區(qū)分必選參數(shù)和可選參數(shù)。
方法2:采用分組與運(yùn)算同步進(jìn)行
gendermean=cs.groupby(by='gender')['tip'].mean()此方法可得到一個(gè)Series,通過對(duì)Series的index和values值的獲取作為bar的x,y參數(shù)。
plt.bar(gendermean.index,gendermean.values,width=0.5,color='green',edgecolor="red",alpha=0.4)
所得圖形展示結(jié)果與方法1一致。
接下來啟動(dòng)Pycharm運(yùn)行環(huán)境,體會(huì)每一個(gè)函數(shù)的用法,每一條語句的作用,并查看運(yùn)行結(jié)果,如圖3所示。
②操作實(shí)踐
用上述兩種方法,展示就餐日期(day)與消費(fèi)金額(total_bill)的關(guān)聯(lián)性柱狀圖。并修改bar函數(shù)各參數(shù),查看運(yùn)行結(jié)果有什么不同。
此環(huán)節(jié)實(shí)現(xiàn)理論與實(shí)踐的無縫銜接。
1.3.3疊加柱狀圖與兩次分類
①疊加柱狀圖
在知識(shí)點(diǎn)1的基礎(chǔ)上,案例2如圖5所示,要求用疊加柱狀圖展示gender與bill關(guān)聯(lián)性:
并在案例的講解與演示中,引入bar函數(shù)里bottom和label參數(shù)的使用方法。
②兩次分類
案例3難度有所提高,數(shù)據(jù)的獲取需要進(jìn)行兩次及以上分類處理。用疊加柱狀圖展示不同day和不同gender的total_bill消費(fèi)總額。如圖6所示:
據(jù)題意可知本案例需用到'total_bill','gender','day'三列數(shù)據(jù)并進(jìn)行兩次分類,才可得到所需數(shù)據(jù)。
由于total_bill屬于數(shù)字列,sum函數(shù)會(huì)自動(dòng)對(duì)數(shù)字列進(jìn)行運(yùn)算,故可得:
df=df[['total_bill','gender','day']]
tmp=df.groupby(['day','gender']).sum()
將兩次分類后計(jì)算所得數(shù)據(jù)作為bar的x,y值,生成經(jīng)過兩次分類的疊加柱狀圖。同時(shí),通過本案例將引入legend函數(shù)的用法。
通過數(shù)據(jù)展示結(jié)果可看出,周末餐廳的消費(fèi)額更高,而周一到周五有市場潛力可挖掘——在非節(jié)假日或非周末時(shí)間通過開展一些促銷活動(dòng)提升客流量。
③操作實(shí)踐
實(shí)踐2要求讀取titanic.csv中的數(shù)據(jù),用疊加柱狀圖展示不同who的alive人數(shù),并能對(duì)展示結(jié)果作分析。提示:本案例除需進(jìn)行兩次分類運(yùn)算外,同時(shí)需要通過增加數(shù)據(jù)列來解決問題,請(qǐng)同學(xué)們思考并在實(shí)踐中解決。
1.3.4 半重疊柱狀圖
案例4不但需進(jìn)行兩次分類獲取數(shù)據(jù),同時(shí)圖形將把數(shù)據(jù)以半重疊柱狀圖展示出來,如圖7所示。
在此案例中,會(huì)談到如何在柱狀圖上方顯示數(shù)值文本,引入forxinzip語句、matplolib.pyplot中text函數(shù)的使用方法,以及在生成半重疊柱狀圖時(shí)align參數(shù)的使用方法。
接著學(xué)生完成實(shí)踐3,讀取penguins.csv文件數(shù)據(jù),用半重疊柱狀圖展示不同species,不同sex的body_mass_g的平均數(shù),熟悉半重疊柱狀圖的用法。
1.3.5平行柱狀圖
案例5用兩次分類獲取數(shù)據(jù),并將數(shù)據(jù)以平行柱狀圖展示。如圖8所示。此案例不但要求學(xué)生學(xué)會(huì)在平行柱狀圖中展示x參數(shù)與width參數(shù)的用法及關(guān)系,同時(shí)學(xué)習(xí)xticks函數(shù)的用法。
如圖8所示,該案例會(huì)綜合運(yùn)用title、xlabel、ylabel、legend、show等相關(guān)函數(shù)。
參照案例5,實(shí)踐4要求讀取exercise.csv文件,用平行柱狀圖展示不同diet,不同kind的pulse的中位數(shù)值。
如上述流程可知,在“案例演示+操作實(shí)踐”環(huán)節(jié)的循環(huán)過程中,每一個(gè)精心設(shè)計(jì)的案例采用進(jìn)階方式讓學(xué)生逐步掌握新的知識(shí)點(diǎn),在操作實(shí)踐環(huán)節(jié)即時(shí)對(duì)知識(shí)點(diǎn)進(jìn)行理解、鞏固、解惑,同時(shí)還能對(duì)前面所學(xué)知識(shí)點(diǎn)進(jìn)行復(fù)習(xí),比如三方庫的導(dǎo)入、文件的讀取、各類運(yùn)算函數(shù)的使用等。
1.3.6課堂小測
在完成所有“理論講解+案例展示+操作實(shí)踐”后,進(jìn)入最后一個(gè)環(huán)節(jié)——通過在線平臺(tái)完成本章課堂小測,并提交實(shí)踐環(huán)節(jié)的所有.py文件。這個(gè)環(huán)節(jié)有助于老師了解、檢查學(xué)生當(dāng)堂課學(xué)習(xí)狀況,以便下次課前對(duì)易錯(cuò)的重難點(diǎn)問題進(jìn)行點(diǎn)評(píng)和答疑。
如上所示,每堂課的知識(shí)點(diǎn)由淺入深、層層遞進(jìn)、環(huán)環(huán)相扣,而每個(gè)知識(shí)點(diǎn)的“案例展示+操作實(shí)踐”環(huán)節(jié)緊密銜接。案例設(shè)計(jì)既有趣味性,又具實(shí)用性,讓學(xué)生在這樣的氛圍下緊跟課堂節(jié)奏,主動(dòng)學(xué)習(xí),并給學(xué)生思考及解決問題的空間和時(shí)間,變被動(dòng)學(xué)習(xí)為主動(dòng)學(xué)習(xí)。
1.4教學(xué)實(shí)效
本課程以開放實(shí)驗(yàn)項(xiàng)目形式進(jìn)行試點(diǎn),參與學(xué)生共計(jì)29人,分為3個(gè)小組。除完成94個(gè)知識(shí)點(diǎn)的實(shí)踐作業(yè)外,還分組完成了3個(gè)綜合實(shí)踐。從提交的實(shí)驗(yàn)報(bào)告可以看出,學(xué)生掌握了Python計(jì)算生態(tài);掌握了大數(shù)據(jù)分析與可視化的常用操作。大多數(shù)學(xué)生表示,“理實(shí)一體”教學(xué)模式改變了理論與實(shí)踐脫節(jié)現(xiàn)象,實(shí)踐環(huán)節(jié)讓學(xué)生從獲取數(shù)據(jù),到數(shù)據(jù)分析,再到看到展示出的圖形,整個(gè)過程能獲得喜悅感。這也說明該課程采用“理實(shí)一體”教學(xué)模式是成功的。
2結(jié)語
本文對(duì)“基于Python的大數(shù)據(jù)分析與可視化”課程進(jìn)行了教學(xué)探索與實(shí)踐,采用“理實(shí)一體”的教學(xué)模式,通過“理論講解+案例演示+操作實(shí)踐+課堂小測”的教學(xué)環(huán)節(jié),說明該模式的基本教學(xué)程序包含設(shè)定教學(xué)目標(biāo)、教師示范性操作與講解、學(xué)生實(shí)踐操作(理論指導(dǎo)實(shí)踐,實(shí)踐檢驗(yàn)理論)、學(xué)習(xí)效考核與評(píng)價(jià)這四個(gè)環(huán)節(jié),實(shí)現(xiàn)了“教、學(xué)、做、考”四位一體。
作者簡介:
劉穎(1978—),碩士,副教授,CCF會(huì)員,研究方向:大數(shù)據(jù)分析、圖像處理。