listview 每行后面的小箭头_JupyterNoteBook小技巧合集

02d51da5d22807db263c794247d3b774.png

Jupyter Notebook可能是当今最常用的数据科学工具

写Python代码很多人会告诉你要用Pycharm,但那是开发Python项目用的, 那种由成百上千个文件组成、包含数万行代码的项目必须要很专业的复杂工具才行。
但如果你的目的是数据分析、算法研究等方面的工作,那么Jupyter Notebook 最适合你,因为它足够简单,让你可以专注于数据和算法的逻辑而不是工具。

JupyterNotebook不仅可以写代码还能输出图像、表格等

你可以用用下面一些代码实验(代码来自天池实验室):

%matplotlib inlineimport numpy as npimport matplotlib.pyplot as pltfrom scipy.special import jnfrom IPython.display import display, clear_outputimport timex = np.linspace(0,5)f, ax = plt.subplots()ax.set_title("Bessel functions")for n in range(1,10):   time.sleep(1)   ax.plot(x, jn(x,n))   clear_output(wait=True)   display(f)    plt.close()

得到如下图所示:

ec4e1c9dac6646ca0e1b62c6ec9bec6c.png

常用的绘图分析工具有Matplotlib、Seaborn、plot.ly。

使用Anaconda来安装最省事

如果你要快速开始Python编程,直接下载Anaconda是最简单的,它包含了你所需要的一切,甚至连Python都不需要单独安装。
开机,下载和安装Anaconda,打开Anaconda navigator就看到Jupyter notebook了。

Anaconda官方网:

https://www.anaconda.com/products/individual

更省事的是阿里云天池Notebook实验室

这是一个在线版的Notebook,什么都不需要安装就能开始编码和运行!

唯一麻烦的就是需要你注册并实名认证。

你在网页里编写Python代码,然后免费在阿里云服务器上运行并返回结果。你写的代码也存在服务器上,不用再担心会丢失了,它甚至包含了代码版本管理功能!

阿里云天池Notebook官网:

https://tianchi.aliyun.com/

已知的确缺点有:

  • 不能随意的安装第三方功能模块。不过它已经自带了很多,大多数情况都足够了。
  • 不能安装Notebook插件。基本上也不是问题,没事谁也不折腾这个。
  • 要命的是你不能像控制自己的电脑一样控制远程服务器,当你在爬取某个网站数据的时候,网站发现你的IP(阿里云服务器的IP)访问不正常要求在浏览器内做人工识别字符验证,这时候你就无助了。——如果在你自己电脑上就只要打开浏览器操作一下就OK了。

Ipython是Jupyter的前身Jupyter项目是从Ipython项目演进过来的

所以当你看到存储的文件是.ipynb时候不要奇怪,就是ipython notebook的意思。实际上以后在很多地方都会看到Ipy字样。

JupyterLab是Notebook的加强版

在Anaconda navigator里面还有一个JupyterLab。Lab在Notebook基础上增加了更多的功能,如果你已经使用过一段时间的Notebook,那可以试试看Lab。

Shift+回车

执行单元代码快速运行并输出结果,并跳转到下一个单元。

代码自动完成

在代码顶部添加%config IPCompleter.greedy=True这一行并且shift+回车运行,对于接下来运行过的内容都会被列入自动提示中。

按Tab键弹出自动提示如下图,输入my然后Tab键就弹出上面自定义的两个变量名,然后按回车直接输入myCount,按向下箭头键再回车就输入myNum。

3a2a4a433e57a81eb7f5ba401da75b2a.png


同样对于import导入的功能模块也可以提示。比如下图,输入requ然后按tab就自动补全输入requests(因为已经导入,并且是唯一的,而刚才的myCount和myNum都是my开头)。
输入到requests.的时候按tab就会弹出requests包含的所有功能命令,继续输入g就得到下图的情况。

8b3d158d853da4d7d2f86231717cf80b.png


但是每次都按【Tab】按键也并不方便,因为如果装了Jupyter notebook的扩展插件包(参考下面扩展插件部分),只要用下面的命令来开启自动完成即可。jupyter nbextension enable hinterland/hinterland,成功OK之后重新打开Jupyter Notebook,在输入代码的同时就会实现自动提示了。

多行输出

在Notebook的中开头cell中添加以下代码可以实现多行输出:

from IPython.core.interactiveshell import InteractiveShell InteractiveShell.ast_node_interactivity = 'all' #默认为'last'

例如:

f76526427ebb70961ade64bf736ca91d.png

