chenxihou 2020-01-28
在Notebook的中开头cell中添加以下代码可以实现多行输出:
from IPython.core.interactiveshell import InteractiveShell InteractiveShell.ast_node_interactivity = ‘all‘ #默认为‘last‘
例如:
如果需要一劳永逸的在每个文件中自动实现这个功能,可以在macOS的/Users/your_user_name/.ipython/profile_default/或者windows的C:\Users\your_profile.ipython\profile_default文件夹下创建ipython_config.py文件。(mac下你可以在终端进入这个目录touch ipython_config.py来创建)。
然后打开ipython_config.py文件,添加以下两行:
c = get_config() c.InteractiveShell.ast_node_interactivity = "all"
保存,重启Notebook后生效。
感谢离宫2提示这个技巧。
import pandas as pd
就报这个错误,原因未知,解决方法就是-f强制重新安装:
conda install -f numpy conda install -f pandas
写Python代码很多人会告诉你要用Pycharm,但那是开发Python项目用的, 那种由成百上千个文件组成、包含数万行代码的项目必须要很专业的复杂工具才行。
但如果你的目的是数据分析、算法研究等方面的工作,那么Jupyter Notebook 最适合你,因为它足够简单,让你可以专注于数据和算法的逻辑而不是工具。
你可以用用下面一些代码实验(代码来自天池实验室):
%matplotlib inline import numpy as np import matplotlib.pyplot as plt from scipy.special import jn from IPython.display import display, clear_output import time x = 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()
得到如下图所示:
常用的绘图分析工具有Matplotlib、Seaborn、plot.ly。
如果你要快速开始Python编程,直接下载Anaconda是最简单的,它包含了你所需要的一切,甚至连Python都不需要单独安装。
开机,下载和安装Anaconda,打开Anaconda navigator就看到Jupyter notebook了。
Anaconda3.5.2:
百度网盘下载(非VIP较慢)
官方下载(Windows电脑使用)
官方下载(苹果电脑使用)
这是一个在线版的Notebook,什么都不需要安装就能开始编码和运行!
唯一麻烦的就是需要你注册并实名认证。
你在网页里编写Python代码,然后免费在阿里云服务器上运行并返回结果。你写的代码也存在服务器上,不用再担心会丢失了,它甚至包含了代码版本管理功能!
阿里云天池Notebook
已知的确缺点有:
Jupyter项目是从Ipython项目演进过来的,所以当你看到存储的文件是.ipynb
时候不要奇怪,就是ipython notebook的意思。实际上以后在很多地方都会看到Ipy字样。
在Anaconda navigator里面还有一个JupyterLab。Lab在Notebook基础上增加了更多的功能,如果你已经使用过一段时间的Notebook,那可以试试看Lab。
快速运行并输出结果,并跳转到下一个单元。
在代码顶部添加%config IPCompleter.greedy=True
这一行并且shift+回车运行,对于接下来运行过的内容都会被列入自动提示中。
按Tab键弹出自动提示
如下图,输入my然后Tab键就弹出上面自定义的两个变量名,然后按回车直接输入myCount
,按向下箭头键再回车就输入myNum
。
import
导入的功能模块也可以提示。比如下图,输入requ
然后按tab就自动补全输入requests
(因为已经导入,并且是唯一的,而刚才的myCount
和myNum
都是my
开头)。requests.
的时候按tab就会弹出requests
包含的所有功能命令,继续输入g
就得到下图的情况。但是每次都按【Tab】按键也并不方便,因为如果装了Jupyter notebook的扩展插件包(参考下面扩展插件部分),只要用下面的命令来开启自动完成即可。jupyter nbextension enable hinterland/hinterland
,成功OK之后重新打开Jupyter Notebook,在输入代码的同时就会实现自动提示了。
这非常重要!
但也不要每行一个cell...
合理安排,一个cell就是一个小的逻辑单元,这样既可以理清思路,又方便单独运行每个cell方便测试寻找问题。
推荐把相关的设置变量都集中放在最上面单独一个或几个cell,这样以后使用时候可以集中修改,不影响代码逻辑。
比如下图中的代码,以后修改只要修改两个变量num1、num2
就可以直接运行得到结果。
def
单独拿出去作为cell内容,比如下面把求整体方差avri
分拆出了两个def
函数,avg
求平均数,sqr
求两数差的平方。(代码仅供示意)Markdown是用来写文章的,比如这个简书文章就是用markdown语法写的。
新建cell可以选markdown用来写代码注释。
默认Notebook总是打开电脑中我的文档目录,以下方法可以让它打开指定的目录。
打开命令行工具输入jupyter notebook --generate-config
然后会返回一个地址,找到它(可能是隐藏文件),用写字板打开那个文件jupyter_notebook_config.py
:
c.NotebookApp.notebook_dir = ‘/Users/zhyuzh/Desktop/Jupyter‘
苹果电脑显示隐藏文件的命令:
defaults write com.apple.finder AppleShowAllFiles -bool YES
苹果电脑下复制当前文件夹路径快捷键Command+Option+C
Windows电脑下如果失败,请修改Jupyter Notebook的快捷方式,去掉【属性-目标】中的" %USERPROFILE%" 部分,并确保
c.NotebookApp.notebook_dir=‘D:\\temp\\‘
,后面的目录必须使用双斜线。
命令jupyter notebook list
列出全部端口上运行的notebook服务,这里也会显示完整戴token的浏览器地址。
命令jupyter notebook stop 8898
关闭特定端口上的服务,Windows下如果失败的话还是用任务管理器吧,如果任务管理器也找不到它的话,其实它就已经被关闭了,只是windows没更新。
插件可以让Notebook变得更好用一些。一般情况我们不需要安装插件,等你使用久了再慢慢了解。
官方Github插件主题列表
非官方contrib贡献插件列表
非官方贡献版插件更多更容易安装些,因为可以一次都装上,要用哪个再开启哪个。
安装命令: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
字样:
这个插件在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/nbextensions
JupyterNoteBook的插件本质都是NodeJs的npm插件。如果你了解nodejs那么很容易搞明白它的原理。
代码整齐很重要!
对于Python来说混乱的代码格式可能是致命的!
这里介绍安装code-pretty
自动格式化插件,先执行命令开启:jupyter nbextension enable code_prettify/code_prettify
依照官方说明还需要执行另外一个命令安装必要的第三方功能模块:conda install yapf
然后就可以看到Notebook如下图出现一个小锤头工具。点击它就能把当前cell的代码自动格式化变整齐了,也可以使用快捷键Ctrl+L
(苹果下也是ctrl不是Command)。
?
输出帮助提示比如下图:
使用%run
代码可以直接外部的执行.py文件,比如在Notebook文件夹内有一个a.py
文件:
aa=‘haha‘ print(aa)
那么可以用下面代码直接在Notebook内运行它(注意这里的./
表示在同一文件夹下)
%run ./a print(‘>>‘+aa)
%load
则直接把代码读进来(下面是%load ./a
运行的结果):Notebook的Markdown单元是支持LateX公式编辑的,比如输入\\( P(A \mid B) = \frac{P(B \mid A) \, P(A)}{P(B)} \\)
运行得到下图:
从file
菜单可以保存为多种格式。
从edit/find and replace
菜单可以弹出对话框如下,点击竖向箭头的小图标可以切换到搜索全部cell单元。此外还支持区分大小写、正则表达式(js语法)。
如果只是需要找到某些文字(定位到这些文字的位置),可以直接使用浏览器自带的Ctrl+F来查找。
先执行命令jupyter notebook --generate-config
,这会生成相关配置文件,然后jupyter notebook password
命令输入两次相同的密码,再打开Notebook的时候就会提示要输入密码。
关闭密码只需要找到jupyter_notebook_config.py
文件,/Users/username/.jupyter/
文件夹下,Win/Mac都一样,但Mac下这是个隐藏文件夹。修改其中内容,c.NotebookApp.password = ‘‘
然后重新打开Notebook就不需要密码了。
这样看,其实这个密码也没什么用,跟没设置一样。
复制地址换到别的浏览器打不开,要求输入token的问题。
和上面密码一样,修改c.NotebookApp.token = ‘‘
并保存可以禁用token。
创建并编辑用户文件夹下.jupyter/custom/custom.js
文件并进行编辑。
请参照这个文章进行。