运行Jupyter Notebook
notebook是Jupyter项目的重要组件之一,它是一个代码、文本(有标记或无标记)、数据可视化或其它输出的交互式文档。Jupyter Notebook需要与内核互动,内核是Jupyter与其它编程语言的交互编程协议。Python的Jupyter内核是使用IPython。要启动Jupyter,在命令行中输入jupyter notebook
:
$ jupyter notebook
[I 15:20:52.739 NotebookApp] Serving notebooks from local directory:
/home/wesm/code/pydata-book
[I 15:20:52.739 NotebookApp] 0 active kernels
[I 15:20:52.739 NotebookApp] The Jupyter Notebook is running at:
http://localhost:8888/
[I 15:20:52.740 NotebookApp] Use Control-C to stop this server and shut down
all kernels (twice to skip confirmation).
Created new window in existing browser session.
在多数平台上,Jupyter会自动打开默认的浏览器(除非指定了--no-browser
)。或者,可以在启动notebook之后,手动打开网页http://localhost:8888/
。图2-1展示了Google Chrome中的notebook。
笔记:许多人使用Jupyter作为本地的计算环境,但它也可以部署到服务器上远程访问。这里不做介绍,如果需要的话,鼓励读者自行到网上学习。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PkhfKVHu-1573525111726)(assets/7178691-c76c4f40777d3ef1.png)]
要新建一个notebook,点击按钮New,选择“Python3”或“conda[默认项]”。如果是第一次,点击空格,输入一行Python代码。然后按Shift-Enter执行。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-N7zZI7HG-1573525111729)(assets/7178691-86a6813291ead445.png)]
当保存notebook时(File目录下的Save and Checkpoint),会创建一个后缀名为.ipynb
的文件。这是一个自包含文件格式,包含当前笔记本中的所有内容(包括所有已评估的代码输出)。可以被其它Jupyter用户加载和编辑。要加载存在的notebook,把它放到启动notebook进程的相同目录内。你可以用本书的示例代码练习,见图2-3。
虽然Jupyter notebook和IPython shell使用起来不同,本章中几乎所有的命令和工具都可以通用。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SbfGSvNd-1573525111731)(assets/7178691-bc9a0b4c30363747.png)]
Tab补全
从外观上,IPython shell和标准的Python解释器只是看起来不同。IPython shell的进步之一是具备其它IDE和交互计算分析环境都有的tab补全功能。在shell中输入表达式,按下Tab,会搜索已输入变量(对象、函数等等)的命名空间:
In [1]: an_apple = 27
In [2]: an_example = 42
In [3]: an<Tab>
an_apple and an_example any
在这个例子中,IPython呈现出了之前两个定义的变量和Python的关键字和内建的函数any
。当然,你也可以补全任何对象的方法和属性:
In [3]: b = [1, 2, 3]
In [4]: b.<Tab>
b.append b.count b.insert b.reverse
b.clear b.extend b.pop b.sort
b.copy b.index b.remove
同样也适用于模块:
In [1]: import datetime
In [2]: datetime.<Tab>
datetime.date datetime.MAXYEAR datetime.timedelta
datetime.datetime datetime.MINYEAR datetime.timezone
datetime.datetime_CAPI datetime.time datetime.tzinfo
在Jupyter notebook和新版的IPython(5.0及以上),自动补全功能是下拉框的形式。
笔记:注意,默认情况下,IPython会隐藏下划线开头的方法和属性,比如魔术方法和内部的“私有”方法和属性,以避免混乱的显示(和让新手迷惑!)这些也可以tab补全,但是你必须首先键入一个下划线才能看到它们。如果你喜欢总是在tab补全中看到这样的方法,你可以IPython配置中进行设置。可以在IPython文档中查找方法。
除了补全命名、对象和模块属性,Tab还可以补全其它的。当输入看似文件路径时(即使是Python字符串),按下Tab也可以补全电脑上对应的文件信息:
In [7]: datasets/movielens/<Tab>
datasets/movielens/movies.dat datasets/movielens/README
datasets/movielens/ratings.dat datasets/movielens/users.dat
In [7]: path = 'datasets/movielens/<Tab>
datasets/movielens/movies.dat datasets/movielens/README
datasets/movielens/ratings.dat datasets/movielens/users.dat
结合%run
,tab补全可以节省许多键盘操作。
另外,tab补全可以补全函数的关键词参数(包括等于号=)。见图2-4。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-RwFs16Sm-1573525111735)(assets/7178691-8188b0386238c16a.png)]
后面会仔细地学习函数。
自省
在变量前后使用问号?,可以显示对象的信息:
In [8]: b = [1, 2, 3]
In [9]: b?
Type:<