版权声明
这些笔记基于《Python for Data Analysis, 3rd Edition》一书的内容总结和理解。原书由 Wes McKinney 编写,出版商为 O’Reilly,ISBN 978-1-098-10403-0。版权声明如下:
MIT License
Original work Copyright (c) 2024 Wes McKinney
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
继续阅读书籍学习,接下来是介绍 Python 的解释器进一步引出 IPython 增强型解释器基本用法和介绍 Jupyter Notebook 运行使用。
IPython 和 Jupyter Notebook
IPython 增强型解释器
Python 解释器
要想知道 IPython,就要先知道 Python 解释器。众所周知,Python 是门解释型的语言,Python 解释器可以通过实现逐行执行 Python 代码来运行一个 Python 程序。甚至可以通过终端命令进入标准交互式 Python 解释器命令窗口执行 Python 代码。
# 进入 Python 解释器命令
python
效果如下:
可以看到 >>>
符号说明已经进入交互式 Python 解释器,可以执行 Python 语句代码。
# 在 Python 解释器执行语句
a = 10
print(a)
效果如下:
退出的方法也很简单,可以使用 exit()
函数退出,也可以在 Linux 和 Mac (类Unix) 系统中使用快捷键 Ctrl+D
退出。
效果如下:
还可以在当前目录创建 helloworld.py
文件并写入 print('helloworld')
到文件中,通过 python
命令直接运行 Python 文件。
# 执行 .py 文件
python helloworld.py
效果如下:
IPython 增强型解释器
在了解了什么是 Python 解释器后,就可以专心了解 IPython 了。和 Python 解释器一样,IPython 解释器也可以通过终端命令进入标准交互式界面。
# 进入 IPython 解释器
ipython
效果如下:
可以看到 IPython 解释器使用 In [1]:
标志符号和 Python 解释器的 >>>
标志符号完全不同。除了具备 Python 解释器一样的执行语句的能力外,还可以访问系统文件,比如使用 %run
直接执行 .py 文件或使用 !
执行终端命令。
# 执行 .py 文件或终端命令
!ls -al helloworld.py
%run helloworld.py
效果如下:
与 Python 解释器打印不同的是,IPython 解释器可以直接打印变量并且格式美观,可读性增强。退出方法和 Python 解释器界面退出一样。
# IPython 打印格式美观
data = [19999999999,299999999999,3999999999999999,4999999999999999,59999999999999,6999999999999,799999999999]
# IPython 解释器可以直接打印变量且美观
data
# print() 打印则很糟糕
print(data)
效果如下:
Jupyter Notebook
Notebook 是 Jupyter 最主要的组件,支持代码、文本(且支持 markdown)、数据可视化和其他输出交互式文档。据我的理解,Jupyter 和内核可以直接交互,内核支持多种语言,但必须遵循 Jupyter 交互式计算协议的实现。IPython 解释器就是 Jupyter 支持 Python 语言功能的内核之一,用来实现执行 Python 代码行为。
结合书籍介绍,又由于我的 Linux 系统 8888 端口被 Docker 容器占用了,索性我反复测试。在 Linux 终端想要以自定义端口启动 Jupyter 的 Notebook 组件,需要执行以下命令,其他的功能可以通过
jupyter notebook --help-all
获取。
# 启动 Jupyter 的 Notebook 组件
# --allow-root 允许 root 用户运行组件
# --no-browser 运行组件后不打开浏览器
# --notebook-dir=. 以当前目录为组件根目录为存储路径
# --ip 监听系统网络地址
# --port 自定义监听端口号
jupyter notebook --allow-root --no-browser --notebook-dir=. --ip=0.0.0.0 --port=8889
效果如下:
在执行命令后可以发现,打印的信息中提供了访问方法,还有 token 用于第一次进入组件的凭据,相当于密码。浏览器访问 Linux 域名或 IP 地址:端口,比如我的机器是 169.254.0.1:8889。
效果如下:
可以看到第一次进入 Jupyter Notebook 组件界面会要求输入密码或 token。如果你不喜欢设置密码,直接输入 token 即可;如果你希望以后执行 Jupyter Notebook 都是固定密码,那你就往下滑会有设置密码的配置项。
登陆后界面很简洁:
接下来就是重要的部分,新建一个 IPython 解释器为内核的 .ipynb 文件。点击 File -> New -> Notebook
会自动跳转到选择内核界面,选择 IPython 解释器作为 .ipynb 文件的运行内核,如图:
可以发现,这个界面和 IPython 解释器的交互界面很像。而且,根据书籍所述,这个一个框一个框的东西叫做 Cell(音标为 /sel/,细胞: 生物体的基本结构和功能单位)。这个名字很贴切,也意味着构成 Python 程序的一个个细胞。
接下来试试 IPython 解释器交互式能干的事这个 Jupyter Notebook 能不能做?
真是酣畅淋漓的测试,我玩得忘乎所以,这个界面真是太友好了,效果如图:
在测试的过程中,也让我知道了一些快捷键的使用,比如:
# 快捷键
# 快捷键 Ctrl+Enter 是运行当前选择的 cell
# a 键是向上新增 cell
# b 键是向下新增 cell
# d 键按两下是删除当前选择的 cell
当然这个组件内部也早就内置了快捷键介绍,真是太友好了。点击 help -> Show Keyboard Shortcuts
即可查看快捷键,如图所示:
书籍里也介绍了很多实用性的按键:
-
%
或!
执行系统命令:# 执行系统命令 !ls -al helloworld.py %run helloworld.py
效果如下:
-
Tab
键补全变量、函数、方法和模块等:# 变量、函数、方法和模块补全 a
效果如下:
-
?
获取模块、方法和函数等信息:# 获取信息 import math as m m?
效果如下:
-
*
和?
搭配使用起到占位符过滤获取信息的作用:# 占位符过滤获取信息 import math as m m.*a*?
效果如下: