此系列文章收录在公众号: 数据大宇宙 > Python入门必备 > 工具
转发本文并私信我"python",即可获得Python资料以及更多系列文章(持续更新的)
Python数据人你竟然不会用JupyterNotebook!
不拆分啥初级中级高级,一个专栏直接带你入门到高级应用,从数据处理到数据分析!!
前言
使用Python做数据相关工作,不能不提 JupyterNotebook 这个强大的工具,网络上其实挺多相关的资料,只是相对而言比较分散,有些技巧可能对于初学者不太有用。
今天我就把一些比较初级,但是非常实用的 JupyterNotebook 技巧做一个分享。
自定义启动目录
安装 Anaconda 是你开始Python数据之旅的最佳方式,具体安装过程请看这里:
Anaconda 自带 JupyterNotebook ,正常情况你会通过系统菜单启动 JupyterNotebook :
但是,你会发现创建的文件都在一个系统用户目录下,很多时候我们希望基于某个指定目录启动 JupyterNotebook :
- 通常我们希望某个任务的相关文件都放到一个文件夹中
- 那么如何最快速简单启动 JupyterNotebook ?
我的个人习惯是,创建如下 bat 文件:
<code>jupyter notebook --notebook-dir src/<code>
- 最后的 src,就是我要指定的启动目录,这里用相对路径
- 意味着,我只要把这个 bat 文件复制到任意文件夹中,只要该文件夹中有一个子文件夹叫 src,那么我只要双击运行这个 bat 文件即可
看看效果:
现在可以很好管理你的文件,但是你会发现写代码却没有智能提示。
Python 代码智能提示
JupyterNotebook 需要安装插件才能有代码智能提示。
我喜欢直接扔一个脚本给你执行,打开你的cmd,执行如下命令:
<code>pip install jupyter_contrib_nbextensions && jupyter contrib nbextension install && jupyter nbextension enable hinterland/hinterland/<code>
只要cmd显示如下,表示安装成功:
<code>Enabling notebook extension hinterland/hinterland...
- Validating: ok/<code>
现在重启你的 JupyterNotebook ,你会发现已经有智能提示:
怎么执行代码?别总是按上方的执行按钮了:
告诉你这个最常用的快捷键:
不过,有时候提示有点怪怪的,比如:
- 我想看看这个函数详细一点的文档,怎么办?
- 光标在方法括号中,按住 shift 后,连续按 tab 键多次,次数越多,看到的文档信息越详细
有人说,你这个技巧一点用都没有!因为我连函数名字都拼写不出来。
我也经常遇到这种情况,但是这是有技巧的。
比如我只记得"excel",但不记得整个函数名字,我们可以执行如下代码:
- 符号"*" 表示任意字符
- 最后的问号,表示找出那些匹配前面的函数名字出来
再说一个例子,比如我隐约记得 pandas 中 DataFrame 有个排除重复的方法,是 "du????",于是:
有时候你可能不知道某个变量的类型,你就无法应用上面的技巧,那么可以这么做:
- 在你的变量前面加一个 "?" 执行,即可显示这个变量的信息,第一项就能看到这个变量指向的对象的类型
"如果我连 du 2个字母都记不住怎么办?"
别怕,JupyterNotebook 可以保存自定义代码,下面会介绍到
交互式的陷阱
很多初学者不太理解交互方式的编程,在 JupyterNotebook 中的一个代码文件,从你打开他开始,始终保持在一个Python执行过程中。
比如你定义了一个函数:
- 上方单元格定义了一个函数,返回值1。执行这个单元格,此时我们得到一个变量f,表示这个函数
- 下方单元格执行这个函数,得到1
结果显然易见,但是,如果你此时修改上方单元格的代码,但修改后忘记执行:
- 虽然你修改了上方单元格的代码,但由于没有重新执行,因此函数f仍然是以前的代码
- 此时你重复执行下方的单元格,结果仍然是1
有没有注意到,上面执行 f() 的时候,我们没有明确编写 print ,也能输出结果,这是因为默认情况下每个单元格执行的代码最后的值都被打印输出。
并且其输出是使用 IPython 的 display 函数显示。那么如果希望在代码执行中途输出怎么办?
- 在 for 里面不能自动输出
- 如果你用 print 函数输出 DataFrame ,你会发现格式很丑
随时输出你的结果
当我们希望随时输出东西时,可以使用 IPython.display 中的输出函数:
- 现在输出的格式顺眼多了
这样子,好像还没有开始学习,就要记住一大堆导入库的代码。
有没有快速显示常用代码的工具?
代码片段
代码片段是一个插件提供的功能,你可以把一些代码保存起来,需要使用的时候去下拉框选择就可以。
之前我们安装了一个智能提示的插件,这其实是一系列插件中的其中一个。
同样,如果你已经安装了,那么只需要在cmd中执行以下命令即可启动代码片段插件:
<code>jupyter nbextension enable snippets/main/<code>
只要cmd显示如下,表示启动成功:
<code>Enabling notebook extension snippets/main...
- Validating: ok/<code>
重启你的 JupyterNotebook ,随意打开一个代码页面:
但是,怎么添加自己的代码呢?
在 JupyterNotebook 代码文件中执行以下代码,即可打开自定义代码所在目录:
<code>import pathlib
path = !jupyter --data-dir
path = str(pathlib.Path(path[0]) / "nbextensions/snippets")
!explorer $path
/<code>
- 用任意的文本编辑器打开其中的 snippets.json 文件
- 在此文件中,添加自己的代码,重启 JupyterNotebook 即可看到效果
JupyterNotebook 非常适合数据项目的代码编写,如果你也是希望使用 Python 完成各种数据项目,那么强烈推荐你学习使用他。
下次,我会详细介绍一下如何在 JupyterNotebook 中调试代码,记得关注噢
有任何疑问,私信我"python"
閱讀更多 外星人玩Python 的文章