如果需要一劳永逸的在每个文件中自动实现这个功能,可以在macOS的/Users/your_user_name/.ipython/profile_default/或者windows的C:甥敳獲your_profile.ipythonprofile_default文件夹下创建ipython_config.py文件。(mac下你可以在终端进入这个目录touch ipython_config.py来创建)。然后打开ipython_config.py文件,添加以下两行:

c = get_config()c.InteractiveShell.ast_node_interactivity = "all"

保存,重启Notebook后生效。

a8363153a8323a370ea8b1be84d93af0.png

更多设置点这里看官方说明。

https://ipython.org/ipython-doc/3/config/intro.html

不要把代码都写在一个单元cell里!

这非常重要!但也不要每行一个cell...合理安排,一个cell就是一个小的逻辑单元,这样既可以理清思路,又方便单独运行每个cell方便测试寻找问题。推荐把相关的设置变量都集中放在最上面单独一个或几个cell,这样以后使用时候可以集中修改,不影响代码逻辑。比如下图中的代码,以后修改只要修改两个变量num1、num2就可以直接运行得到结果。

cc306d907455dca77195b44b10308b78.png

另外一个建议就是把能够独立的代码变为一个def单独拿出去作为cell内容,比如下面把求整体方差avri分拆出了两个def函数,avg求平均数,sqr求两数差的平方。(代码仅供示意)

fa8a39fab948f8b9c0fc48ba3a02acb6.png

Cell不仅可以写代码,还能Markdown

Markdown是用来写文章的,比如这个简书文章就是用markdown语法写的。新建cell可以选markdown用来写代码注释。

写起来是这样的:

a9610aba1695b566f1d8b446deb73a2b.png

shift回车运行后是这样的(双击可以返回到修改模式):

4e995c2020327162444dbb58101aafb1.png

更改默认打开的项目

默认Notebook总是打开电脑中我的文档目录,以下方法可以让它打开指定的目录。打开命令行工具输入jupyter notebook --generate-config然后会返回一个地址,找到它(可能是隐藏文件),用写字板打开那个文件jupyter_notebook_config.py:

48983af829ab733b237c981adde9f3b4.png


然后再顶部添加(等号后面引号内换成你自己的文件夹地址)
c.NotebookApp.notebook_dir = '/Users/zhyuzh/Desktop/Jupyter'
然后重新打开Jupyter Notebook就会默认打开这个文件夹了。

苹果电脑显示隐藏文件的命令:defaults write com.apple.finder AppleShowAllFiles -bool YES苹果电脑下复制当前文件夹路径快捷键Command+Option+C

Windows电脑下如果失败,请修改Jupyter Notebook的快捷方式,去掉【属性-目标】中的" %USERPROFILE%" 部分,并确保c.NotebookApp.notebook_dir='D:emp',后面的目录必须使用双斜线。

显示全部在运行的Notebook

命令jupyter notebook list列出全部端口上运行的notebook服务,这里也会显示完整戴token的浏览器地址。
命令jupyter notebook stop 8898关闭特定端口上的服务,Windows下如果失败的话还是用任务管理器吧,如果任务管理器也找不到它的话,其实它就已经被关闭了,只是windows没更新。

扩展插件

插件可以让Notebook变得更好用一些。一般情况我们不需要安装插件,等你使用久了再慢慢了解。

官方Github插件主题列表

https://links.jianshu.com/go?to=https%3A%2F%2Fgithub.com%2Ftopics%2Fjupyterlab-extension

非官方contrib贡献插件列表

https://links.jianshu.com/go?to=https%3A%2F%2Fjupyter-contrib-nbextensions.readthedocs.io%2Fen%2Flatest%2Findex.html

非官方贡献版插件更多更容易安装些,因为可以一次都装上,要用哪个再开启哪个。安装命令:conda install -c conda-forge jupyter_contrib_nbextensions运行后可能稍等一下才有反应,根据提示按y。然后再启用,比如启用collapsible_headings:jupyter nbextension enable collapsible_headings/main注意/main是必须的。collapsible_headings插件可以让Notebook把一个cell折叠起来,在cell菜单下出现insert head cell字样:

8e8eaa063bb56f9c7dec6b220f40d896.png

这个插件在JupyterLab下面好像不能用。不过Lab自身就可以双击折叠一个cell,比这个更方便些。

collapsible_headings/main其实是指文件夹collapsible_headings下的main.js文件。所有可用的文件夹名称都可以在电脑里搜索nbextensions文件夹找到。苹果电脑的位置类似/anaconda3/pkgs/jupyter_contrib_nbextensions-0.5.0-py36_0/lib/python3.6/site-packages/jupyter_contrib_nbextensions/nbextensionsJupyterNoteBook的插件本质都是NodeJs的npm插件。如果你了解nodejs那么很容易搞明白它的原理。

格式化自动美化代码

