N多技巧让你的Notebook起飞

本项目为AI全栈课程《Python从小白到精通》的配套补充,期望大家熟悉基本notebook开发环境后,掌握一些高阶的Notebook使用技巧,提高学习和工作效率。

☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 免费无限量使用 DeepSeek R1 模型☜☜☜

n多技巧让你的notebook起飞 - 创想鸟

1. Notebook VS IDE

Jupyter notebook(Jupyter lab)是aistudio实训平台默认的开发工具,同时也数据科学从业者最常使用的工具。相比vs code, pycharm等IDE(集成开发环境), notebook足够简单,可以让你把所有的精力放在数据挖掘探索和算法开发验证上。其代码结构是以单元格来组织和分割,一个单元格可以有一行或者若干行代码,完成一个单元格后可以立马运行查看中间结果并以及可视化,这种方式的方式的优点显而易见:

代码组织和运行方式非常符合数据科学工作者的思维习惯。可以一边做,然后根据运行的中间结果在思考下一步的操作。面对一个复杂问题时,往往需要多次分步骤尝试。而在IDE里面,每次要想知道中间结果需要打断点调试,每次都需要从头运行,没有notebook方便

配合markdown笔记,可以做出媲美教科书的效果

因为其易用和可扩展,现在很多大学都用来作上课的课件工具。另外你写完的notebook也可以发给别人(.ipynb文件),在Anaconda中可以直接运行,配合markdown可以完美再现你的思维过程! 本项目为AI全栈课程《Python从小白到精通》的配套补充,期望大家熟悉基本notebook开发环境后,掌握一些高阶的Notebook使用技巧,提高学习和工作效率。主要包括以下内容:

常用快捷键单个单元格输出多个结果单元格内执行shell脚本执行常见的shell命令输出当前notebook环境中已经存在的所有变量以及值统计代码运行时间画图相关给for循环加上进度条其他

2. 常用快捷键

显示行号。notebook默认状态下是不显示行号的。在命令模式下按I键可以显示行号code和markdown转换。命令模式下,m键可以将code转成markdown, y键相反编辑模式下:shift+enter 运行当前单元,并且高亮显示下一单元,如果没有下一单元就新建一个单元编辑模式下:crtl+enter 运行当前单元编辑模式下:alt+enter 运行当前单元,并且插入一个新单元并高亮显示

同时可以点击帮助-》快捷键列表查看所有内置的快捷键

N多技巧让你的Notebook起飞 - 创想鸟

3. 单个单元格输出多个结果

Notebook正常情况下,只有最后一行的代码的结果会输出, 如下我们读取一个文件到df中,写了df.shape, df.columns和df.head,只有最后一行的df.head结果会输出,例如:

In [1]

import pandas as pddf = pd.read_csv('demo.csv')df.shape # 正常情况下,因为此代码不是该单元格最后一行,此结果不会输出df.columns # 正常情况下,因为此代码不是该单元格最后一行,此结果不会输出df.head() # 只会输出该代码的结果
  EQP_ID MODEL_Type  CURR_TEMPERATURE0    RS4  QMO_2DCP1              32.91    RS4  QMO_2DCP1              32.42    RS4  QMO_2DCP1              33.03    RS4  QMO_2DCP1              32.94    RS4  QMO_2DCP1              32.9

In [2]

# 如果想把其他有结果也输出,只要增加一个单元格运行下面两句代码即可:"""from IPython.core.interactiveshell import InteractiveShell InteractiveShell.ast_node_interactivity = "all""""
'nfrom IPython.core.interactiveshell import InteractiveShell nInteractiveShell.ast_node_interactivity = "all"n'

In [4]

# 尝试一个单元格多个输出from IPython.core.interactiveshell import InteractiveShell InteractiveShell.ast_node_interactivity = "all"df.head()df.tail()df.shapedf['EQP_ID'].value_counts()
  EQP_ID MODEL_Type  CURR_TEMPERATURE0    RS4  QMO_2DCP1              32.91    RS4  QMO_2DCP1              32.42    RS4  QMO_2DCP1              33.03    RS4  QMO_2DCP1              32.94    RS4  QMO_2DCP1              32.9
    EQP_ID MODEL_Type  CURR_TEMPERATURE377    A6L  QMO_2DCP1             174.2378    A6L  QMO_2DCP1             171.6379    A6L  QMO_2DCP1             169.2380    A6L  QMO_2DCP1             166.8381    A6L  QMO_2DCP1             164.5
