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


    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

Variable Explorer


    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

Additional Features


History Log     Browse the commands entered on all consoles in chronological order     Learn More     Array Editor     Edit the contents of various variable types through the Variable Explorer     Learn More
Online Help     Explore dynamically generated documentation of all installed modules     Learn More     Project Explorer     Manage large programming efforts with various project facilities     Learn More
Pylint integration     Analyze your source code for bugs and signs of poor coding quality     Learn More     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) 

点这里可以跳转到人工智能网站

发表评论