余本国
(海南医学院,海南海口 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不可比拟的动态性,容易激发学生学习的兴趣和探索的热情。通过数据分析教学案例设计,实现从数据获取到数据清洗分析,再到数据可视化的整个流程,让学生从感性认知再到动手实践,丰富了教学方法,实践了教学内容。