余本國
(海南醫學院,海南海口 571199)
隨著大數據與人工智能的興起,國內大多數高校也在悄然興起基于Python的各種課程,如大數據基礎、數據分析、多元統計分析等等。自2020年以來,國際排名前100的高校中80%都開設有Python程序設計以及Python相關基礎課程,包括麻省理工學院、斯坦福大學、加州大學洛杉磯分校等著名高校[1]。
高校教學多提倡以“問題為核心,學生為主體,教師為主導”[2]的教學模式,在教師為主導時,大多數教師的授課課件都使用PPT進行編輯制作的,不乏很多計算類的課程亦是如此。
作者任教Python語言及數據分析課程多年,在任教Python類課程時,認為基于Python語言類的課程可以使用Jupyter NoteBook(以下簡稱JNB)制作編輯教學課件,其效果明顯要優于PPT做的課件模式。
JNB是基于網頁的一種交互式計算的應用程序,據官方介紹,可被應用于全過程計算,如開發、文檔編寫、代碼運行和結果展示。
簡而言之,JNB是以網頁的形式打開,在網頁中直接編寫代碼和運行代碼,其結果也會直接在網頁上代碼塊(或者代碼框,Cell)的下方顯示。在編程過程中,需要編寫說明文檔時,可在同一個頁面中直接插入一個Cell編寫Markdown文本,便于作及時的說明和解釋。其中的交互運算、文檔說明、數學公式、圖表以及其他媒體格式的輸入和輸出,均以網頁的形式展現,并保存后綴名為.ipynb的JSON格式文件,以及html和pdf等格式,既可用于版本的控制,也方便與他人交流共享。
JNB主要有以下幾個特點:
1)編程時語法高亮顯示,按tab鍵自動補全代碼,回車自動縮進等功能。
2)可在本地瀏覽器執行代碼,只需添加一行代碼%matplotlib inline,即可直接在Cell下方顯示執行結果。
3)編輯說明文本時支持Markdown語法。
4)支持LaTeX編寫的數學公式的顯示。
5)可展示計算的結果包括HTML、LaTeX、PNG、SVG等格式。
Python版本分兩個階段,Python2.7和現在流行的Python3.X,但互不兼容。無論單獨安裝哪個版本的Python,都需要對環境變量要進行設置,這對于初學者有一定的難度。但Anaconda解決了這些問題,環境配置與版本匹配問題系統都自動進行了處理,盡管“體積”大了些,一般在460MB左右,但對于初學者來說,免去了安裝和環境變量的設置,還自帶安裝了常用的第三方庫。不僅如此,Anaconda還自動安裝了Spyder和JNB兩個編輯器[3],如圖1所示。

圖1 Anaconda目錄
按照CDIO工程教育理念[4],JNB可以在網頁界面進行CDIO設計,并可SPOC形式實驗教學[5],結合相關的插件,實現功能模塊的劃分與折疊,便于教學流程的完整性。CDIO項目教學階段內容與步驟如表1[6]所示。

表1 CDIO教學階段與步驟
JNB不僅擁有類似于PPT的展示功能,還能夠將解釋性文本、代碼、圖表、音頻文件等交混在一起[7],并實時地進行代碼交互,讓課堂教學能夠獲得動態結果,避免了PPT僅展示代碼靜態結果。正所謂百聞不如一見,有圖有真相,“實踐是檢驗真理的唯一標準”。如圖2所示。

圖2 代碼文本交互顯示
可以對JNB安裝插件,以便于對代碼框進行折疊,如對圖1中的“1.1序列series”下的內容進行折疊,以節省展示文本內容的界面空間,讓層次感更加清晰,如圖3所示。

圖3 Cell(代碼/文本框)折疊
交互式編輯器的教學,避免了PPT靜態的代碼呈現結果。PPT教學展示的都是教師課前運行代碼獲取的正確結果,不能獲取真實編程狀態下遇到的各種問題,和遇到的不可預見錯誤。在JNB模式下,當老師調試這些錯誤時,學生能夠直觀地感受到錯誤的形成,錯誤的表現形式,以及錯誤的修正。而這一系列的修正過程,即是學生最好的學習過程,更能從實踐中掌握知識。
對于上課過程中呈現的各種格式的內容,以及穿插其間運行的代碼和結果,除了可以保存為在其他編輯器中方便使用的py、ipynb格式,還可以導出為pdf或html格式的文件。對于pdf和html可以發布到網上或者上傳到學生班級交流群內,便于學生課后交流以及課后復習,更是對課堂教學情景的再現。
通過以上分析,得到JNB和PPT的優勢比較,如表2。

表2 PPT與JNB的效果對比
在進行數據分析時,一般的數據難以獲取,隨機生成數據又沒有實際的感觀度,通過互聯網爬取數據很容易遭到封IP,所以在設計數據分析的教學案例時,一般結合現有的平臺工具實時獲取數據,如WPS或者騰訊在線收集表,發布鏈接讓學生填寫姓名、學號、族別、性別、出生年月、對預期的工資期望、對課程的評價等等。有了這些數據就可以讓學生分析姓氏、性別、族別比,可以做餅圖、柱狀圖,對評價作詞云圖或者情感分析等。
對收集的數據,讓學生分析數據中的族別情況,將結果可視化;對其中的評價進行文本處理,將文本可視化。案例檢測的知識點包括:
①讀取給定的Excel數據,并顯示數據;
②查看數據中的族別列,統計族別分類的種數;
③對同一種族的不同稱謂進行處理,如“漢族”和“漢”統一處理為“漢”;
④對處理后的數據進行分類統計;
⑤對統計結果可視化,做成餅圖或柱狀圖;
⑥對評價文本進行清洗,并對其分詞;
⑦對分詞結果作成詞云圖。
1)Python3.8。使用Anaconda下的spyder編輯器。
2)安裝相應的第三方庫。在Anaconda中的Anaconda Prompt下運行命令:
安裝Jieba:pip install jieba
安裝WordCloud:pip install WordCloud
通過導入相關的模塊和庫,利用Pandas模塊中read_excel方法讀取數據,并提取“族別”列數據,通過一系列的數據清洗操作,獲得族別數據,利用Matplotlib庫可以實現餅圖,實現代碼如下。


4)導出html與ipynb格式
將運行完畢的JNB頁面另存為ipynb格式,便于下次修改和再次運行。導出另存為HTML格式,可以發布到教師個人主頁或直接發送給學生,便于課后交流與復習,對課堂授課情景的再現。導出保存如圖4所示。

圖4 導出為html和ipynb格式
通過使用JNB在Python教學中的應用與探索,并與普通的PPT靜態代碼教學相比,JNB在教學中具有可實時交互代碼,實時顯示代碼執行結果,教學效果視覺刺激強,具有PPT不可比擬的動態性,容易激發學生學習的興趣和探索的熱情。通過數據分析教學案例設計,實現從數據獲取到數據清洗分析,再到數據可視化的整個流程,讓學生從感性認知再到動手實踐,豐富了教學方法,實踐了教學內容。