(382, 3)
A6L    132RS6    111Q5L     98RS4     41Name: EQP_ID, dtype: int64

4. notebook执行shell命令

很多时候别人开发的脚本是以.py文件形式保存的,这样的脚本一般需要在终端或者IDE环境中执行其实用notebook也完全没问题。只要把终端执行的命令前加个” ! “号即可举例: 下面我们写一个脚本demo.py输出当前的工作环境目录以及该目录下的所有文件,改文件位于当前的环境下:In [5]

# 先使用cat命令查看,在notebook中执行只要在命令前加!即可print("demo脚本内容如下:")!cat demo.py
demo脚本内容如下:print("this is a demo")print('------' * 10)import osprint('当前的目录为:')print(os.getcwd())print('------' * 10)print('当前目录下的文件:')print(os.listdir())print('------' * 10)

In [6]

# 使用!python命令执行该脚本!python demo.py
this is a demo------------------------------------------------------------当前的目录为:/home/aistudio------------------------------------------------------------当前目录下的文件:['data', 'demo.py', '.data', 'demo.csv', '.node.started', '.ipython', '.systemlogs', '.jupyter', '.cache', '.yarn', '.aistudiofs.download.success', '.codelab-jupyter.log', '.bash_history', '.ipynb_checkpoints', '.local', '.bashrc', '.aistudiofs', 'machine.csv', 'main.ipynb', '.conda', '.vscode.log', '.python_history', '.bash_logout', '.viminfo', '.virtual_documents', '.ssh', '.aistudiofs.success', '.homedata.success', '.dataset.download', '.pip', '.npm', '.profile', '.config', '.webide']------------------------------------------------------------

由此我们知道只要在命令前加入!即可执行shell命令,因而在Linux命令行中常用的pwd, ls等命令均可以使用该功能更长使用的一个场景是直接在notebook中安装第三方库,直接使用在单元格内执行: !pip install you-package==version即可In [7]

!pwd # 查看当前目录!ls # 显示当前目录下得文件和目录
/home/aistudiodata  demo.csvdemo.py  machine.csv  main.ipynb

In [ ]

# 直接在单元格内使用pip命令安装相关的库,不需要切换到终端去安装!pip install pandas

!注意: 上面的执行shell命令中,很多命令只能在linux环境中执行,例如pwd,ls等,如果notebook是运行在windows操作系统中,这些命令会实效。但是将!改成%即可在windows环境中执行

5. 常用的shell命令

通过上面得介绍可以发现在notebook中可以方便的执行shell命令,熟练使用可以省去和终端来回切换,提高工作效率。 下面介绍一些在开发中高频使用的shell命令。

5.1 切换目录 %cd

这个有点特殊,在指令cd前加“%”,而不是“!”号。 这点需要注意

In [9]

!pwd # 显示当前目录# 切换目录,可以使用相对路径或绝对路径。推荐使用绝对路径%cd /home/aistudio/work !pwd # 显示切换之后的目录
/home/aistudio[Errno 2] No such file or directory: '/home/aistudio/work'/home/aistudio/home/aistudio

5.2 重定向

在终端中,重定向即将指令原本在显示在终端中的输出追加或者输出到指定文件中进行持久化,便于后面的分析。 这个在一些日志或者输出信息比较多得时候非常有用。重定向有两种操作符:

讯飞星火 讯飞星火

科大讯飞推出的多功能AI智能助手

讯飞星火 120 查看详情 讯飞星火 “>” 重定向操作符, 后面跟随文件的名称。如果当前目录下存在同名文件,会覆盖。“>>” 追加>>重定向操作符。不覆盖,进行追加In [10]

