jupyter notebook :一个交互式计算和开发环境

简介: 一、 IPython基础代码自动补全:Tab键可补全内容包括:变量名、函数名、成员变量函数、目录文件内省(Itrospection)在变量名之前或之后加上问号(?),这样可以显示这个对象的相关信息。

一、 IPython基础

代码自动补全:Tab键

可补全内容包括:变量名、函数名、成员变量函数、目录文件

内省(Itrospection)

  • 在变量名之前或之后加上问号(?),这样可以显示这个对象的相关信息。
    如果这个对象是个函数或实例方法,那么它的docstring也会被显示出来。
    • 使用??还将显示该函数的源代码
  • ?还能搜索IPython命名空间。一些字符再配以通配符(*)即可显示出所有与其相匹配的名称。
    如,我们可以列出NumPy顶级命名空间中含有load的所有函数:
    np.load?

%run 命令

在IPython环境中,所有文件都可以通过%run命令当做Python程序来运行。
脚本的行为和在标准命令行环境(通过python xxx.py启动的)中执行时一样,此后,在文件中所定义的全部变量就可以在当前IPython shell中访问了。

  • Ctrl-C 终止当前正在执行的代码(引发一个KeyboardInterrupt)
    IPython有一些特殊的命令。有的为常见任务提供便利,有的则使你能够轻松控制IPython系统的行为。

    魔术命令(以%为前缀的命令)

  • 魔术命令可以看做运行于IPython系统中的命令行程序,它们大都还有一些参数选项。在命令后面加问号(?)可以查看。
  • 魔术命令默认是可以不带百分号使用的,只要没有定义与其同名的变量即可。这个功能可以通过%automagic命令打开或者关闭。
  • 通过%quickref%magic命令可以查看所有的命令。

常用的魔术命令如下:

  • %quickref thon快速参考
  • %magic 显示magic command详细文档
  • %debug 从最新的异常跟踪的底部进入交互式调试器
  • %hist 打印命令输入历史
  • %pdb 在发生异常后自动进入调试器
  • %paste 执行剪贴板中的Python代码
  • %cpaste 打开一个特殊的提示符以便手工粘贴待执行的代码
  • %reset 删除interactive空间中的全部变量/名称
  • %run 执行一个python脚本
  • %page 分页显示一个对象
  • %time 报告statement执行的时间
  • %timeit 多次执行statement以计算平均执行时间,用于执行时间非常小的代码。
  • %who、%who_is、%whos 显示Interactive命名空间的中定义的变量,信息级别/冗余度可变
  • %xdel 删除变量,并尝试清楚其在IPython中的对象上的一切引用

matplotlib集成与pylab模式

导致IPython广泛应用于科学计算领域的重要原因在于它能够跟matplotlib这样的库及其他GUI工具的默契配合。
如果在标准 python shell 中创建一个matplotlib绘图窗口,就会发现GUI时间循环会接管Python回话的控制权,知道该窗口关闭。这显然无法实现交互式的数据分析和可视化,因此IPython对各个GUI框架进行了专门的处理以使其能够与shell配合得天衣无缝。
集成matplotlib方法:

%pylab
这将会使IPython完成以下工作:

import numpy as np
import matplotlib as plt
from matplotlib import pylab, mlab, pyplot
from IPython.display import display
from IPython.core.pylabtools import figsize, getfigs

from pylab import *
from numpy import *

使用示例:

%pylab  inline
plot(randn(1000).cumsum())

二、 使用历史命令

IPython维护着一个位于硬盘上的一个小型数据库,包含执行过的每一天命令。这样的目的在于:

  • 方便的搜索、自动完成之前执行过的命令
  • 在回话间持久化历史命令
  • 将输入输出历史记录到日志文件

搜索并重用命令历史

上箭头键:搜索出命令历史中第一个与你输入的字符相匹配的命令。多次按将会在历史中不断搜索。
下箭头键:子命令历史中向前搜索。
Ctrl-R:部分增量搜素,循环在命令历史中搜素与输入相符的行。

输入和输出变量

IPython会将输入和输出的引用保存在一些特殊变量中。
最近的输入和输出分别保存在_(一个下划线)和__(两个下划线)两个变量中。
输入被保存在_iX变量中,其中X是输入的行号。
输出被保存在_X变量中,其中X是输出的行号
几个与输入输出有关的魔术命令:

  • %hist 打印输入历史
  • %reset 清空interactive命名空间,可选择是否清空输入和输出缓存
  • %xdel 从IPython中移除特定对象的一切引用

记录输入和输出

执行%logstart能够开始记录控制台回话,包括输入和输出。与之配合的命令有:%logoff%logon%logstate%logstop

三、 与操作系统交互

IPython与操作系统shell结合的非常紧密,可以在IPython中执行shell命令。
与系统相关的命令:

  • !cmd在系统shell中执行cmd
  • output=!cmd args 执行cmd,并将结果放在output中
  • %bookmark 书签名 使用IPython的目录书签系统
  • %cd directory(文件路径) 更改工作目录
  • %pwd 返回系统当前工作目录
  • %env 以字典形式返回系统环境变量

shell命令

在IPython中以感叹号(!)开头的命令表示其后的所有内容将会在系统shell中执行。
使用!时,还允许使用当前环境中定义的Python值,只需在变量名前加上美元($)符号即可:

foo = 'E:\学习*'
!dir $foo
 驱动器 E 中的卷是 LENOVO
 卷的序列号是 8635-9A21

 E:\ 的目录

2017/08/13  19:54    <DIR>          学习
               0 个文件              0 字节
               1 个目录 124,378,099,712 可用字节

目录书签系统

IPython的目录书签系统能够保存常用目录的别名以便实现快速跳转。书签能够持久化保存。
如:

  • %bookmark pys 'C:/User/xxx/PyWorkSpace'
  • 定义好书签之后,就可以在执行魔术命令%cd时使用这些书签了: cd pys
  • 列出所有书签: %bookmark -l
  • 书签名与目录冲突:%bookmark -b pys #强制使用书签目录

四、 软件开发工具

交互式调试器

代码调试的最佳时机就是错误发生的时候:

  • 在发生异常之后马上输入 %debug 命令将会调用调试器,并直接跳转到引发异常的那个帧。
    • pdb中,可以查看各个帧中的一切对象和数据。默认是从最低级开始的。输入u(p)d(own)可以在栈的各级别之间切换。
  • 使用 %pdb on命令可以开启自动调试功能, 即当程序异常时直接开始进行调试。%pdb off命令可关闭自动调试。如果不加参数,只输入%pdb命令则在两种模式之间切换。
  • 如果你想设置断点或对函数进行单步调试。 可以使用带有 -d 选项的%run命令,这将会在执行脚本文件中的代码之前打开调试器。然后,如果你想套设置断点,那么使用 b(reak) x 命令,其中x为行号。前进一行使用 n(ext) 命令,进入函数体使用 s(tep into) 然后使用 c(ontinue) 命令即可直行至断点处。要查看变量可以使用 !x ,其中x为变量名。

虽然大部分IDE都拥有优秀的GUI调试器,但是在IPython中调试程序却往往会带来更高的生产率。
pdb主要命令如下:

  • h(elp) 显示命令列表
  • help command 显示命令的说明文档
  • c(continue) 回复程序的执行
  • q(uit) 退出调试器
  • b(reak) number 在指定行设置断点
  • s(tep) 单步进入(step into)函数
  • n(next) 执行当前行(step over),并进入下一行
  • u(p)/d(own) 在函数调用栈中向上或向下移动
  • a(rgs) 显示当前函数的参数
  • debug statement 在新的调试器中调用语句statement
  • l(ist) statement 显示当前行,以及当前栈级别上的上下文参考代码
  • w(here) 打印当前位置的完整栈跟踪

    调试器的其他使用场景

    除了上面提到的,还有另外的调试方法。可以使用set_trace这个特别的函数。下面两个函数很有用:

def set_trace():
    from IPython.core.debugger import Pdb
    Pdb(color_sheme='Linux').set_trace(sys._getframe().f_back)

def debug(f, *args, **kwargs):
    from IPython.core.debugger import Pdb
    pdb = Pdb(color_scheme='Linux')
    return pdb.runcall(f, *args, **kwargs)

第一个函数set_trace很简单,你可以将它放在代码中任何希望停下来查看一番的地方:

def calling_things():
    set_trace()  #自定义的调试函数
    works_fine()
    throws_an_exception()

第二个函数(debug),使你能够直接在任意函数上使用调试器。
假设我们有如下函数:

def f(x, y, z=1):
    tmp = x + y
    return tmp / z

现在想对其进行单步调试,按如下方式即可:debug(f, 1, 2, z=3)4.3

