Anaconda的使用

1、anaconda介绍

         Python虽然是一门优秀的程序语言,但其拥有出色的数据处理能力,尤其是在数据量巨大的时候,因而也吸引了不少数据分析人员的关注和使用。Python的数据处理能力主要依赖于NumPy,SciPy,Matplotlib,Pandas这4个库,其中NumPy提供了矩阵运算的功能,SciPy则在NumPy的基础上添加了许多科学计算的函数库,而这两个库就使Python具有和Matlab一样的数据处理能力了。Matplotlib库提供了绘图,可以实现数据的可视化,pandas是基于NumPy的一种工具,该库提供了高效地操作大型数据集所需的工具。而这四个库都需要我们进行单独安装,Python自身并不具备这些库。

        一般的Python数据分析教程并不直接在Python shell中运行代码,而是选择了IPython,IPython 是一个 python 的交互式 shell,比传统的Python shell 好用得多,支持变量自动补全,自动缩进,支持 bash shell 命令,内置了许多很有用的功能和函数。总而言之,IPython就是各种方便,各种好用!让你自从用了IPython就会嫌弃用Python,就像用了RStudio就不再想用R GUI。

        而IPyhon的安装较为麻烦和复杂,一般人很难安装成功,幸好有大神将科学计算所需要的模块以及IPython打包供用户使用,Anaconda就是其中较好的一个。简言之,安装了Anaconda,你就安装了Python+NumPy+SciPy+Matplotlib+IPython+IPython Notebook。所以,我们仅仅安装Anaconda就可以了!

        Anaconda的下载地址:https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/

        Anaconda的资源包下载地址:https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/


2、anaconda的使用

        Anaconda的使用IDE常用的有5种:python、ipython、spyder、ipython qtconsole和ipython notebook。


1) spyder

       

Editor


Anaconda的使用_第1张图片

    A powerful editor is a central piece of any good IDE. Spyder's editor has:

  • Syntax coloring for Python, C/C++ and Fortran files
  • Powerful dynamic code introspection features (powered by rope):
    • Code completion and calltips
    • Go to an object definition with a mouse click
  • Class and function browser.
  • Occurrence highlighting.
  • To-do lists (TODO, FIXME, XXX).
  • Get errors and warnings on the fly (provided by pyflakes)
  • Breakpoints and conditional breakpoints to use with the python debugger (pdb).
Learn More

Console


    To easily interact with your code as you progress, Spyder lets you

  • Open as many Python and Ipython consoles as you want
  • Run a whole script. or any portion of it from the Editor
  • Have code completion and automatic link to documentation through the Object Inspector
  • Execute all consoles in a separate process so they don't block the application
Learn More
Anaconda的使用_第2张图片

Variable Explorer


Anaconda的使用_第3张图片

    With the Variable Explorer you can browse and analyze all the results your code is producing, and also

  • Edit variables with Spyder's Array Editor, which has support for a lot of data types (numbers, strings, lists, arrays, dictionaries)
  • Have multiple Array Editors open at once, thus allowing to compare variable contents
  • Import/Export data from/to a lot of file types (text files, numpy files, Matlab files)
  • Generate 2D plots of list and arrays
  • View local variables while you're debugging
Learn More

Object Inspector


    Quick access to documentation is a must for every programmer, either to explore new libraries or to remember how to use a piece of code. Spyder gives you the docs in three different formats:

  • Rich text (powered by Sphinx)
  • Plain text, to use when rich text is not working
  • Source code, to look at the internal implementation

    Learn More

Anaconda的使用_第4张图片

Additional Features


Anaconda的使用_第5张图片

History Log

    Browse the commands entered on all consoles in chronological order

    Learn More

   

Anaconda的使用_第6张图片

Array Editor

    Edit the contents of various variable types through the Variable Explorer

    Learn More

Anaconda的使用_第7张图片

Online Help

    Explore dynamically generated documentation of all installed modules

    Learn More

   

Anaconda的使用_第8张图片

Project Explorer

    Manage large programming efforts with various project facilities

    Learn More

Anaconda的使用_第9张图片

Pylint integration

    Analyze your source code for bugs and signs of poor coding quality

    Learn More

   

Anaconda的使用_第10张图片

Preferences

    Configure Spyder as you wish with a wealth of available preferences




2) ipython


初步

一旦您进入了ipython,ipython会提示您键入下面四个命令之一去试着使用ipython:

命令名 说明
? ipython特性的介绍和概述
%quickref 一份手册,包含了所有的命令
help python的帮助系统
object? 关于object的详细信息,如果键入object??会更详细

