搭建IPython开发环境

| 分类 python之数据分析  好资源之环境搭建  好资源之开发工具  | 标签 python  ipython  .ipynb  pip  数据分析 

IPython简介

2001年,Fernando Perez为了得到一个更为高效的交互式Python解释器而启动了一个业余项目,于是IPython项目诞生了。在接下来的11年里,它逐渐被公认为现代科学计算中最重要的Python工具之一。IPython本身并没有提供任何的计算或数据分析功能,其设计目的是在交互式计算和软件开发这两个方面最大化地提高生产力。它鼓励一种“执行——探索”的工作模式。而不是许多其他编程语言那种“编辑——编译——运行的传统工作模式。此外,它跟操作系统shell和文件系统之间也有着非常紧密的集成。由于大部分的数据分析代码都含有探索式操作(试误法和迭代法),因此IPython将有助于提高你的工作效率

当然了,IPython项目现在已经不再只是一个加强版的交互式Python shell,它还有一个可以直接进行绘图的CUI控制台、一个基于Web的交互式笔记本,以及一个轻量级的快速并行计算引擎。此外,跟许多其他专为程序员设计的工具一样,它也是高度可定制的

IPython Notebok简介

IPython Notebook是web based IPython封装,可以展示富文本,使得整个工作可以以笔记的形式展示、存储,对于交互编程、学习非常方便。IPython Notebook的设计目的是让数据分析更容易分享和再生,目前用它来给科研做详细记录、设计教学模型以及与他人合作,其科学家用户越来越多

IPython Notebook是一种基于JSON的文档格式.ipynb,使你可以轻松分享代码、输出结果以及图片等内容。目前在各种Python研讨会上,一种流行的演示手段就是使用IPython Notebook,然后再将.ipynb文件发布到网上以供所有人查询

数据科学家面临一个棘手的问题:他们很难详细地分享自己的原始代码,或对其进行便于理解的描述,让其他人在他们研究的基础上有所扩展。其原因部分是由于很多涉及到大量计算的研究领域的科研人员都是以重复和零碎的方式写代码,因为每次分析都会出现新发现,丢弃掉研究中的多重思路

记录产生各种数据的每个不同版本的代码并把那些文件和注释笔记相结合,是个令人头疼的问题。而发表后的成果对于跟进该研究的读者来说往往不够详细。IPython笔记本通过帮助科学家记录他们的工作,使这些资料更容易分享,并让其他人了解其代码解决了上述哪些问题。应用程序名称IPython中的“I”代表帮助用户运行代码、访问变量、总结数据分析包裹以及了解研究过程的“交互式”命令窗口,而“Python”则指的是作为笔记本程序基础的通用计算机程序语言

安装IPython Notebook

我选择在虚拟环境下安装,关于虚拟环境可以参见《搭建Python虚拟环境》。然后分别执行

pip install ipython
pip install "ipython[notebook]"

如果安装出现超时,说明pip的源有问题,可以更换源,在Linux/Mac环境下,建个文件 ~/.pip/pip.conf,写入如下内容,然后重新执行pip install即可

[global]  
  
timeout =6000  
  
index-url =http://pypi.douban.com/simple/  
  
[install]  
  
use-mirrors =true  
  
mirrors =http://pypi.douban.com/simple/  
  
trusted-host =pypi.douban.com 

IPython Notebook使用方法

IPython Notebook使用浏览器作为界面,向后台的IPython服务器发送请求,并显示结果,在浏览器的界面中使用单元(Cell)保存各种类型。Cell有多种类型,经常使用的有表示格式化文本的Markdown单元,和表示代码的Code单元

每个代码单元都有一个输出区域,在Code单元中输入代码,按Shift+Enter将运行此代码,代码中最后一个表达式的值在输出区域显示。如果希望屏蔽输出,可以在最后一条语句之后添加一个分号;。此外,代码中还可以使用print语句在输出区域中显示信息

打开命令行,切换到某个目录下,输入ipython notebook。它会启动服务器,并输出类似如下信息

(_LAB) xumengerdeMacBook-Pro:Laboratory xumenger$ ipython notebook
[TerminalIPythonApp] WARNING | Subcommand `ipython notebook` is deprecated and will be removed in future versions.
[TerminalIPythonApp] WARNING | You likely want to use `jupyter notebook` in the future
[I 00:38:02.297 NotebookApp] Writing notebook server cookie secret to /Users/xumenger/Library/Jupyter/runtime/notebook_cookie_secret
[I 00:38:02.327 NotebookApp] Serving notebooks from local directory: /Users/xumenger/Desktop/code/Laboratory
[I 00:38:02.327 NotebookApp] 0 active kernels 
[I 00:38:02.327 NotebookApp] The Jupyter Notebook is running at: http://localhost:8888/?token=d0e2227d4dd8ca2724716b00a1caf8cf1847764f86ccbf33
[I 00:38:02.327 NotebookApp] Use Control-C to stop this server and shut down all kernels (twice to skip confirmation).
[C 00:38:02.328 NotebookApp] 
    
    Copy/paste this URL into your browser when you connect for the first time,
    to login with a token:
        http://localhost:8888/?token=d0e2227d4dd8ca2724716b00a1caf8cf1847764f86ccbf33
0:97: execution error: “"http://localhost:8888/tree?token=baf8590833a913c97d32b8f27b3a7fae3b71e8263548f1b6"”不理解“open location”信息。 (-1708)

然后在浏览器中输入URL:http://localhost:8888/tree?token=baf8590833a913c97d32b8f27b3a7fae3b71e8263548f1b6打开如下页面

image

可以打开当前目录下的.ipynb文件

image

如果要新建一个文件的话,点按钮New->Python 2就好了

image

然后可以在这里编码,并查看输出、图形

image

image

当然也可以保存和重命名.ipynb文件

image

真的是好工具!实时编程练习、调试程序、查看结果的整个过程都完整的记录下来了!这也将自己的整个思考过程都记录下来了!

非常赞的技巧

  • 可以选择MarkDown,用MarkDown来写说明
  • 若在函数、模块、类后面输入?,按住Ctrl+Enter就回跳出帮助文档;若是??的话,连源代码都会给出来
  • 在网页中输入%matplotlib inline将matplotlib库导入,要显示的图片就可以嵌入到网页中了
  • ipython nbconvert [.ipynb文件]生成默认格式(html格式),还可用--to选项转换为指定格式,如:
    • ipython nbconvert –to latex mynotebook.ipynb
    • ipython nbconvert mynotebook.ipynb –to pdf
    • ipython nbconvert –to html –template basic mynotebook.ipynb
    • ipython nbconvert mynotebook.ipynb –to markdown
  • %load可以从文件或者网址载入代码到一个新的单元中,例如下面载入某个matplotlib的示例程序,并执行 %load http://matplotlib.org/mpl_examples/pylab_examples/histogram_demo.py
  • IPython中Magic命令有两种执行方式,以%开始的命令被称为行命令,它只对单行有效,以%%开头的为单元命令,它放在单元的第一行,对整个单元有效
  • %time一次执行一条语句,然后报告总体执行时间,比如%time x.startswith('foo')
  • %timeit对任意语句,它会自动多次执行以产生一个精确的平均执行时间,比如%timeit x[:3] == 'foo'
  • %run script.py执行一个Python脚本文件
  • %run -d script.py在执行脚本前打开调试器,必须立即输入s(step)才能进入脚本,然后进行单步
  • %run -p -s cumulative script.py分析该脚本执行时,各个代码库、函数的耗时时间,-s cumulative表示输出结果按时间排序
  • %prun -l 7 -s cumulative func()分析的是Python语句而不是整个.py文件的性能
  • %lprun -f add_and_sum add_and_sum(x, y)可以对一个或多个函数进行逐行分析,相对于%prun的宏观分析,%lprun则做微观层面分析
  • !command,比如!ifconfig!ls可以在IPython中执行shell命令
  • %debug命令(在发生异常后马上输入)将会调用那个“事后”调试器,并直接跳转到引发异常的那个栈帧
  • %pdb命令可以让IPython在出现异常之后自动调用调试器,这个是很实用的一个功能

参考资料




如果本篇文章对您有所帮助,您可以通过微信(左)或支付宝(右)对作者进行打赏!


上一篇     下一篇