专栏首页机器之心入门 | 数据科学家效率提升必备技巧之Jupyter Notebook篇

入门 | 数据科学家效率提升必备技巧之Jupyter Notebook篇

选自codeburst

作者:Nok

机器之心编译

参与:黄小天、刘晓坤

本文作者参加过 fast.ai 的深度学习课程,了解到很多适用于一般软件工程的技巧,所以写作本文梳理所学,并共享给大家。

1. Jupyter Notebook 扩展

标准的 Jupyter Notebook 很不错,但还有更多的扩展,其中集成了大量的函数。

安装 Jupyter 扩展包

# Install Jupyterextension package
pip install jupyter_contrib_nbextensions
jupyter contrib nbextension install—user
# Install configurator
pip install jupyter_nbextensions_configurator
# Install theme
pip install jupyterthemes
## Change theme (This is my default)
''' Note that you need to use 1 command to configure the setting, if you do 2 jt command, the second one will replace the first one.
'''
jt -t grade3 -T

你可以在这里找到更多的 Jupyter theme:https://github.com/dunovank/jupyter-themes

在安装了 Configurator 之后,你可以看到一个新的「Nbextensions」标签。将这几项打钩。

1. Autopep8

2. Collapsible Headings

3. Gist-it

A. Collapsible Headings

现在,你可以将 notebook 里的长代码折叠,而不用再辛苦地滚动浏览。根据我的经验,当进行探索性数据分析和画图表的时候,我需要写很长的代码,经常需要滚动查询很久才能找到我想查看的代码。现在你可以自由选择将代码折叠或展开。并且我认为你甚至可以做一个目录(我尚未尝试这种扩展)。

B. Gist-it

你可以看到上图位置中小小的 GitHub 图标,只需要点击它,就能发表你的 Gist。

Gist 是一个可分享 notebook 的地方,你可以在里面分享你遇到的 bug 和其它技术难题。

其默认发表的是匿名 Gist,如果你想要用你的 GitHub 账号发表,需要生成身份验证的标记。两者的主要区别在于,当你用自己的账号发表时,可以对你的 Gist 进行编辑。

这是我为这篇文章写的 notebook:https://gist.github.com/noklam/a0d020c17ce1715bf1d031b1cb8a9fa4

C. Autopep8

你可以用这个按钮或快捷键,up to you!使用这个按钮可以帮你写入所有的空格。PEP 8 是 Python 代码的风格设计指南。

PEP 8:https://www.python.org/dev/peps/pep-0008/

2. 为你的任务计时

我通常会在执行循环命令之前声明开始时间,然后用结束时间减去它以得到运行时间。这没问题,但其实可以更简单。使用内建的魔术命令(magic command)。它们可能看起来很不自然,但很好用(魔术命令以% 起始)。

以一个简单的函数为例,它计算的是小于 n 的最后一个斐波那契数。

你可以使用%time 为单次运行计时,或用%timeit 进行多次计时,然后得到平均值和标准差。因此这对于简单的函数很有用。那对于调用其它函数的函数,情况如何呢?

你可以使用%prun,我创建了一个哑函数(dummy function),可以多次调用 fib1()。你可以看到该循环过程大多数时间消耗在 fib1() 上。

3. Cython

Cython 是一个工具包,可以使你在 Python 中编译 C 语言,这就是为什么 numpy 和 pandas 很快的原因。确保你已安装 Cython:

pip install cython

你可以不改变任何代码而获得双倍的性能。这很棒,但一点也不惊奇。

如果你稍微改变脚本,看看你可以获得什么。如果你有 C 语言编程经验,你很可能知道当我们声明一个变量时,我们需要定义一个数据类型。脚本确实改变了一些,因为像这样的操作对 Python 来说是唯一的,C 语言并不具备这样的功能。因为我们需要分配一个临时变量以存储这个值。

a,b = b,a

(感谢 James Martini 之前指出了 fib3 中的一些错误)

从 582 ns 到 48 ns,快了 10 倍,实际上你并不需要改变太多脚本。我感到很兴奋,因为大多数时间慢代码对你来说是 okay 的。你真正关心的是一次又一次被调用的代码。通过%prun 和一些 Cython 代码,你可以获得 C 语言的运行速度而无需编译任何文件。

除了魔术命令,我发现 Jupyter 之中的 shell 命令也很有帮助。(魔术命令以% 开始,shell 命令以! 开始)

原文链接:https://codeburst.io/jupyter-notebook-tricks-for-data-science-that-enhance-your-efficiency-95f98d3adee4

本文为机器之心编译,转载请联系本公众号获得授权。

本文分享自微信公众号 - 机器之心(almosthuman2014)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2018-02-07

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 解决不了bug先放着,这里有40条提升编程技能小妙招

    如何提高编程技能?恐怕很多开发者思考过这个问题。最近,拥有将近 15 年开发经验的软件工程师 Kesk -*- 写了一篇博客,列举了 40 条对其职业生涯有所帮...

    机器之心
  • 写出一手烂代码的19条准则

    「代码写得好」是对机器学习研究者及开发者最好的赞扬。其第一层意思是说,你的模型非常好,有自己的理解与修正;第二层意思是说代码的结构、命名规则、编写逻辑都非常优秀...

    机器之心
  • GitHub不为人知的小秘密…让你的工作更高效

    近日,GitHub 宣布将无限制地开放私有代码库,这让我们能够在几分钟之内就将那些不想让人别人看到的代码传到云端,还确保我们可以充分利用 GitHub 所提供的...

    机器之心
  • 描述数据分布特征的五种可视化图形

    中医上讲看病四诊法为:望闻问切。而数据分析师分析数据的过程也有点相似,我们需要望:看看数据长什么样;闻:仔细分析数据是否合理;问:针对前两步工作搜集到的问题与业...

    1480
  • 【R语言】5种探索数据分布的可视化技术

    中医上讲看病四诊法为:望闻问切。而数据分析师分析数据的过程也有点相似,我们需要望:看看数据长什么样;闻:仔细分析数据是否合理;问:针对前两步工作搜集到的问题与业...

    1480
  • 工具 | R语言数据可视化之数据分布图(直方图、密度曲线、箱线图、等高线、2D密度图)

    数据分布图简介 绘制基本直方图 基于分组的直方图 绘制密度曲线 绘制基本箱线图 往箱线图添加槽口和均值 绘制2D等高线 绘制2D密度图 数据分布图简介 中医上讲...

    CDA数据分析师
  • R语言数据可视化之五种数据分布图制作

    网址:http://www.cnblogs.com/muchen/p/5430536.html

    华章科技
  • 如何深入理解开源项目从小代码集看起聚焦请先看文档关注资源的生命周期找一个好工具建立调试环境看代码很累,要坚持

    大宽宽
  • 提高代码阅读能力的7种方法

    用户1737318
  • 【蒙圈】自己写的Js,自己不认识了?

    但是,下课之前我说,今天的作业,如何如何要求,格式什么样,标明用了多长时间,然后就有同学在学习群里问我,。。原话记不太清了,大概意思就是,自己写的看不明白了,还...

    web前端教室

扫码关注云+社区

领取腾讯云代金券