Ok,我们从这里开始,当然,首先是推荐您看一下quickref的。您注意到了,这个命令以%开头。所有以%开头的方法,都是所谓的魔术方法(Magic function),也就是ipython内置的一些方法。需要注意的是,魔术方法有%和%%之分,比如%timeit%%timeit。这玩意在ipython中有专门的叫法,前者叫line magic后者叫cell magic。顾名思义,前者是专门针对一行的命令,后者针对多行的命令(这是notebook中的术语,关于notebook请参阅最后),如是而已。

所有的魔术方法都可以查看源码,仔细阅读的话,对自己写代码也很有裨益,具体方法是在魔术方法后面加??,譬如%timeit??。代码是经过高亮和格式化的,应该很容易阅读才是。如果您有着奇妙的好奇心的话,想必刚才也尝试过%timeit?。区别是,这次没有源码出现对吧。但是其他信息,比如type什么的指导性内容会显示出来。

魔术方法会在下文专门一节来讨论,这里有个印象即可。

接下来说说?

?其实上面已经有所涉及,总之您知道了可以用?修饰魔术方法获取更详细的信息。但是不只是这样,?其实是可以修饰Python所有的对象。考虑到python中一切都是对象,所以您知道了,?事实上可以查看一切的变量(这里强调了是变量了,所以 1? 这样为什么会报错……恩哼?)。

尝试一下输入下面的代码,您会有更深入的了解。

In [1]: a = [1,2,3,4]
In [2]: a?
In [3]: list?
In [4]: import os
In [5]: os?
In [6]: os.open?
In [7]: super?

以上分别代表了变量,类,包,类中方法,内置函数,如您所见,均工作良好。把?替换为??,一般来说会得到更详尽的信息,,不过?通常就够了(对我而言)。另外,?其实作为前缀和作为后缀效果是相同的,只不过我更习惯放在后面而已。

上面的内容就是ipython最基础的部分,请务必熟悉。

魔术方法

ipython一个很(最)重要特性就是魔术方法,不过内置的魔术方法实在太多了点(试试使用%lsmagic看所有的魔术方法),这篇笔记当然不可能详述所有的魔术方法,这里会挑一些常用的来说,权作抛砖引玉。

pwd

如果您仔细看过前文,您会发现这个命令没有%,但是这个确实也是一个魔术方法,原因是,其实pwd这个命令只是一个链接,指向的是%pwd方法,%pwd指向系统的命令。当然这个命令含义很明显,就是打印当前路径。ipython把一些linux下常用的bash命令做了类似的处理,使用起来相当方便。我试了一下,大致有pwd,cd,whos,history,rm,ll,ls,mv,cp,alias,mkdir

!xxx

ipython虽然对不少常用命令做了封装,但是毕竟不会很多,比如突然希望执行vim或者top之类的linux命令,难道还需要切出去不成?其实不需要,因为ipython提供了一个额外的!语法去直接执行linux命令。比如,我需要执行top命令,那么在ipython中,只要这么写就好!top

更复杂的linux命令也是支持的,事实上,只要加上!,您完全可以把ipython当作bash来用。

而且,还可以赋值,比如这样:

files = !ls -1 -S | grep hello

%edit

编辑器在ipython下使用得如此频繁,以至于ipython专门有一个%edit方法。

不过默认效果估计会让您失望,因为没有指定的话,linux下默认会使用vi当作编辑器,windows下是notepad++(似乎?)。如果希望%edit打开自己喜爱的编辑器的话,需要在PATH中增加EDITOR项。

%run

ipython一般的使用,通常只是为了测试一行或者几行代码是否能够执行。究其原因,还是因为命令行中书写长代码相较于在文件中写代码并不方便,一方面是格式,另一方面是在命令行中写代码,一旦中间代码写错,修改起来还是很麻烦的。于是我们不得不一次次退出ipython,去python xxx.py执行。或者tmux开两个窗口来测试。

但是其实ipython已经提供了很方便的机制用来执行一个脚本,就是%run命令,%run可以简化为run。

使用起来类似于熟悉的python test.py,使用run test.py就好。run命令还可以附加选项,常用的有-t选项,这个会在脚本执行完后,打印出执行的cpu timings。如果指定了-t选项,后面可以跟一个-Nx,x代表一个数字。表示重复执行x次。

另外比较好用的是-d选项,这个会在pdb中运行脚本。后跟-bxx打断点。个人没有什么python调试的经验,您有兴趣可以亲自尝试。

还有一个-p选项,这个选项会开启python profiler,从而打印出详细的执行时间、函数调用等等信息供优化参考。

%timeit

这个命令用来测试一条命令执行的时间,一般而且,会重复100次运行这个命令,然后取出最好的3个结果取平均值。

试着执行下面的命令:

In[1]: %timeit [x*x for x in range(100000)]

同样,可以指定选项。

-n指定重复次数,默认100

-r是取多少个结果的平均值,默认是3

顺带一提,%timeit测出来的结果远比真实运行更快,原因是,timeit执行中,会暂时关闭掉垃圾回收(gc)。

shell中使用python变量

其实这个不算是魔术方法啦,只是单独列出来也不太合适,所以也就写在这里。

请看下面这段代码:

folder = 'data'
mkdir $folder
cd %folder

注意到了么,mkdir是一个魔术方法,它是%mkdir的一个链接,%mkdir事实上就是shell中的mkdir方法。而folder是一个python变量。但是,确实,shell下的命令访问了python的变量,只是在变量名前面加了$。如果您熟悉shell脚本的话,这种方式应该很亲切才对。

%bookmark

这个方法通常用来记忆路径,譬如说,您每次都需要cd进一个叫做github/miko/loli/shoujo的目录,这时候,您可以对这个路径做一个书签,%bookmark shoujo github/miko/loli/shoujo,这样以后就可以直接cd shoujo这样。

顺便,如果没有指定路径,会默认使用当前路径。

%alias

正如名字揭示的,这个方法用来指定别名。不过,ipython的%alias还能进行参数传递。

看看下面这段:

In [1]: %alias largest ls -1sSh | grep %s
In [2]: largest circles

很容易懂不是么?%alias后面跟的那个参数就是别名,然后可以通过%s来指定一个参数,使用时传入。

%store

默认的,别名只会存在于本次会话中,如果希望下次还能使用这个别名,使用%store方法存下来吧。%store latest

另外,没保存也不要紧,%store -r会恢复上次会话的别名。

%hist

ipython中history会保存所有会话中的记录,嘛,所以隔一年什么的记录就会相当多啦。

虽然我知道你们都会用up,down来寻找历史记录……恩,试试ctrl+r,有惊喜。

另外,类似于hist 3-7什么的,好像也不用我解释就是了。

-g选项和grep类似,可以查找些东西出来,然后-n显示行号,-f保存历史记录到文件中去,-p把行号显示为n:>>>-n把输入的结果显示出来(我猜没多少用这些个……

内省

最开始就解释过???了,如果对python比较熟悉的话,会意识到这其实就是内省。

后面这里有几个大概不会用到的方法……

%psource,%pfile,%pdoc,%pdef

其实就是把?的结果进行了摘录……额,有人会用么?

notebook

ipython中最让人惊艳(我觉得)的就是这个notebook功能,不过要启用这个,首先需要安装pyZMQ。然后执行ipython notebook,嘿,您看见了什么。一个基于web的ipython shell!

notebook实际上会在本地的8888端口开一个服务器(tornado),您所见到的首页,通常叫做notebook dashboard,它会列出所有的notebook。

每个notebook文件都是一个叫做.ipynb的扩展文件格式,这是一个包含了json的文件。

文件包含了从交互会话中取得的输入输出,然后还有一些metadata以供ipython使用。

notebook中的代码片段有个专门的术语叫做cell,这里事先说明。

notebook使用起来和ipython差不多,不过修改起来方便得多,并且可以建多个notebook,所以使用起来各种方便。不过,需要联网的库应该是用不了的,我测试requests没有成功……

执行一个cell使用ctrl+Enter,执行并新建一个新的notebook使用shift+enter,当然您去戳上面的按钮也是可以的。

您可以通过键入ctrl+M 然后 H来得知有那些键盘快捷键可以使用。

cell中当然也可以使用魔术方法,而且,由于notebook独特的优势,您可能需要测试多行代码,这时候,请别忘记用%%代替%

cell中有一个特殊的%%file方法,可以创建一个文件,具体使用是这样:

%%file nyanya.txt
hello world
this is nyanya
over

很简单不是么。

然后还有一个%%!方法。这个方法可以执行一些bash命令。

最后,notebook还可以充当一个markdown编辑器……

finally

3) ipython qtconsole

    与ipython一样的ide,并且支持Tab补全命令


4) python



5) ipython notebook

打开Notebook 
在CMD中输入ipython notebook 
这里写图片描述 
默认浏览器会打开http://localhost:8888/tree# 
这里写图片描述 
2.3新建Python(换行shift+enter) 
这里写图片描述



你可能感兴趣的:(python,工具软件)