2020-12-17 使用Jupyter进行数据分析课程教学

Python的主流IDE环境有三种:Jupyter Notebook、Spyder和Pycharm。它们各有所长,Pycharm侧重于工程开发,而前两者侧重交互式数据分析。Spyder类似于matlab,有类似“工作空间”的功能,可方便地观察和修改内存中数组的值。而本文要介绍的Jupyter Notebook是这三者中最另类且最受欢迎的一种。
说它另类,因为它是一款基于网页的python IDE,可通过浏览器打开代码文件,并在网页上直接编写和运行代码,代码的运行结果直接在代码块下显示。且其支持markdown语法直接编写文档。由于有这些特点,Jupyter Notebook特别适合用作数据分析课程的教学软件。
将Jupyter Notebook用作教学软件的好处如下:

  • BS模式,只需在教师机上配置一次服务端,学生机远程用浏览器打开即可参与到课堂互动和练习。
  • 对于内网情况,不便于通过工具链配置开发环境,只需教师机在外网配置好环境再接入内网即可。
  • 可使学生聚焦于数据分析课程内容,避免花费时间配置基础环境。
  • 学生的随堂练习和课后练习都可直接保存在服务端。
  • 编程时具有语法高亮、缩进、tab补全的功能。
  • 可直接通过浏览器运行代码,同时在代码块下方展示运行结果。
  • 以富媒体格式展示计算结果。富媒体格式包括:HTML,LaTeX,PNG,SVG等。
  • 对代码编写说明文档或语句时,支持Markdown语法。
  • 支持使用LaTeX编写数学性说明。

教师可以在备课时,按章节组织代码目录,在某堂课所对应的目录下组织多个代码文件,每个代码文件代表一个知识点。学生和老师可以使用同一个账户登录jupyter,也可以配置不同账户。但对于教学而言,使用同一账户更方便,课堂上教师更新代码后,学生可直接刷新内容。学生提交作业时以各自学号命名文件即可(另存为)。如下图所示,是一个知识点的范例和随堂练习。


jupyter.png

在这个知识点的教学设计中,首先有一个markdown的单元格,该单元格罗列了本条知识点的内容。第二个单元格是范例的代码单元格,运行该单元格后可在代码下方输出图形结果。第三个单元格又是一个markdown单元格,布置了与范例紧密相关的随堂练习题。学生可以在最后新建一个代码单元格,输入自己的代码,并运行单元格测试结果。细心的读者可以看到,上图最后一个单元格中出现了公式,这就是支持latex的markdown输出效果。
惊喜地发现,的markdown也支持latex了,试一下$y=\sum_{i=1}^n\frac{\pi a_i}{2}$的输出效果是:。

Jupyter Notebook服务端安装和配置方法

1. 安装

在连接互联网的情况下jupyter的安装非常简单,可通过pip3工具直接安装:pip3 install jupyter。如果没有联网,也可下载jupyter的whl文件,拷贝到本地安装。
安装时会输出类似如下的提示信息:

WARNING: The scripts jupyter-bundlerextension, jupyter-nbextension, jupyter-notebook and jupyter-serverextension are installed in '/home/wu/.local/bin' which is not on PATH.

该提示信息提示我们jupyter所安装的目录,我们需要将该目录添加到环境变量PATH中,sudo gedit ~/.bashrc,在最后添加PATH=$PATH:/home/wu/.local/bin,保存后在终端执行source ~/.bashrc即可。

2. 启动

在终端输入jupyter notebook则可启动。jupyter的默认端口号是8888,若端口被占用,端口号会自动加1。你也可以手动指定端口:jupyter notebook --port 9999。启动服务器后会自动打开浏览器进入jupyter主页面,如果只是启动服务器,不想进入jupyter,可执行:jupyter notebook --no-browser
进入jupyter主页面后,试试新建一个文件,打开文件就会发现报500 : Internal Server Error的错误。这是因为服务器上nbconvert包版本较低,与新版的jupyter Notebook不兼容导致,只需pip3 install --upgrade nbconvert即可(参考于此)。

3. 配置工作路径

进入jupyter主页面后,可以看到默认的工作路径是服务器的用户主目录。我们可以建立一个数据分析课程目录,并将该目录配置为jupyter的工作路径。
第一次配置jupyter,我们可以通过jupyter notebook --generate-config命令来生成默认配置文件,默认配置文件的路径为~/.jupyter/jupyter_notebook_config.py。打开该配置文件,查找关键字:c.NotebookApp.notebook_dir,取消注释,并填入所需的路径。重启jupyter后,再次登录则显示出刚设定的工作路径。

4. 配置可远程登录

默认情况下,jupyter只能通过localhost在本机登录。为了让学生机可从远程登录,需修改配置文件。
在修改配置文件前,我们需要计算出登录密码对应的HASH值。因为在配置文件中需要写入登录密码,而该密码是以HASH值的方式对密码明文进行了加密。我们可以调用jupyter的密码自动生成工具来生成密码:jupyter notebook password连续输入两次密码,则在配置文件同目录下生成了一个新的文件:jupyter_notebook_config.json,该文件的格式如下:

{
  "NotebookApp": {
    "password": "argon2:$argon2id$v=19$m=10240,t=10,p=8$DxxxQ1Nc55W0Eeu9wdLiQ$zrPwR13BSwCwDBBoVxxxxx"
  }
}

复制password字段的内容,并打开刚才那个配置文件,寻找c.NotebookApp.ip字段,并做如下修改:

c.NotebookApp.ip='*'
c.NotebookApp.password = u'argon2:$ar...刚才复制的那个密文'
c.NotebookApp.open_browser = False
c.NotebookApp.port =8888 #可自行指定一个端口, 访问时使用该端口

保存后重启jupyter,则可通过ip地址远程访问教师机jupyter服务了。

你可能感兴趣的:(2020-12-17 使用Jupyter进行数据分析课程教学)