Jupyter notebook(Jupyter lab)是aistudio实训平台默认的开发工具,同时也数据科学从业者最常使用的工具。相比vs code, pycharm等IDE(集成开发环境), notebook足够简单,可以让你把所有的精力放在数据挖掘探索和算法开发验证上。其代码结构是以单元格来组织和分割,一个单元格可以有一行或者若干行代码,完成一个单元格后可以立马运行查看中间结果并以及可视化,这种方式的方式的优点显而易见:
代码组织和运行方式非常符合数据科学工作者的思维习惯。可以一边做,然后根据运行的中间结果在思考下一步的操作。面对一个复杂问题时,往往需要多次分步骤尝试。而在IDE里面,每次要想知道中间结果需要打断点调试,每次都需要从头运行,没有notebook方便
配合markdown笔记,可以做出媲美教科书的效果
因为其易用和可扩展,现在很多大学都用来作上课的课件工具。另外你写完的notebook也可以发给别人(.ipynb文件),在Anaconda中可以直接运行,配合markdown可以完美再现你的思维过程!
本项目为AI全栈课程《Python从小白到精通》的配套补充,期望大家熟悉基本notebook开发环境后,掌握一些高阶的Notebook使用技巧,提高学习和工作效率。主要包括以下内容:
同时可以点击帮助-》快捷键列表查看所有内置的快捷键
Notebook正常情况下,只有最后一行的代码的结果会输出,
如下我们读取一个文件到df中,写了df.shape, df.columns和df.head,只有最后一行的df.head结果会输出,例如:
import pandas as pd
df = pd.read_csv('demo.csv')
df.shape # 正常情况下,因为此代码不是该单元格最后一行,此结果不会输出
df.columns # 正常情况下,因为此代码不是该单元格最后一行,此结果不会输出
df.head() # 只会输出该代码的结果
EQP_ID | MODEL_Type | CURR_TEMPERATURE | |
---|---|---|---|
0 | RS4 | QMO_2DCP1 | 32.9 |
1 | RS4 | QMO_2DCP1 | 32.4 |
2 | RS4 | QMO_2DCP1 | 33.0 |
3 | RS4 | QMO_2DCP1 | 32.9 |
4 | RS4 | QMO_2DCP1 | 32.9 |
# 如果想把其他有结果也输出,只要增加一个单元格运行下面两句代码即可:
"""
interactiveshell import InteractiveShell
InteractiveShell.ast_node_interactivity = "all"
"""
'interactiveshell import InteractiveShell nInteractiveShell.ast_node_interactivity = "all"n'
# 尝试一个单元格多个输出
interactiveshell import InteractiveShell
InteractiveShell.ast_node_interactivity = "all"df.head()
df.tail()
df.shape
df['EQP_ID'].value_counts()
EQP_ID | MODEL_Type | CURR_TEMPERATURE | |
---|---|---|---|
0 | RS4 | QMO_2DCP1 | 32.9 |
1 | RS4 | QMO_2DCP1 | 32.4 |
2 | RS4 | QMO_2DCP1 | 33.0 |
3 | RS4 | QMO_2DCP1 | 32.9 |
4 | RS4 | QMO_2DCP1 | 32.9 |
EQP_ID | MODEL_Type | CURR_TEMPERATURE | |
---|---|---|---|
377 | A6L | QMO_2DCP1 | 174.2 |
378 | A6L | QMO_2DCP1 | 171.6 |
379 | A6L | QMO_2DCP1 | 169.2 |
380 | A6L | QMO_2DCP1 | 166.8 |
381 | A6L | QMO_2DCP1 | 164.5 |
(382, 3)A6L 132
RS6 111
Q5L 98
RS4 41
Name: EQP_ID, dtype: int64
# 先使用cat命令查看,在notebook中执行只要在命令前加!即可
print("demo脚本内容如下:")
!cat demo.py
demo脚本内容如下:
print("this is a demo")
print('------' * 10)
import os
print('当前的目录为:')
wd())
print('------' * 10)
print('当前目录下的文件:')
print(os.listdir())
print('------' * 10)
# 使用!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']
------------------------------------------------------------
!pwd # 查看当前目录
!ls # 显示当前目录下得文件和目录
/home/aistudio
data demo.csv demo.py machine.csv main.ipynb
# 直接在单元格内使用pip命令安装相关的库,不需要切换到终端去安装
!pip install pandas
通过上面得介绍可以发现在notebook中可以方便的执行shell命令,熟练使用可以省去和终端来回切换,提高工作效率。
下面介绍一些在开发中高频使用的shell命令。
这个有点特殊,在指令cd前加“%”,而不是“!”号。
这点需要注意
!pwd # 显示当前目录# 切换目录,可以使用相对路径或绝对路径。推荐使用绝对路径
%cd /home/aistudio/work
!pwd # 显示切换之后的目录
/home/aistudio
[Errno 2] No such file or directory: '/home/aistudio/work'
/home/aistudio
/home/aistudio
在终端中,重定向即将指令原本在显示在终端中的输出追加或者输出到指定文件中进行持久化,便于后面的分析。
这个在一些日志或者输出信息比较多得时候非常有用。重定向有两种操作符:
# 查看当前系统进程信息
!ps aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
aistudio 1 0.0 0.0 4528 728 ? Ss 10:07 0:00 /bin/sh -c /o
aistudio 7 0.0 0.0 13312 3352 ? S 10:07 0:00 /bin/bash /op
root 33 0.0 0.0 65536 3152 ? Ss 10:07 0:00 /usr/sbin/ssh
aistudio 44 0.0 0.0 13324 3428 ? S 10:07 0:00 bash /opt/con
aistudio 46 1.0 0.0 41645240 147244 ? Sl 10:07 2:40 /opt/conda/en
aistudio 100 0.0 0.0 4528 788 ? S 10:07 0:00 /bin/sh -c pl
aistudio 101 1.7 0.0 5758164 89156 ? Sl 10:07 4:17 /opt/conda/en
aistudio 130 0.0 0.0 26236 11184 ? S 10:07 0:00 /opt/conda/en
aistudio 131 0.0 0.0 225112 47484 ? Sl 10:07 0:01 /opt/conda/en
aistudio 138 1.2 0.0 152228 48060 ? Sl 10:07 3:06 /opt/conda/en
aistudio 142 1.2 0.0 152228 48120 ? Sl 10:07 3:07 /opt/conda/en
aistudio 264 1.7 0.0 3132680 224776 ? Sl 10:08 4:18 /opt/conda/en
aistudio 269 0.2 0.1 658804 345120 ? Sl 10:08 0:40 /opt/conda/en
aistudio 271 0.0 0.0 52864 26952 ? S 10:08 0:01 /opt/conda/en
aistudio 273 0.0 0.0 42996 24368 ? S 10:08 0:00 /opt/conda/en
aistudio 275 0.0 0.0 171708 49880 ? Sl 10:08 0:06 /opt/conda/en
aistudio 26729 0.0 0.0 42280 24256 ? S 14:02 0:00 /opt/conda/en
aistudio 26787 0.1 0.0 2889464 93768 ? Sl 14:02 0:01 /opt/conda/en
aistudio 27558 0.6 0.0 3098712 103336 ? Ssl 14:07 0:02 /opt/conda/en
aistudio 28175 0.0 0.0 37852 3404 pts/0 Rs+ 14:13 0:00 ps aux
%cd /home/aistudio/
!ps aux >
/home/aistudio
可以看到使用重定向命令后,屏幕不在有输出。相应的在/home/aistudio/目录下回出现一个文件,内容和上面得一样
主要有cat, head, tail等命令。这些在深度学习项目中查看一些标注文件会用得比较多。通过查看一个标注文件得前5行可以大概了解文件和标签的结构。
这里举例使用head查看一个文件得前n行。其他命令可以自行尝试。
%cd /home/aistudio/
!head -
/home/aistudio
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
aistudio 1 0.0 0.0 4528 728 ? Ss 10:07 0:00 /bin/sh -c /opt/conda/include/container-start.sh
aistudio 7 0.0 0.0 13312 3352 ? S 10:07 0:00 /bin/bash /opt/conda/include/container-start.sh
root 33 0.0 0.0 65536 3152 ? Ss 10:07 0:00 /usr/sbin/sshd
aistudio 44 0.0 0.0 13324 3428 ? S 10:07 0:00 bash /opt/conda/envs/webide/bin/kernel_seperation_start.sh
可以指定 -L n用于显示目录的层级。
另外还有cp, mv, rm等文件的拷贝删除等操作。这里不在赘述。
!tree -L 2 /home/aistudio/
/home/aistudio/
├── data
├── demo.csv
├── demo.py
├── machine.csv
├── main.ipynb
└── 1 directory, 5 files
在MATLAB中,直接有一个窗口可以显示当前所有的变量及其相应的值,这个功能非常强大,Anaconda中Spyder也有类似的功能。
其实notebook也可以,直接使用%who和%whos魔法命令即可。其中:
# 先创建一些变量
a, b, c = 10, 20.5, 'zhangsan'
d = {'Name' : 'PaddlePaddle', 'Age': 18}
e = ['cat', 'dog']
# 显示当前环境中的所有变量
%who
InteractiveShell a b c d df e pd
# 显示当前环境中的所有变量、类型和值
%whos
Variable Type Data/Info
---------------------------------------------
InteractiveShell MetaHasTraits <class inte<...>eshell.InteractiveShell'>
a int 10
b float 20.5
c str zhangsan
d dict n=2
df DataFrame EQP_ID MODEL_Type CU<...>nn[382 rows x 3 columns]
e list n=2
pd module <module 'pandas' from '/o<...>ages/pandas/__init__.py'>
这个比较常用。主要有time,和timeit两个魔法命令,在结合行模式和单元格模式就有4种用法,具体如下:
所以time只统计执行一次的时间;而timeit会反复执行很多次统计平均时间,这个比只执行一次要准确一点
%time [i for i in range(100) if i%7 == 0]
CPU times: user 0 ns, sys: 10 µs, total: 10 µs
Wall time: 14.1 µs[0, 7, 14, 21, 28, 35, 42, 49, 56, 63, 70, 77, 84, 91, 98]
%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)
# 先定义两个二维数组
import numpy as np
m = [[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
%%timeit
def 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 res
array_add_forloop()
%%timeit
def array_add_matrix():return m_+ n_array_add_matrix()
在Notebook中,matplotlib是最常用的绘图库,并且Notebook中有相应的魔法命令用于辅助绘图功能:
下面举例说明
# %matplotlib inline省略plt.show, 可以加在最前面的单元格,全局有效
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inlinex = np.linspace(-10,10,100)
y = np.sin(x)
plt.plot(x, y)
# 加上";"抑制其他输出
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inlinex = np.linspace(-10,10,100)
y = np.sin(x)
plt.plot(x, y);
from tqdm import tqdm
import time
for i in tqdm(range(100)):# 此处写业务逻辑time.sleep(0.1)
# 默认情况下np会显示小数点后8位
import numpy as np
np.random.rand(2,2)
array([[0.69865144, 0.55332125],[0.97711927, 0.15941402]])
# 设置成显示2位, 设置后全局有效
import numpy as np
np.set_printoptions(precision=2)
np.random.rand(2,2)
array([[0.45, 0.68],[0.01, 0.2 ]])
在notebook中,当文件的行和列过多时,pandas默认不显示所有的信息。此时可以使用如下,命令显示:
%cd /home/aistudio/
import pandas as pd
df_machine = pd.read_csv("machine.csv")
df_machine
/home/aistudio
df_machine = pd.read_csv(“machine.csv”)
df_machine
/home/aistudio<div>
<style scoped>.dataframe tbody tr th:only-of-type {vertical-align: middle;}.dataframe tbody tr th {vertical-align: top;}.dataframe thead th {text-align: right;}
</style>
<table border="1" class="dataframe"><thead><tr style="text-align: right;"><th></th><th>Time</th><th>Step_Number</th><th>wafer_names</th><th>fault_name</th><th>lotid</th><th>lot_id</th><th>recipe</th><th>151821807</th><th>151820951</th><th>151821601</th><th>151821602</th><th>151821603</th><th>151821604</th><th>151822195</th><th>151822196</th><th>151822197</th><th>151822198</th><th>151822215</th><th>151822252</th><th>151822253</th><th>151822254</th><th>151822255</th><th>151821769</th><th>151821770</th><th>151821788</th><th>151821789</th><th>151821797</th></tr></thead><tbody><tr><th>0</th><td>11.9460</td><td>4</td><td&</td><td>calibration</td><td>lot011</td><td>lot011</td><td>recipe1</td><td>4</td><td>751</td><td>753</td><td>132</td><td>0</td><td>626</td><td>100</td><td>1227</td><td>9408</td><td>9019</td><td>-362</td><td>26</td><td>16599</td><td>20028</td><td>-296</td><td>16848</td><td>360</td><td>0</td><td>27594</td><td>49</td></tr><tr><th>1</th><td>13.0280</td><td>4</td><td&</td><td>calibration</td><td>lot011</td><td>lot011</td><td>recipe1</td><td>4</td><td>751</td><td>753</td><td>134</td><td>0</td><td>620</td><td>99</td><td>1229</td><td>9431</td><td>9029</td><td>-1455</td><td>26</td><td>16568</td><td>20042</td><td>-676</td><td>16796</td><td>350</td><td>0</td><td>27440</td><td>49</td></tr><tr><th>2</th><td>14.0490</td><td>4</td><td&</td><td>calibration</td><td>lot011</td><td>lot011</td><td>recipe1</td><td>4</td><td>751</td><td>755</td><td>134</td><td>0</td><td>599</td><td>102</td><td>1221</td><td>9389</td><td>9114</td><td>-1056</td><td>25</td><td>16442</td><td>20146</td><td>-291</td><td>16512</td><td>344</td><td>0</td><td>27276</td><td>49</td></tr><tr><th>3</th><td>15.1329</td><td>4</td><td&</td><td>calibration</td><td>lot011</td><td>lot011</td><td>recipe1</td><td>4</td><td>751</td><td>753</td><td>133</td><td>0</td><td>586</td><td>100</td><td>1201</td><td>9445</td><td>9031</td><td>-587</td><td>25</td><td>16960</td><td>20148</td><td>-262</td><td>17020</td><td>352</td><td>0</td><td>27330</td><td>50</td></tr><tr><th>4</th><td>16.1390</td><td>4</td><td&</td><td>calibration</td><td>lot011</td><td>lot011</td><td>recipe1</td><td>4</td><td>751</td><td>754</td><td>132</td><td>0</td><td>587</td><td>102</td><td>1182</td><td>9456</td><td>9043</td><td>-124</td><td>25</td><td>16564</td><td>20226</td><td>-547</td><td>16440</td><td>346</td><td>0</td><td>27262</td><td>50</td></tr><tr><th>...</th><td>...</td><td>...</td><td>...</td><td>...</td><td>...</td><td>...</td><td>...</td><td>...</td><td>...</td><td>...</td><td>...</td><td>...</td><td>...</td><td>...</td><td>...</td><td>...</td><td>...</td><td>...</td><td>...</td><td>...</td><td>...</td><td>...</td><td>...</td><td>...</td><td>...</td><td>...</td><td>...</td></tr><tr><th>10765</th><td>104.6880</td><td>5</td><td&</td><td>calibration</td><td>lot061</td><td>lot061</td><td>recipe1</td><td>5</td><td>752</td><td>753</td><td>131</td><td>0</td><td>538</td><td>102</td><td>1226</td><td>9365</td><td>8973</td><td>1161</td><td>28</td><td>16920</td><td>19110</td><td>7</td><td>16464</td><td>346</td><td>0</td><td>28446</td><td>51</td></tr><tr><th>10766</th><td>105.6870</td><td>5</td><td&</td><td>calibration</td><td>lot061</td><td>lot061</td><td>recipe1</td><td>5</td><td>752</td><td>754</td><td>134</td><td>0</td><td>534</td><td>102</td><td>1227</td><td>9426</td><td>8934</td><td>606</td><td>28</td><td>16640</td><td>18982</td><td>134</td><td>16658</td><td>346</td><td>0</td><td>28444</td><td>51</td></tr><tr><th>10767</th><td>106.7190</td><td>5</td><td&</td><td>calibration</td><td>lot061</td><td>lot061</td><td>recipe1</td><td>5</td><td>752</td><td>754</td><td>132</td><td>0</td><td>531</td><td>102</td><td>1227</td><td>9357</td><td>8937</td><td>1249</td><td>28</td><td>16593</td><td>19056</td><td>-34</td><td>16714</td><td>348</td><td>0</td><td>28230</td><td>51</td></tr><tr><th>10768</th><td>107.7500</td><td>5</td><td&</td><td>calibration</td><td>lot061</td><td>lot061</td><td>recipe1</td><td>5</td><td>752</td><td>754</td><td>132</td><td>0</td><td>534</td><td>100</td><td>1227</td><td>9434</td><td>8920</td><td>1155</td><td>28</td><td>16522</td><td>19046</td><td>139</td><td>16560</td><td>353</td><td>0</td><td>28278</td><td>51</td></tr><tr><th>10769</th><td>108.7660</td><td>5</td><td&</td><td>calibration</td><td>lot061</td><td>lot061</td><td>recipe1</td><td>5</td><td>751</td><td>752</td><td>132</td><td>0</td><td>529</td><td>101</td><td>1226</td><td>9346</td><td>8990</td><td>799</td><td>28</td><td>16815</td><td>19114</td><td>72</td><td>16630</td><td>355</td><td>0</td><td>28240</td><td>51</td></tr></tbody>
</table>
<p>10770 rows × 27 columns</p>
</div>```python
# 这里举例显示所有的列,其他可以自行尝试
pd.set_option('display.max_columns', None)
df_machine.head()
Time | Step_Number | wafer_names | fault_name | lotid | lot_id | recipe | 151821807 | 151820951 | 151821601 | 151821602 | 151821603 | 151821604 | 151822195 | 151822196 | 151822197 | 151822198 | 151822215 | 151822252 | 151822253 | 151822254 | 151822255 | 151821769 | 151821770 | 151821788 | 151821789 | 151821797 | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | 11.9460 | 4 | <calibration | lot011 | lot011 | recipe1 | 4 | 751 | 753 | 132 | 0 | 626 | 100 | 1227 | 9408 | 9019 | -362 | 26 | 16599 | 20028 | -296 | 16848 | 360 | 0 | 27594 | 49 | |
1 | 13.0280 | 4 | <calibration | lot011 | lot011 | recipe1 | 4 | 751 | 753 | 134 | 0 | 620 | 99 | 1229 | 9431 | 9029 | -1455 | 26 | 16568 | 20042 | -676 | 16796 | 350 | 0 | 27440 | 49 | |
2 | 14.0490 | 4 | <calibration | lot011 | lot011 | recipe1 | 4 | 751 | 755 | 134 | 0 | 599 | 102 | 1221 | 9389 | 9114 | -1056 | 25 | 16442 | 20146 | -291 | 16512 | 344 | 0 | 27276 | 49 | |
3 | 15.1329 | 4 | <calibration | lot011 | lot011 | recipe1 | 4 | 751 | 753 | 133 | 0 | 586 | 100 | 1201 | 9445 | 9031 | -587 | 25 | 16960 | 20148 | -262 | 17020 | 352 | 0 | 27330 | 50 | |
4 | 16.1390 | 4 | <calibration | lot011 | lot011 | recipe1 | 4 | 751 | 754 | 132 | 0 | 587 | 102 | 1182 | 9456 | 9043 | -124 | 25 | 16564 | 20226 | -547 | 16440 | 346 | 0 | 27262 | 50 |
本文发布于:2024-01-31 03:26:47,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/170664280825031.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |