Anaconda的使⽤
1、anaconda介绍
虽然是⼀门优秀的程序语⾔,但其拥有出⾊的数据处理能⼒,尤其是在数据量巨⼤的时候,因⽽也吸引了不少数据分析⼈员的关注和使⽤。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的下载地址:mirrors.tuna.tsinghua.edu/anaconda/archive/
Anaconda的资源包下载地址:mirrors.tuna.tsinghua.edu/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
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中⼀切都是对象,所以您知道了,?事实上可以查看⼀切的变量(这⾥强调了是变量了,所以 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把⼀些li
nux下常⽤的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)。
spyder python下载
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什么的,好像也不⽤我解释就是了。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论