debug(f, 1, 2, z=3)
C:\Users\xiner\Anaconda3\lib\site-packages\ipykernel_launcher.py:7: DeprecationWarning: The `color_scheme` argument is deprecated since version 5.1
  import sys


> 
探寻有趣之事!
目录
相关文章
|
4月前
|
数据采集 机器学习/深度学习 数据可视化
Jupyter Notebooks和IPython是交互式数据分析利器,提升效率。Jupyter是开源Web应用
【7月更文挑战第5天】Jupyter Notebooks和IPython是交互式数据分析利器,提升效率。Jupyter是开源Web应用,支持多语言,结合IPython的交互式解释器,便于编程和科学计算。两者提供即时反馈、丰富库支持、跨语言功能及协作共享。基本流程包括:数据导入(使用Pandas)、预处理、分析(借助Pandas、NumPy、Matplotlib)、模型训练(如随机森林)和评估。
43 0
|
6月前
|
机器学习/深度学习 数据可视化 数据挖掘
Jupyter Notebook交互式开源笔记本工具
Jupyter Notebook交互式开源笔记本工具
102 1
|
5月前
|
数据采集 机器学习/深度学习 数据可视化
使用Jupyter Notebook进行数据分析:入门与实践
【6月更文挑战第5天】Jupyter Notebook是数据科学家青睐的交互式计算环境,用于创建包含代码、方程、可视化和文本的文档。本文介绍了其基本用法和安装配置,通过一个数据分析案例展示了如何使用Notebook进行数据加载、清洗、预处理、探索、可视化以及建模。Notebook支持多种语言,提供直观的交互体验,便于结果呈现和分享。它是高效数据分析的得力工具,初学者可通过本文案例开始探索。
|
3月前
|
Python
Jupyter Notebook又一利器nbterm,在终端玩notebook!
Jupyter Notebook又一利器nbterm,在终端玩notebook!
|
5月前
|
文字识别 异构计算 Python
关于云端Jupyter Notebook的使用过程与感想
在自学Python时,由于家庭电脑使用冲突和设备老旧,转向云端平台。体验了多个服务:1. 魔搭modelscope(最喜欢,赠送资源丰富,社区活跃),2. Colaboratory(免费GPU,但有时重启,建议用阿里云),3. Deepnote(免费环境有限,但GPT-4代码生成功能强大),4. 飞桨aistudio(适合PaddlePaddle用户),5. ModelArts(曾有免费实例,现难找)。综合来看,阿里云的稳定性与服务更优,尤其是魔搭的自动代码修正功能。对于AIGC,推荐魔搭和付费版PAI-DSW。欢迎分享更多云端Jupyter平台体验。
228 1
|
5月前
|
Python 数据挖掘 数据可视化
Python数据分析——Pandas与Jupyter Notebook
【6月更文挑战第1天】 本文探讨了如何使用Python的Pandas库和Jupyter Notebook进行数据分析。首先,介绍了安装和设置步骤,然后展示了如何使用Pandas的DataFrame进行数据加载、清洗和基本分析。接着,通过Jupyter Notebook的交互式环境,演示了数据分析和可视化,包括直方图的创建。文章还涉及数据清洗,如处理缺失值,并展示了如何进行高级数据分析,如数据分组和聚合。此外,还提供了将分析结果导出到文件的方法。通过销售数据的完整案例,详细说明了从加载数据到可视化和结果导出的全过程。最后,讨论了进一步的分析和可视化技巧,如销售额趋势、产品销售排名和区域分布,以及
173 2
|
6月前
|
JSON 数据可视化 数据挖掘
适合数据分析的ide---Jupyter Notebook的安装使用
适合数据分析的ide---Jupyter Notebook的安装使用
111 2
|
6月前
|
Ubuntu 网络安全 数据安全/隐私保护
使用SSH隧道将Ubuntu云服务器Jupyter Notebook端口映射到本地
这样,你就成功地将Ubuntu云服务器上的Jupyter Notebook端口映射到本地,使你能够通过本地浏览器访问并使用Jupyter Notebook。
434 1
|
6月前
|
Linux 数据安全/隐私保护
anaconda运行Notebook和jupyter报错resource.setrlimit(resource.RLIMIT_NOFILE, (soft, hard)) ValueError
anaconda运行Notebook和jupyter报错resource.setrlimit(resource.RLIMIT_NOFILE, (soft, hard)) ValueError
52 0