# 查看当前系统进程信息!ps aux
USER         PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMANDaistudio       1  0.0  0.0   4528   728 ?        Ss   10:07   0:00 /bin/sh -c /oaistudio       7  0.0  0.0  13312  3352 ?        S    10:07   0:00 /bin/bash /oproot          33  0.0  0.0  65536  3152 ?        Ss   10:07   0:00 /usr/sbin/sshaistudio      44  0.0  0.0  13324  3428 ?        S    10:07   0:00 bash /opt/conaistudio      46  1.0  0.0 41645240 147244 ?     Sl   10:07   2:40 /opt/conda/enaistudio     100  0.0  0.0   4528   788 ?        S    10:07   0:00 /bin/sh -c plaistudio     101  1.7  0.0 5758164 89156 ?       Sl   10:07   4:17 /opt/conda/enaistudio     130  0.0  0.0  26236 11184 ?        S    10:07   0:00 /opt/conda/enaistudio     131  0.0  0.0 225112 47484 ?        Sl   10:07   0:01 /opt/conda/enaistudio     138  1.2  0.0 152228 48060 ?        Sl   10:07   3:06 /opt/conda/enaistudio     142  1.2  0.0 152228 48120 ?        Sl   10:07   3:07 /opt/conda/enaistudio     264  1.7  0.0 3132680 224776 ?      Sl   10:08   4:18 /opt/conda/enaistudio     269  0.2  0.1 658804 345120 ?       Sl   10:08   0:40 /opt/conda/enaistudio     271  0.0  0.0  52864 26952 ?        S    10:08   0:01 /opt/conda/enaistudio     273  0.0  0.0  42996 24368 ?        S    10:08   0:00 /opt/conda/enaistudio     275  0.0  0.0 171708 49880 ?        Sl   10:08   0:06 /opt/conda/enaistudio   26729  0.0  0.0  42280 24256 ?        S    14:02   0:00 /opt/conda/enaistudio   26787  0.1  0.0 2889464 93768 ?       Sl   14:02   0:01 /opt/conda/enaistudio   27558  0.6  0.0 3098712 103336 ?      Ssl  14:07   0:02 /opt/conda/enaistudio   28175  0.0  0.0  37852  3404 pts/0    Rs+  14:13   0:00 ps aux

In [11]

%cd /home/aistudio/!ps aux > systemid.txt
/home/aistudio

可以看到使用重定向命令后,屏幕不在有输出。相应的在/home/aistudio/目录下回出现一个systemid.txt文件,内容和上面得一样

5.3 查看文件内容

主要有cat, head, tail等命令。这些在深度学习项目中查看一些标注文件会用得比较多。通过查看一个标注文件得前5行可以大概了解文件和标签的结构。 这里举例使用head查看一个文件得前n行。其他命令可以自行尝试。

In [12]

%cd /home/aistudio/!head -5 systemid.txt
/home/aistudioUSER         PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMANDaistudio       1  0.0  0.0   4528   728 ?        Ss   10:07   0:00 /bin/sh -c /opt/conda/include/container-start.shaistudio       7  0.0  0.0  13312  3352 ?        S    10:07   0:00 /bin/bash /opt/conda/include/container-start.shroot          33  0.0  0.0  65536  3152 ?        Ss   10:07   0:00 /usr/sbin/sshdaistudio      44  0.0  0.0  13324  3428 ?        S    10:07   0:00 bash /opt/conda/envs/webide/bin/kernel_seperation_start.sh

5.4 tree命令查看一个目录的结构

可以指定 -L n用于显示目录的层级。 另外还有cp, mv, rm等文件的拷贝删除等操作。这里不在赘述。

In [13]

!tree -L 2 /home/aistudio/
/home/aistudio/├── data├── demo.csv├── demo.py├── machine.csv├── main.ipynb└── systemid.txt1 directory, 5 files

6. 查看当前notebook中的所有变量和变量值

在MATLAB中,直接有一个窗口可以显示当前所有的变量及其相应的值,这个功能非常强大,Anaconda中Spyder也有类似的功能。 其实notebook也可以,直接使用%who和%whos魔法命令即可。其中:

%who会输出当前notebook中已经存在的变量%whos除了输出变量外,变量的类型以及当前值也会显示In [14]

# 先创建一些变量a, b, c = 10, 20.5, 'zhangsan'd = {'Name' : 'PaddlePaddle', 'Age': 18}e = ['cat', 'dog']

In [15]

# 显示当前环境中的所有变量%who
InteractiveShell a b c d df e pd

In [16]

# 显示当前环境中的所有变量、类型和值%whos
Variable           Type             Data/Info---------------------------------------------InteractiveShell   MetaHasTraits    <class 'IPython.core.inteeshell.InteractiveShell'>a                  int              10b                  float            20.5c                  str              zhangsand                  dict             n=2df                 DataFrame            EQP_ID MODEL_Type  CUnn[382 rows x 3 columns]e                  list             n=2pd                 module           <module 'pandas' from '/oages/pandas/__init__.py'>

这个功能在notebook内容比较多的时候比较有用,可以随时通过此命令查看当前环境下的变量而不用向上查找代码

7. 运行时间统计