代码整齐很重要!对于Python来说混乱的代码格式可能是致命的!这里介绍安装code-pretty自动格式化插件,先执行命令开启:jupyter nbextension enable code_prettify/code_prettify依照官方说明还需要执行另外一个命令安装必要的第三方功能模块:conda install yapf然后就可以看到Notebook如下图出现一个小锤头工具。点击它就能把当前cell的代码自动格式化变整齐了,也可以使用快捷键Ctrl+L(苹果下也是ctrl不是Command)。

a10121adb5fc80b924f08f6f512114cb.png

用?输出帮助提示

比如下图:

8e0fbab741fc9c037782eab45db49e98.png

运行或载入外部Python文件

使用%run代码可以直接外部的执行.py文件,比如在Notebook文件夹内有一个a.py文件:

aa='haha'print(aa)

那么可以用下面代码直接在Notebook内运行它(注意这里的./表示在同一文件夹下)

%run ./aprint('>>'+aa)
ee0d339ba5f1bebb0655d6314bf600ba.png

如果使用%load则直接把代码读进来(下面是%load ./a运行的结果):

cdffefeefc92c36522527f780a7421ed.png

公式编辑器LaTeX

Notebook的Markdown单元是支持LateX公式编辑的,

比如输入( P(A mid B) = frac{P(B mid A) , P(A)}{P(B)} )运行得到下图:

b850fc3627bb1bf6c5040a30ab22fa78.png

关于LaTeX语法可以在简书里搜索。

可以保存为.py或pdf文件

从file菜单可以保存为多种格式。

使用魔法格式可以保存.py文件

%%writefile run.py

查找和替换

从edit/find and replace菜单可以弹出对话框如下,点击竖向箭头的小图标可以切换到搜索全部cell单元。此外还支持区分大小写、正则表达式(js语法)。如果只是需要找到某些文字(定位到这些文字的位置),可以直接使用浏览器自带的Ctrl+F来查找。

27615bea5ae0f1538148ee36b68a7f35.png

设置打开密码

先执行命令jupyter notebook --generate-config,这会生成相关配置文件,然后jupyter notebook password命令输入两次相同的密码,再打开Notebook的时候就会提示要输入密码。
关闭密码只需要找到jupyter_notebook_config.py文件,/Users/username/.jupyter/文件夹下,Win/Mac都一样,但Mac下这是个隐藏文件夹。修改其中内容,c.NotebookApp.password = ''然后重新打开Notebook就不需要密码了。
这样看,其实这个密码也没什么用,跟没设置一样。

去除token限制

复制地址换到别的浏览器打不开,要求输入token的问题。
和上面密码一样,修改c.NotebookApp.token = ''并保存可以禁用token。

快捷键复制行,复制单元cell

创建并编辑用户文件夹下.jupyter/custom/custom.js文件并进行编辑。
请参照这个文章进行。

【编程】编写Jupyter Notebook脚本

https://www.jianshu.com/p/3ee29fe3699b

插件设置

从【编辑-nbextensions config】可以打开扩展设置,直接开启或关闭插件。

Latex

行间的公式需要用$$开头结尾,但是独立行的应该直接写,不要再加$$了,比如

begin{align}a = frac{1}{2} && b = frac{1}{3} && c = frac{1}{4} a && b && cend{align}

Latex公式放大字体

运行后的Latex公式,右键菜单可以找到【Scale All Math】菜单放大全部。另外的Zoom Factor是指鼠标浮上去的时候字体放大,不实用。

2ac771b9fe7eadbfa527290d4ddd15b7.png

去掉输出框的阴影

修改各种样式,可以直接用%%html改css。如下

%%html

单元折叠

安装hide_code插件,实现单元格折叠。

pip install hide_codejupyter nbextension install --py hide_codejupyter nbextension enable --py hide_codejupyter serverextension enable --py hide_code
e85f6a0cb14f044bfd0bd69a7fcc9f47.png

效果如下。

472040060d241d999510d3099d61be59.png

更多信息参照下面网站。https://github.com/kirbs-/hide_code/

更简单的是直接使用【hide input】插件,

79888007343675966701ba4a3c4b53bb.png

点击向上的箭头隐藏或者展开,如下图,缺点是隐藏之后比较难找到。

6d77dcd3d4043dbacd4debcb76dabfd4.png

码折叠

如果只要折叠代码,那么打开codefold插件就可以。

cbac038903db2bd8514197e556e94855.png

效果如下。

6d1c58df42ae690a3f550e25823e7363.png

module 'numpy' has no attribute 'version'

import pandas as pd就报这个错误,原因未知,解决方法就是-f强制重新安装:

conda install -f numpyconda install -f pandas
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值