Jupyternotebook使用窍门

更新时间:2023-05-31 20:16:13 阅读: 评论:0

Jupyternotebook使⽤窍门
Jupyter notebook使⽤窍门
滚动条滑动窗⼝
the rowrangle解决jupyter notebook在输出⾏数太⼤时出现滚动条滑动窗⼝⽽不⼀次性显⽰全部输出
暂时发现有两种⽅式:
1.⿏标点击⽅式: 先选中代码单元; 然后点击菜单栏的Cell;然后选择下图第⼆个矩形框中的Currennt Outputs;最后点击toggle即可
2. 新建⼀个cell, 然后输⼊如下内容, 即可使得当前cell下⾯的所有cell可显⽰全部输出
当前cell上⾯的cell会不会也显⽰全部输出不太清楚, 可将这个cell作为第1个cell
下⾯的两种⽅式都是可以达到同样效果的, 只是我⽐较喜欢第2个
%%javascript
//IPython.OutputArea.auto_scroll_threshold = 9999; //设置输出>9999时才出现滑动窗⼝
IPython.OutputArea.prototype._should_scroll = function(){return fal} // 设置不出现滑动窗⼝ true, auto, fal
设置显⽰最⼤⾏和列及浮点数
upyter notebook中设置显⽰最⼤⾏和列及浮点数,在head观察⾏和列时不会省略
jupyter notebook中df.head(50)经常会因为数据太⼤,⾏列⾃动省略,观察数据时不爽!
pd.t_option(‘max_columns’,1000)
pd.t_option(‘max_row’,300)
pd.t_option(‘display.float_format’, lambda x: ‘%.5f’ % x)
设置显⽰代码⾏号
Jupyter Notebook 默认状态下不会在代码左端显⽰⾏号,这就导致我们遇到报错时,⽆法正常调试。
解决⽅案:
点击View-->点击Toggle Line Numbers
就完成啦。
安装主题
安装主题
pip install jupyterthemes
主题列表
jt -l
使⽤主题
jt -t oceans16 -f fira -fs 13 -cellw 90% -ofs 11 -dfs 11 -T -N
变量的完美显⽰
有⼀点已经众所周知。把变量名称或没有定义输出结果的语句放在cell的最后⼀⾏,⽆需print语句,Jupyter也会显⽰变量值。当使⽤Pandas DataFrames时这⼀点尤其有⽤,因为输出结果为整齐的表格。
鲜为⼈知的是,你可以通过修改内核选项ast_note_interactivity,使得Jupyter对独占⼀⾏的所有变量或者语句都⾃动显⽰,这样你就可以马上看到多个语句的运⾏结果了。
In [1]: interactiveshell import InteractiveShell
InteractiveShell.ast_node_interactivity = "all"
In [2]: from pydatat import data
quakes = data('quakes')
quakes.head()
quakes.tail()
Out[2]:
lat long    depth  mag stations
1  -20.4
2  181.62  562 4.8 41
2  -20.62  181.0
3  650 4.2 15
3  -26.00  184.10  42  5.
4 43
4  -17.97  181.66  626 4.1 19
5  -20.42  181.9
6  649 4.0 11
Out[2]:
lat long    depth  mag stations
996 -25.93  179.54  470 4.4 22
997 -12.28  167.06  248 4.7 35
998 -20.13  184.20  244 4.5 34
999 -17.40  187.80  40  4.5 14
1000    -21.59  170.56  165 6.0 119
如果你想在各种情形下(Notebook和Console)Jupyter都同样处理,⽤下⾯的⼏⾏简单的命令创建⽂件~/.ipython/profile_default/ipython_config.py即可实现:
c = get_config()
Run all nodes interactively
c.InteractiveShell.ast_node_interactivity = "all"
轻松链接到⽂档
在Help 菜单下,你可以找到常见库的在线⽂档链接,包括Numpy,Pandas,Scipy和Matplotlib等。
另外,在库、⽅法或变量的前⾯打上?,即可打开相关语法的帮助⽂档。
In [3]: ?place()
Docstring:
Return a copy of S with all occurrences of substring
old replaced by new. If the optional argument count is
given, only the first count occurrences are replaced.
Type: method_descriptor
在notebok⾥作图
matplotlib (事实标准)(可通过%matplotlib inline 激活。
%matplotlib notebook 提供交互性操作,但可能会有点慢,因为响应是在服务器端完成的。
mpld3(提供matplotlib代码的替代性呈现(通过d3),虽然不完整,但很好。
bokeh(⽣成可交互图像的更好选择。
plot.ly(可以⽣成⾮常好的图,可惜是付费服务。
末句函数不输出
有时候不让末句的函数输出结果⽐较⽅便,⽐如在作图的时候,此时,只需在该函数末尾加上⼀个分号即可。运⾏Shell命令
在notebook内部运⾏shell命令很简单,这样你就可以看到你的⼯作⽂件夹⾥有哪些数据集。
In [7]: !ls *.csv
⽤LaTex写公式
当你在⼀个Markdown单元格⾥写LaTex时,它将⽤MathJax呈现公式:如
P(A∣B)=(P(B∣A),P(A))/P(B)
会变成
在notebook内⽤不同的内核运⾏代码
如果你想要,其实可以把不同内核的代码结合到⼀个notebook⾥运⾏。
只需在每个单元格的起始,⽤Jupyter magics调⽤kernal的名称:
%%bash
%%HTML
%%python2
%%python3
%%ruby
%%perl
In [6]: %%bash
for i in {1..5}
do
echo "i is $i"
done
i is 1
i is 2
i is 3
i is 4
i is 5
给Jupyter安装其他的内核
Jupyter的优良性能之⼀是可以运⾏不同语⾔的内核。下⾯以运⾏R内核为例说明:
简单的⽅法:通过Anaconda安装R内核
conda install -c r r-esntials
稍微⿇烦的⽅法:⼿动安装R内核
如果你不是⽤Anaconda,过程会有点复杂,⾸先,你需要从CRAN安装R。
之后,启动R控制台,运⾏下⾯的语句:
install.packages(c('repr', 'IRdisplay', 'crayon', 'pbdZMQ', 'devtools'))
devtools::install_github('IRkernel/IRkernel')
IRkernel::installspec() # to register the kernel in the current R installation
在同⼀个notebook⾥运⾏R和Python
要这么做,最好的⽅法事安装rpy2(需要⼀个可以⼯作的R),⽤pip操作很简单:
pip install rpy2
然后,就可以同时使⽤两种语⾔了,甚⾄变量也可以在⼆者之间公⽤:
In [1]: %load_ext rpy2.ipython
In [2]: %R require(ggplot2)
Out[2]: array([1], dtype=int32)
In [3]: import pandas as pd
df = pd.DataFrame({
'Letter': ['a', 'a', 'a', 'b', 'b', 'b', 'c', 'c', 'c'],
'X': [4, 3, 5, 2, 1, 7, 7, 5, 9],
'Y': [0, 4, 3, 6, 7, 10, 11, 9, 13],
'Z': [1, 2, 3, 1, 2, 3, 1, 2, 3]
})
In [4]: %%R -i df
ggplot(data = df) + geom_point(aes(x = X, y= Y, color = Letter, size = Z))
⽤其他语⾔写函数
有时候numpy的速度有点慢,我想写⼀些更快的代码。
原则上,你可以在动态库⾥编译函数,⽤python来封装…
但是如果这个⽆聊的过程不⽤⾃⼰⼲,岂不更好?
你可以在cython或fortran⾥写函数,然后在python代码⾥直接调⽤。
⾸先,你要先安装:
!pip install cython fortran-magic
In [ ]: %load_ext Cython
In [ ]: %%cython
def myltiply_by_2(float x):
return 2.0 * x
In [ ]: myltiply_by_2(23.)
n [ ]: %load_ext fortranmagic
In [ ]: %%fortran
subroutine compute_fortran(x, y, z)
real, intent(in) :: x( , y(
real, intent(out) :: z(size(x, 1))
z = sin(x + y)
end subroutine compute_fortran
In [ ]: compute_fortran([1, 2, 3], [4, 5, 6])
⽀持多指针
Jupyter⽀持多个指针同步编辑,类似Sublime Text编辑器。按下Alt键并拖拽⿏标即可实现。
Jupyter外界拓展
从Jupyter notebook创建演⽰稿
Jupyter输出系统
Notebook本⾝以HTML的形式显⽰,单元格输出也可以是HTML形式的,所以你可以输出任何东西:视频/⾳频/图像。
这个例⼦是浏览我所有的图⽚,并显⽰前五张图的缩略图。
In [12]: import os
from IPython.display import display, Image
names = [f for f in os.listdir('../images/ml_demonstrations/') dswith('.png')]
for name in names[:5]:
display(Image('../images/ml_demonstrations/' + name, width=100))
我们也可以⽤bash命令创建⼀个相同的列表,因为magics和bash运⾏函数后返回的是python 变量:
In [10]: names = !ls ../images/ml_demonstrations/*.png
names[:5]
Out[10]: ['../images/ml_demonstrations/colah_embeddings.png',
'../images/ml_demonstrations/convnetjs.png',
'../images/ml_demonstrations/decision_tree.png',
'../images/ml_demonstrations/decision_tree_in_cour.png',
'../images/ml_demonstrations/dream_mnist.png']
⼤数据分析
分享notebook
分享notebook最⽅便的⽅法是使⽤notebook⽂件(.ipynb),但是对那些不使⽤notebook的⼈,你还有这些选择:
通过File > Download as > HTML 菜单转换到html⽂件。
Jupyter Notebook 的快捷键
⾼⼿们都知道,快捷键可以节省很多时间。Jupyter在顶部菜单提供了⼀个快捷键列表:Help > Keyboard Shortcuts 。每次更新Jupyter的时候,⼀定要看看这个列表,因为不断地有新的快捷键加进来。另外⼀个⽅法是使⽤Cmd + Shift + P (  Linux 和命令模式下的快键键
Enter : 转⼊编辑模式 Shift-Enter : 运⾏本单元,选中下个单元
Ctrl-Enter : 运⾏本单元
Alt-Enter : 运⾏本单元,在其下插⼊新单元
Y : 单元转⼊代码状态
M :单元转⼊markdown状态
R : 单元转⼊raw状态
1 : 设定 1 级标题
2 : 设定 2 级标题
3 : 设定 3 级标题
4 : 设定 4 级标题
5 : 设定 5 级标题
6 : 设定 6 级标题
Up : 选中上⽅单元
K : 选中上⽅单元
Down : 选中下⽅单元
J : 选中下⽅单元
Shift-K : 扩⼤选中上⽅单元
Shift-J : 扩⼤选中下⽅单元
A : 在上⽅插⼊新单元
B : 在下⽅插⼊新单元
X : 剪切选中的单元
C : 复制选中的单元
Shift-V : 粘贴到上⽅单元
V : 粘贴到下⽅单元
Z : 恢复删除的最后⼀个单元
D,D : 删除选中的单元
Shift-M : 合并选中的单元
Ctrl-S : ⽂件存盘
S : ⽂件存盘
L : 转换⾏号
O : 转换输出
Shift-O : 转换输出滚动
Esc : 关闭页⾯
unfoldQ : 关闭页⾯
H : 显⽰快捷键帮助
I,I : 中断Notebook内核
0,0 : 重启Notebook内核
Shift : 忽略
Shift-Space : 向上滚动
Space : 向下滚动
编辑模式 ( Enter 键启动)
编辑模式时边框为绿⾊,此时允许⽤户编辑⽂档,此模式下的快捷键有(常⽤快捷键标红强调):
Esc : 进⼊命令模式chrismas in my heart
Shift-Enter : 运⾏本单元,选中下⼀单元
Ctrl-Enter : 运⾏本单元
Alt-Enter : 运⾏本单元,在下⾯插⼊⼀单元
Tab : 代码补全或缩进
Shift-Tab : 提⽰
Ctrl-] : 缩进
Ctrl-[ : 解除缩进
Ctrl-A : 全选
Ctrl-Z : 复原
Ctrl-Shift-Z : 再做
Ctrl-Y : 再做
Ctrl-Home : 跳到单元开头
Ctrl-Up : 跳到单元开头
Ctrl-End : 跳到单元末尾
Ctrl-Down : 跳到单元末尾
Ctrl-Left : 跳到左边⼀个字⾸
Ctrl-Right : 跳到右边⼀个字⾸
Ctrl-Backspace : 删除前⾯⼀个
Ctrl-Delete : 删除后⾯⼀个字
Ctrl-M : 进⼊命令模式
Ctrl-Shift-- : 分割单元
Ctrl-Shift-Subtract : 分割单元
Ctrl-S : ⽂件存盘
Shift : 忽略
Up : 光标上移或转⼊上⼀单元
Down :光标下移或转⼊下⼀单元
jupyter notebook最最常⽤的快捷键
shift+Tab ⼯具提⽰
推荐指数:☆☆☆☆☆☆(6颗星)
类似在vscode中使⽤ctrl+⿏标左键,可以查看进⼊函数内部,查看参数列表、⽰例等等。
与此类似,在notebook中使⽤shift+Tab可以显⽰⼯具提⽰,简直就是福⾳。
⽤法:⿏标点击到要看的函数上,shift+tab
举个栗⼦:
matplotlib.pyplot中绘制直⽅图,函数hist()参数很多,功能很多。
⽤到的时候,不免忘记了有哪些功能、各个参数代表什么意思.
density不是密度吗,密度和直⽅图有什么关系?
参数解释:
density : bool, optional. If True, the first element of the return tuple will be the counts normalized to form a probability density, i.e.,the area (or integral) under the histogram will sum to 1.This is achieved by dividing the count by the number of obrvations times the bin width and not dividing by the total number of obrvations. If stacked is also True, the sum of the histograms is normalized to 1.
Default is None for both normed and density. If either is t, then that value will be ud. If neither are t, then the args will be treated as Fal.If both density and normed are t an error is raid.
mdl
这解释我在vscode并没有看到(估计还是没⽤到应该的快捷键),总之,这⾥的解释很到位,超级赞!
按esc进⼊命令模式,再按m(简写esc,c)
推荐指数:☆☆☆☆☆(5颗星)
再按m,当前单元格(官⽅翻译叫做代码块)转换为markdown格式。
按esc进⼊命令模式,按y,当前单元格转换为代码。
m和markdown是⾸字母关系,y和code有什么关系呢,为什么⽤y,不⽤c,实际上c已经名花有主了
官⽅提⽰,以及众多博客,都是给的⼤写M,这⾥不区分⼤⼩写…
通⽤规则:
esc,c :先按esc,再按c
esc+c :⼀起按
ctrl+z 后退⼀步
推荐指数:☆☆☆☆☆(5颗星)
后退⼀步,和vscode⼀样。
不管在什么编辑模式下,都使⽤
alt+enter 运⾏单元格
Esc + F 在代码中查找、替换,忽略输出。
Esc + O 在cell和输出结果间切换。
选择多个cell:
Shift + J 或 Shift + Down 选择下⼀个cell。
Shift + K 或 Shift + Up 选择上⼀个cell。
⼀旦选定cell,可以批量删除/拷贝/剪切/粘贴/运⾏。当你需要移动notebook的⼀部分时这个很有⽤。
Shift + M 合并cell.
推荐指数:☆☆☆☆☆☆(6颗星)
不⽤说了,你想得到的功能都在这⾥
失序
当重复⽤了⼏次相同的操作,觉得⿇烦的时候,找⼀找看看吧
Jupyter Magic命令
Magic-%env:设置环境变量
不必重启jupyter服务器进程,也可以管理notebook的环境变量。有的库(⽐如theano)使⽤环境变量来控制其⾏为,%env是最⽅便的途径。
In [55]: # Running %env without any arguments
trafficlights# lists all environment variables
# The line below ts the environment
马克笔手绘教程
# variable OMP_NUM_THREADS
%env OMP_NUM_THREADS=4
env: OMP_NUM_THREADS=4
Magic-%run:运⾏python代码
%run 可以运⾏.py格式的python代码——这是众所周知的。不那么为⼈知晓的事实是它也可以运⾏其它的jupyter notebook⽂件,这⼀点很有⽤。注意:使⽤%run 与导⼊⼀个python模块是不同的。
In [56]: # this will execute and show the output from
# all code cells of the specified notebook
%run ./two-histograms.ipynb
Magic-%load:从外部脚本中.py代码
该操作⽤外部脚本替换当前cell。可以使⽤你的电脑中的⼀个⽂件作为来源,也可以使⽤URL。
In [ ]: # Before Running
%load ./hello_world.py
In [61]: # After Running
# %load ./hello_world.py
if name == "main":
print("Hello World!")
Magic-%store:在notebook⽂件之间传递变量
%store 命令可以在两个notebook⽂件之间传递变量。
In [62]: data = 'this is the string I want to pass to different notebook'
%store data
del data # This has deleted the variable
---------------------------------------------------
Stored 'data' (str)
现在,在⼀个新的notebook⽂档⾥……
In [1]: %store -r data
print(data)
this is the string I want to pass to different notebook
Magic-%who:列出所有的全局变量
不加任何参数, %who 命令可以列出所有的全局变量。加上参数 str 将只列出字符串型的全局变量。
In [1]: one = "for the money"
two = "for the show"
three = "to get ready now go cat go"
%who str
one three two
Magic-计时
有两种⽤于计时的jupyter magic命令: %%time 和 %timeit.当你有⼀些很耗时的代码,想要查清楚问题出在哪时,这两个命令⾮常给⼒。
仔细体会下我的描述哦。
十二月%%time 会告诉你cell内代码的单次运⾏时间信息。
In [4]: %%time
import time
for _ in range(1000):
time.sleep(0.01)# sleep for 0.01 conds
CPU times: ur 21.5 ms, sys: 14.8 ms, total: 36.3 ms
elizabeth taylor
Wall time: 11.6 s
%%timeit 使⽤了Python的 timeit 模块,该模块运⾏某语句100,000次(默认值),然后提供最快的3次的平均值作为结果。
In [3]: import numpy
%timeit al(size=100)
The slowest run took 7.29 times longer than the fastest. This could mean that an intermediate result is being cached.
100000 loops, best of 3: 5.5 µs per loop
Magic-writefile and %pycat:导出cell内容/显⽰外部脚本的内容
使⽤%%writefile magic可以保存cell的内容到外部⽂件。⽽%pycat功能相反,把外部⽂件语法⾼亮显⽰(以弹出窗⽅式)。
In [7]: %%writefile pythoncode.py
import numpy
def append_if_not_exists(arr, x):
if x not in arr:
arr.append(x)
def some_uless_slow_function():
arr = list()
for i in range(10000):
x = numpy.random.randint(0, 10000)
append_if_not_exists(arr, x)
Writing pythoncode.py
In [8]: %pycat pythoncode.py
import numpy
def append_if_not_exists(arr, x):
if x not in arr:
arr.append(x)
def some_uless_slow_function():
arr = list()
for i in range(10000):

本文发布于:2023-05-31 20:16:13,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/90/129624.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:代码   单元   输出   选中   函数   结果   内核   快捷键
相关文章
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图