这个比较常用。主要有time,和timeit两个魔法命令,在结合行模式和单元格模式就有4种用法,具体如下:

%time:在行模式下,统计代码运行一次所花费的时间%%time:在单元模式下,统计整个单元格内的代码运行一次所花费的时间%timeit:在行模式下,执行代码块若干次,统计出平均时间。结果以mean+/-std的形式给出%%timeit:在单元模式下,执行代码块若干次,统计出平均时间。结果以mean+/-std的形式给出

所以time只统计执行一次的时间;而timeit会反复执行很多次统计平均时间,这个比只执行一次要准确一点

In [17]

%time [i for i in range(100) if i%7 == 0]
CPU times: user 0 ns, sys: 10 µs, total: 10 µsWall time: 14.1 µs
[0, 7, 14, 21, 28, 35, 42, 49, 56, 63, 70, 77, 84, 91, 98]

上面的代码使用列表解析式输出100以内可以被7整除的整数,并使用time统计代码运行时间如果改成timeit,则会执行多次,统计平均时间和标准差In [18]

%timeit [i for i in range(100) if i%7 == 0]
4.75 µs ± 40.6 ns per loop (mean ± std. dev. of 7 runs, 100000 loops each)

将一个%改成2个%%后,变成单元格模式,即可以统计整个单元格内的代码运行时间我们通过使用for循环和矩阵方式实现矩阵加法来举例,看看运行效率In [ ]

# 先定义两个二维数组import numpy as npm = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]n = [[2, 2, 2], [3, 3, 3], [4, 4, 4]]m_, n_ = np.array(m), np.array(n)m_,n_m_.shape

使用for-loop实现矩阵相加,并统计时间In [ ]

%%timeitdef array_add_forloop():    res = np.zeros((3,3))    for row in range(m_.shape[0]):        for col in range(m_.shape[1]):            res[row,col] = int(m_[row,col] + n_[row,col])    return resarray_add_forloop()

使用矩阵方式实现矩阵加法In [ ]

%%timeitdef array_add_matrix():    return m_+ n_array_add_matrix()

通过时间统计可以看到,使用numpy中的array实现矩阵相加,效率是for循环的10倍以上!

8. 在notebook中绘图

在Notebook中,matplotlib是最常用的绘图库,并且Notebook中有相应的魔法命令用于辅助绘图功能:

%matplotlib inline:使用这条魔法命令后,不需要显示地调用pyplot.show()即可自动显示图片可以在plt.plot函数后面添加一个“;”这样只输出所需要的图形。

下面举例说明

In [ ]

# %matplotlib inline省略plt.show, 可以加在最前面的单元格,全局有效import numpy as npimport matplotlib.pyplot as plt%matplotlib inlinex = np.linspace(-10,10,100)y = np.sin(x)plt.plot(x, y)

In [ ]

# 加上";"抑制其他输出import numpy as npimport matplotlib.pyplot as plt%matplotlib inlinex = np.linspace(-10,10,100)y = np.sin(x)plt.plot(x, y);

9. 增加进度条

使用tqdm这个工具给循环语句增加个进度条可视化插件,显示循环体进行到那个阶段了这个功能在处理耗时比较大的循环的时候是非常必要的,效果如下:In [ ]

from tqdm import tqdmimport timefor i in tqdm(range(100)):    # 此处写业务逻辑    time.sleep(0.1)

10、其他技巧

numpy中设定显示的小数点位数: 使用np.set_printoptions方法pandas中显示所有的行和列

10.1 设置numpy显示精度

In [20]

# 默认情况下np会显示小数点后8位import numpy as npnp.random.rand(2,2)
array([[0.69865144, 0.55332125],       [0.97711927, 0.15941402]])

In [21]

# 设置成显示2位, 设置后全局有效import numpy as npnp.set_printoptions(precision=2)np.random.rand(2,2)
array([[0.45, 0.68],       [0.01, 0.2 ]])

10.2 pandas显示所有的列

在notebook中,当文件的行和列过多时,pandas默认不显示所有的信息。此时可以使用如下,命令显示:

显示所有行: pd.set_option(‘display.max_rows’, None)显示所有列:pd.set_option(‘display.max_columns’, None)In [24]

%cd /home/aistudio/import pandas as pd df_machine = pd.read_csv("machine.csv")df_machine
/home/aistudio
           Time  Step_Number wafer_names   fault_name   lotid  lot_id         11.9460            4  l29011.txm  calibration  lot011  lot011   1       13.0280            4  l29011.txm  calibration  lot011  lot011   2       14.0490            4  l29011.txm  calibration  lot011  lot011   3       15.1329            4  l29011.txm  calibration  lot011  lot011   4       16.1390            4  l29011.txm  calibration  lot011  lot011   ...         ...          ...         ...          ...     ...     ...   10765  104.6880            5  l33431.txm  calibration  lot061  lot061   10766  105.6870            5  l33431.txm  calibration  lot061  lot061   10767  106.7190            5  l33431.txm  calibration  lot061  lot061   10768  107.7500            5  l33431.txm  calibration  lot061  lot061   10769  108.7660            5  l33431.txm  calibration  lot061  lot061           recipe  151821807  151820951  151821601  151821602  151821603        recipe1          4        751        753        132          0   1      recipe1          4        751        753        134          0   2      recipe1          4        751        755        134          0   3      recipe1          4        751        753        133          0   4      recipe1          4        751        754        132          0   ...        ...        ...        ...        ...        ...        ...   10765  recipe1          5        752        753        131          0   10766  recipe1          5        752        754        134          0   10767  recipe1          5        752        754        132          0   10768  recipe1          5        752        754        132          0   10769  recipe1          5        751        752        132          0          151821604  151822195  151822196  151822197  151822198  151822215              626        100       1227       9408       9019       -362   1            620         99       1229       9431       9029      -1455   2            599        102       1221       9389       9114      -1056   3            586        100       1201       9445       9031       -587   4            587        102       1182       9456       9043       -124   ...          ...        ...        ...        ...        ...        ...   10765        538        102       1226       9365       8973       1161   10766        534        102       1227       9426       8934        606   10767        531        102       1227       9357       8937       1249   10768        534        100       1227       9434       8920       1155   10769        529        101       1226       9346       8990        799          151822252  151822253  151822254  151822255  151821769  151821770               26      16599      20028       -296      16848        360   1             26      16568      20042       -676      16796        350   2             25      16442      20146       -291      16512        344   3             25      16960      20148       -262      17020        352   4             25      16564      20226       -547      16440        346   ...          ...        ...        ...        ...        ...        ...   10765         28      16920      19110          7      16464        346   10766         28      16640      18982        134      16658        346   10767         28      16593      19056        -34      16714        348   10768         28      16522      19046        139      16560        353   10769         28      16815      19114         72      16630        355          151821788  151821789  151821797  0              0      27594         49  1              0      27440         49  2              0      27276         49  3              0      27330         50  4              0      27262         50  ...          ...        ...        ...  10765          0      28446         51  10766          0      28444         51  10767          0      28230         51  10768          0      28278         51  10769          0      28240         51  [10770 rows x 27 columns]

In [25]

# 这里举例显示所有的列,其他可以自行尝试pd.set_option('display.max_columns', None)df_machine.head()
      Time  Step_Number wafer_names   fault_name   lotid  lot_id   recipe    11.9460            4  l29011.txm  calibration  lot011  lot011  recipe1   1  13.0280            4  l29011.txm  calibration  lot011  lot011  recipe1   2  14.0490            4  l29011.txm  calibration  lot011  lot011  recipe1   3  15.1329            4  l29011.txm  calibration  lot011  lot011  recipe1   4  16.1390            4  l29011.txm  calibration  lot011  lot011  recipe1      151821807  151820951  151821601  151821602  151821603  151821604            4        751        753        132          0        626   1          4        751        753        134          0        620   2          4        751        755        134          0        599   3          4        751        753        133          0        586   4          4        751        754        132          0        587      151822195  151822196  151822197  151822198  151822215  151822252          100       1227       9408       9019       -362         26   1         99       1229       9431       9029      -1455         26   2        102       1221       9389       9114      -1056         25   3        100       1201       9445       9031       -587         25   4        102       1182       9456       9043       -124         25      151822253  151822254  151822255  151821769  151821770  151821788        16599      20028       -296      16848        360          0   1      16568      20042       -676      16796        350          0   2      16442      20146       -291      16512        344          0   3      16960      20148       -262      17020        352          0   4      16564      20226       -547      16440        346          0      151821789  151821797  0      27594         49  1      27440         49  2      27276         49  3      27330         50  4      27262         50

In [ ]


以上就是N多技巧让你的Notebook起飞的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/319917.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年11月5日 09:27:37
下一篇 2025年11月5日 09:29:16

相关推荐

发表回复

登录后才能评论
关注微信