余本國
(海南醫(yī)學(xué)院,海南海口 571199)
隨著大數(shù)據(jù)與人工智能的興起,國內(nèi)大多數(shù)高校也在悄然興起基于Python的各種課程,如大數(shù)據(jù)基礎(chǔ)、數(shù)據(jù)分析、多元統(tǒng)計(jì)分析等等。自2020年以來,國際排名前100的高校中80%都開設(shè)有Python程序設(shè)計(jì)以及Python相關(guān)基礎(chǔ)課程,包括麻省理工學(xué)院、斯坦福大學(xué)、加州大學(xué)洛杉磯分校等著名高校[1]。
高校教學(xué)多提倡以“問題為核心,學(xué)生為主體,教師為主導(dǎo)”[2]的教學(xué)模式,在教師為主導(dǎo)時(shí),大多數(shù)教師的授課課件都使用PPT進(jìn)行編輯制作的,不乏很多計(jì)算類的課程亦是如此。
作者任教Python語言及數(shù)據(jù)分析課程多年,在任教Python類課程時(shí),認(rèn)為基于Python語言類的課程可以使用Jupyter NoteBook(以下簡稱JNB)制作編輯教學(xué)課件,其效果明顯要優(yōu)于PPT做的課件模式。
JNB是基于網(wǎng)頁的一種交互式計(jì)算的應(yīng)用程序,據(jù)官方介紹,可被應(yīng)用于全過程計(jì)算,如開發(fā)、文檔編寫、代碼運(yùn)行和結(jié)果展示。
簡而言之,JNB是以網(wǎng)頁的形式打開,在網(wǎng)頁中直接編寫代碼和運(yùn)行代碼,其結(jié)果也會(huì)直接在網(wǎng)頁上代碼塊(或者代碼框,Cell)的下方顯示。在編程過程中,需要編寫說明文檔時(shí),可在同一個(gè)頁面中直接插入一個(gè)Cell編寫Markdown文本,便于作及時(shí)的說明和解釋。其中的交互運(yùn)算、文檔說明、數(shù)學(xué)公式、圖表以及其他媒體格式的輸入和輸出,均以網(wǎng)頁的形式展現(xiàn),并保存后綴名為.ipynb的JSON格式文件,以及html和pdf等格式,既可用于版本的控制,也方便與他人交流共享。
JNB主要有以下幾個(gè)特點(diǎn):
1)編程時(shí)語法高亮顯示,按tab鍵自動(dòng)補(bǔ)全代碼,回車自動(dòng)縮進(jìn)等功能。
2)可在本地瀏覽器執(zhí)行代碼,只需添加一行代碼%matplotlib inline,即可直接在Cell下方顯示執(zhí)行結(jié)果。
3)編輯說明文本時(shí)支持Markdown語法。
4)支持LaTeX編寫的數(shù)學(xué)公式的顯示。
5)可展示計(jì)算的結(jié)果包括HTML、LaTeX、PNG、SVG等格式。
Python版本分兩個(gè)階段,Python2.7和現(xiàn)在流行的Python3.X,但互不兼容。無論單獨(dú)安裝哪個(gè)版本的Python,都需要對(duì)環(huán)境變量要進(jìn)行設(shè)置,這對(duì)于初學(xué)者有一定的難度。但Anaconda解決了這些問題,環(huán)境配置與版本匹配問題系統(tǒng)都自動(dòng)進(jìn)行了處理,盡管“體積”大了些,一般在460MB左右,但對(duì)于初學(xué)者來說,免去了安裝和環(huán)境變量的設(shè)置,還自帶安裝了常用的第三方庫。不僅如此,Anaconda還自動(dòng)安裝了Spyder和JNB兩個(gè)編輯器[3],如圖1所示。
圖1 Anaconda目錄
按照CDIO工程教育理念[4],JNB可以在網(wǎng)頁界面進(jìn)行CDIO設(shè)計(jì),并可SPOC形式實(shí)驗(yàn)教學(xué)[5],結(jié)合相關(guān)的插件,實(shí)現(xiàn)功能模塊的劃分與折疊,便于教學(xué)流程的完整性。CDIO項(xiàng)目教學(xué)階段內(nèi)容與步驟如表1[6]所示。
表1 CDIO教學(xué)階段與步驟
JNB不僅擁有類似于PPT的展示功能,還能夠?qū)⒔忉屝晕谋?、代碼、圖表、音頻文件等交混在一起[7],并實(shí)時(shí)地進(jìn)行代碼交互,讓課堂教學(xué)能夠獲得動(dòng)態(tài)結(jié)果,避免了PPT僅展示代碼靜態(tài)結(jié)果。正所謂百聞不如一見,有圖有真相,“實(shí)踐是檢驗(yàn)真理的唯一標(biāo)準(zhǔn)”。如圖2所示。
圖2 代碼文本交互顯示
可以對(duì)JNB安裝插件,以便于對(duì)代碼框進(jìn)行折疊,如對(duì)圖1中的“1.1序列series”下的內(nèi)容進(jìn)行折疊,以節(jié)省展示文本內(nèi)容的界面空間,讓層次感更加清晰,如圖3所示。
圖3 Cell(代碼/文本框)折疊
交互式編輯器的教學(xué),避免了PPT靜態(tài)的代碼呈現(xiàn)結(jié)果。PPT教學(xué)展示的都是教師課前運(yùn)行代碼獲取的正確結(jié)果,不能獲取真實(shí)編程狀態(tài)下遇到的各種問題,和遇到的不可預(yù)見錯(cuò)誤。在JNB模式下,當(dāng)老師調(diào)試這些錯(cuò)誤時(shí),學(xué)生能夠直觀地感受到錯(cuò)誤的形成,錯(cuò)誤的表現(xiàn)形式,以及錯(cuò)誤的修正。而這一系列的修正過程,即是學(xué)生最好的學(xué)習(xí)過程,更能從實(shí)踐中掌握知識(shí)。
對(duì)于上課過程中呈現(xiàn)的各種格式的內(nèi)容,以及穿插其間運(yùn)行的代碼和結(jié)果,除了可以保存為在其他編輯器中方便使用的py、ipynb格式,還可以導(dǎo)出為pdf或html格式的文件。對(duì)于pdf和html可以發(fā)布到網(wǎng)上或者上傳到學(xué)生班級(jí)交流群內(nèi),便于學(xué)生課后交流以及課后復(fù)習(xí),更是對(duì)課堂教學(xué)情景的再現(xiàn)。
通過以上分析,得到JNB和PPT的優(yōu)勢比較,如表2。
表2 PPT與JNB的效果對(duì)比
在進(jìn)行數(shù)據(jù)分析時(shí),一般的數(shù)據(jù)難以獲取,隨機(jī)生成數(shù)據(jù)又沒有實(shí)際的感觀度,通過互聯(lián)網(wǎng)爬取數(shù)據(jù)很容易遭到封IP,所以在設(shè)計(jì)數(shù)據(jù)分析的教學(xué)案例時(shí),一般結(jié)合現(xiàn)有的平臺(tái)工具實(shí)時(shí)獲取數(shù)據(jù),如WPS或者騰訊在線收集表,發(fā)布鏈接讓學(xué)生填寫姓名、學(xué)號(hào)、族別、性別、出生年月、對(duì)預(yù)期的工資期望、對(duì)課程的評(píng)價(jià)等等。有了這些數(shù)據(jù)就可以讓學(xué)生分析姓氏、性別、族別比,可以做餅圖、柱狀圖,對(duì)評(píng)價(jià)作詞云圖或者情感分析等。
對(duì)收集的數(shù)據(jù),讓學(xué)生分析數(shù)據(jù)中的族別情況,將結(jié)果可視化;對(duì)其中的評(píng)價(jià)進(jìn)行文本處理,將文本可視化。案例檢測的知識(shí)點(diǎn)包括:
①讀取給定的Excel數(shù)據(jù),并顯示數(shù)據(jù);
②查看數(shù)據(jù)中的族別列,統(tǒng)計(jì)族別分類的種數(shù);
③對(duì)同一種族的不同稱謂進(jìn)行處理,如“漢族”和“漢”統(tǒng)一處理為“漢”;
④對(duì)處理后的數(shù)據(jù)進(jìn)行分類統(tǒng)計(jì);
⑤對(duì)統(tǒng)計(jì)結(jié)果可視化,做成餅圖或柱狀圖;
⑥對(duì)評(píng)價(jià)文本進(jìn)行清洗,并對(duì)其分詞;
⑦對(duì)分詞結(jié)果作成詞云圖。
1)Python3.8。使用Anaconda下的spyder編輯器。
2)安裝相應(yīng)的第三方庫。在Anaconda中的Anaconda Prompt下運(yùn)行命令:
安裝Jieba:pip install jieba
安裝WordCloud:pip install WordCloud
通過導(dǎo)入相關(guān)的模塊和庫,利用Pandas模塊中read_excel方法讀取數(shù)據(jù),并提取“族別”列數(shù)據(jù),通過一系列的數(shù)據(jù)清洗操作,獲得族別數(shù)據(jù),利用Matplotlib庫可以實(shí)現(xiàn)餅圖,實(shí)現(xiàn)代碼如下。
4)導(dǎo)出html與ipynb格式
將運(yùn)行完畢的JNB頁面另存為ipynb格式,便于下次修改和再次運(yùn)行。導(dǎo)出另存為HTML格式,可以發(fā)布到教師個(gè)人主頁或直接發(fā)送給學(xué)生,便于課后交流與復(fù)習(xí),對(duì)課堂授課情景的再現(xiàn)。導(dǎo)出保存如圖4所示。
圖4 導(dǎo)出為html和ipynb格式
通過使用JNB在Python教學(xué)中的應(yīng)用與探索,并與普通的PPT靜態(tài)代碼教學(xué)相比,JNB在教學(xué)中具有可實(shí)時(shí)交互代碼,實(shí)時(shí)顯示代碼執(zhí)行結(jié)果,教學(xué)效果視覺刺激強(qiáng),具有PPT不可比擬的動(dòng)態(tài)性,容易激發(fā)學(xué)生學(xué)習(xí)的興趣和探索的熱情。通過數(shù)據(jù)分析教學(xué)案例設(shè)計(jì),實(shí)現(xiàn)從數(shù)據(jù)獲取到數(shù)據(jù)清洗分析,再到數(shù)據(jù)可視化的整個(gè)流程,讓學(xué)生從感性認(rèn)知再到動(dòng)手實(shí)踐,豐富了教學(xué)方法,實(shí)踐了教學(xué)內(nèi)容。