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}$的输出效果是: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服务了。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,254评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,875评论 3 387
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,682评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,896评论 1 285
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,015评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,152评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,208评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,962评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,388评论 1 304
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,700评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,867评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,551评论 4 335
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,186评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,901评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,142评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,689评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,757评论 2 351

推荐阅读更多精彩内容