适合入门Python的初学者,这些JupyterNotebook技巧助你更快进阶



不拆分啥初级中级高级,一个专栏直接带你入门到高级应用,从数据处理到数据分析!!


前言

使用Python做数据相关工作,不能不提 JupyterNotebook 这个强大的工具,网络上其实挺多相关的资料,只是相对而言比较分散,有些技巧可能对于初学者不太有用。

今天我就把一些比较初级,但是非常实用的 JupyterNotebook 技巧做一个分享。


自定义启动目录

安装 Anaconda 是你开始Python数据之旅的最佳方式,具体安装过程请看这里:


Anaconda 自带 JupyterNotebook ,正常情况你会通过系统菜单启动 JupyterNotebook :

适合入门Python的初学者,这些JupyterNotebook技巧助你更快进阶

但是,你会发现创建的文件都在一个系统用户目录下,很多时候我们希望基于某个指定目录启动 JupyterNotebook :

适合入门Python的初学者,这些JupyterNotebook技巧助你更快进阶

  • 通常我们希望某个任务的相关文件都放到一个文件夹中
  • 那么如何最快速简单启动 JupyterNotebook ?

我的个人习惯是,创建如下 bat 文件:

<code>jupyter notebook --notebook-dir src/<code>
  • 最后的 src,就是我要指定的启动目录,这里用相对路径
  • 意味着,我只要把这个 bat 文件复制到任意文件夹中,只要该文件夹中有一个子文件夹叫 src,那么我只要双击运行这个 bat 文件即可

看看效果:

适合入门Python的初学者,这些JupyterNotebook技巧助你更快进阶


适合入门Python的初学者,这些JupyterNotebook技巧助你更快进阶


适合入门Python的初学者,这些JupyterNotebook技巧助你更快进阶

现在可以很好管理你的文件,但是你会发现写代码却没有智能提示。


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 ,你会发现已经有智能提示:

适合入门Python的初学者,这些JupyterNotebook技巧助你更快进阶

怎么执行代码?别总是按上方的执行按钮了:

适合入门Python的初学者,这些JupyterNotebook技巧助你更快进阶

告诉你这个最常用的快捷键:

适合入门Python的初学者,这些JupyterNotebook技巧助你更快进阶

不过,有时候提示有点怪怪的,比如:

  • 我想看看这个函数详细一点的文档,怎么办?
适合入门Python的初学者,这些JupyterNotebook技巧助你更快进阶

  • 光标在方法括号中,按住 shift 后,连续按 tab 键多次,次数越多,看到的文档信息越详细

有人说,你这个技巧一点用都没有!因为我连函数名字都拼写不出来。

我也经常遇到这种情况,但是这是有技巧的。

比如我只记得"excel",但不记得整个函数名字,我们可以执行如下代码:

适合入门Python的初学者,这些JupyterNotebook技巧助你更快进阶

  • 符号"*" 表示任意字符
  • 最后的问号,表示找出那些匹配前面的函数名字出来

再说一个例子,比如我隐约记得 pandas 中 DataFrame 有个排除重复的方法,是 "du????",于是:

适合入门Python的初学者,这些JupyterNotebook技巧助你更快进阶


有时候你可能不知道某个变量的类型,你就无法应用上面的技巧,那么可以这么做:

适合入门Python的初学者,这些JupyterNotebook技巧助你更快进阶

  • 在你的变量前面加一个 "?" 执行,即可显示这个变量的信息,第一项就能看到这个变量指向的对象的类型

"如果我连 du 2个字母都记不住怎么办?"

别怕,JupyterNotebook 可以保存自定义代码,下面会介绍到



适合入门Python的初学者,这些JupyterNotebook技巧助你更快进阶


交互式的陷阱

很多初学者不太理解交互方式的编程,在 JupyterNotebook 中的一个代码文件,从你打开他开始,始终保持在一个Python执行过程中。

比如你定义了一个函数:

适合入门Python的初学者,这些JupyterNotebook技巧助你更快进阶

  • 上方单元格定义了一个函数,返回值1。执行这个单元格,此时我们得到一个变量f,表示这个函数
  • 下方单元格执行这个函数,得到1

结果显然易见,但是,如果你此时修改上方单元格的代码,但修改后忘记执行:

适合入门Python的初学者,这些JupyterNotebook技巧助你更快进阶

  • 虽然你修改了上方单元格的代码,但由于没有重新执行,因此函数f仍然是以前的代码
  • 此时你重复执行下方的单元格,结果仍然是1

有没有注意到,上面执行 f() 的时候,我们没有明确编写 print ,也能输出结果,这是因为默认情况下每个单元格执行的代码最后的值都被打印输出。

并且其输出是使用 IPython 的 display 函数显示。那么如果希望在代码执行中途输出怎么办?

适合入门Python的初学者,这些JupyterNotebook技巧助你更快进阶

  • 在 for 里面不能自动输出
  • 如果你用 print 函数输出 DataFrame ,你会发现格式很丑

随时输出你的结果

当我们希望随时输出东西时,可以使用 IPython.display 中的输出函数:

适合入门Python的初学者,这些JupyterNotebook技巧助你更快进阶

  • 现在输出的格式顺眼多了

这样子,好像还没有开始学习,就要记住一大堆导入库的代码。

有没有快速显示常用代码的工具?




适合入门Python的初学者,这些JupyterNotebook技巧助你更快进阶


代码片段

代码片段是一个插件提供的功能,你可以把一些代码保存起来,需要使用的时候去下拉框选择就可以。

之前我们安装了一个智能提示的插件,这其实是一系列插件中的其中一个。

同样,如果你已经安装了,那么只需要在cmd中执行以下命令即可启动代码片段插件:

<code>jupyter nbextension enable snippets/main/<code>

只要cmd显示如下,表示启动成功:

<code>Enabling notebook extension snippets/main...
     - Validating: ok/<code>

重启你的 JupyterNotebook ,随意打开一个代码页面:

适合入门Python的初学者,这些JupyterNotebook技巧助你更快进阶

但是,怎么添加自己的代码呢?

在 JupyterNotebook 代码文件中执行以下代码,即可打开自定义代码所在目录:

<code>import pathlib
path = !jupyter --data-dir
path = str(pathlib.Path(path[0]) / "nbextensions/snippets")
!explorer $path
/<code>
适合入门Python的初学者,这些JupyterNotebook技巧助你更快进阶

  • 用任意的文本编辑器打开其中的 snippets.json 文件
适合入门Python的初学者,这些JupyterNotebook技巧助你更快进阶

  • 在此文件中,添加自己的代码,重启 JupyterNotebook 即可看到效果

JupyterNotebook 非常适合数据项目的代码编写,如果你也是希望使用 Python 完成各种数据项目,那么强烈推荐你学习使用他。

下次,我会详细介绍一下如何在 JupyterNotebook 中调试代码,记得关注噢


有任何疑问,私信我"python"


分享到:


相關文章: