Python数据处理:IPython使用学习笔记
Python数据处理:Numpy 学习笔记
Python数据处理:Pandas 学习笔记
转载并改编自《IPython使用学习笔记》,原文写得很好,但有些地方还待完成。我转载过来做了补充,进一步学习下,在此感谢原作者
本文是学习《利用python进行数据分析》第三章 IPython:一种交互式计算和开发环境的笔记,共享给大家,同时为自己作为备忘用。
安装ipython用pip即可。ps.博主用的是win7系统,所以接下来的都是在windows系统下操作的。
启动:开始菜单-输入cmd-回车-输入ipython
初尝试
可用看到使用ipython,数据输出的格式很规范,容易阅读
ipython在shell中输入表达式时,只要按下Tab键,当前命令控件中任何与输入的字符串相匹配的变量(对象、函数等)就会被找出来。
ps.之前我发现我的ipython没有Tab键自动补全功能,tab键的功能是缩进。最后 pip install pyreadline即可解决。
下面这个例子,输入b.后按下
1. 在变量的前面或后面加上一个问号(?)就可以将有关该对象的一些通用信息显示出来。这就叫做对象的内省。
如果对象是一个函数或实例方法,则其docstring也会被现实出来。
2. 使用??还将显示出该函数的源代码。
3. 一些字符串配以通配符(*)即可显示出所有与该通配符表达式相匹配的名称。
例如,我们可以列出Numpy顶级命名空间中含有“load”的所有函数
简直太棒了有木有!!!!!!!
1. 在ipython会话环境中,所有文件都可以通过%run命令当做Python程序来运行。
输入 %run 路径+python文件名称即可。
ps.《集体智慧编程》里面代码的执行可以用这个
2. 例子: 首先创建一个python脚本 :basic.py
在ipython中,可用使用%run 命令来执行这个脚本
可以看到,当%run命令执行完成后,ipython的当前执行环境中,就有了a、b、r这些变量,可以自由调用,这样非常方便功能扩展和调试
按下Ctrl-C就会引发一个KeyboardInterrupt。除了一些非常特殊的情况下,绝大部分python程序都会立即停止执行
其实不到真正使用我也记不住23333,在此粘贴给大家作为备忘。
- Ctrl-P 或上箭头键 后向搜索命令历史中以当前输入的文本开头的命令
- Ctrl-N 或下箭头键 前向搜索命令历史中以当前输入的文本开头的命令
- Ctrl-R 按行读取的反向历史搜索(部分匹配)
- Ctrl-Shift-v 从剪贴板粘贴文本
- Ctrl-C 中止当前正在执行的代码
- Ctrl-A 将光标移动到行首
- Ctrl-E 将光标移动到行尾
- Ctrl-K 删除从光标开始至行尾的文本
- Ctrl-U 清除当前行的所有文本译注12
- Ctrl-F 将光标向前移动一个字符
- Ctrl-b 将光标向后移动一个字符
- Ctrl-L 清屏
使用%run命令行的方式运行脚本或直接执行命令行,如果出错,则在默认情况下,IPython会打印出整个错误路径和异常的详细信息,对于每个方法堆栈的执行情况都打印的比较清楚。与标准Python壳比,使用Ipython排除程序错误更加高效。
粘贴在此以作备忘
- %quickref 显示IPython的快速参考
- %magic 显示所有魔术命令的详细文档
- %debug 从最新的异常跟踪的底部进入交互式调试器
- %hist 打印命令的输入(可选输出)历史
- %pdb 在异常发生后自动进入调试器
- %paste 执行剪贴板中的Python代码
- %cpaste 打开一个特殊提示符以便手工粘贴待执行的Python代码
- %reset 删除interactive命名空间中的全部变量/名称
- %page OBJECT 通过分页器打印输出OBJECT
- %run script.py 在IPython中执行一个Python脚本文件
- %prun statement 通过cProfile执行statement,并打印分析器的输出结果
- %time statement 报告statement的执行时间
- %timeit statement 多次执行statement以计算系综平均执行时间。对那些执行时 间非常小的代码很有用
- %who、%who_ls、%whos 显示interactive命名空间中定义的变量,信息级别/冗余度可变
- %xdel variable 删除variable,并尝试清除其在IPython中的对象上的一切引用
Ipython团队开发了一个基于Qt框架(其目的是为终端应用程序提供诸如内嵌图片、多行编辑、语法高亮之类的富文本剪辑功能)的GUI控制台。
在cmd启动ipython时,使用
ipython qtconsole --pylab=inline
来启动的话可为其添加绘图功能。
ps.这一步刚开始无法执行,我的解决方法是:
pip install qtconsole,就可以运行了- -..
通常我们通过在启动Ipython时加上--pylab标记来集成matplotlib
注意空格啊~是
ipython --pylab
执行效果如下:
历史命令用上下箭头就好啦,ctrl+p和ctrl+n 太麻烦啦。
ctrl+r用于实现部分增量搜索,按下ctrl+r并输入你想搜索的行中的几个字符。按下ctrl+r将会循环搜索历史命令中每一条与输入相符的行。
ipython将最近的两个输出结果保存在_(一个下划线)和__(两个下划线)变量中
输入的文本被保存在名为_iX的变量中,其中X是输入行的行号。比如说,在输入完27行后,就会产生两个新变量_27(输出变量)和_i27(输入变量)
我这儿就拿第八行举例子吧2333
执行%logstart既可开始记录日志
在ipython中,以感叹号(!)开头的命令行表示其后的所有内容需要在系统shell中执行。
##再启动一个python解释器
在使用!时,ipython还允许使用当前环境中定义的python值。只需要在变量名前面加上$即可
魔术命令%alias可以为shell命令自定义简称。
ipython有一个简单的目录书签系统,它使你能保存常用目录的别名以实现快速跳转。
命令 %bookmark
我想设定E:\WorkSpace\Python\BasicDemo目录为基本目录,会经常使用或者跳转到这里,因此设置书签WS,指向此地址:
%bookmark WS E:\WorkSpace\Python\BasicDemo
定义好bookmark后,可以使用cd方法进入这个目录
cd WS
还可以使用%bookmark -l命令来查看所有设置了的书签
%bookmark -l
调试代码的最佳时期之一就是错误刚刚发生那会儿。
%debug命令(在发生异常之后马上输入)将会调用哪个“事后调试器”,并直接跳转到引发异常的那个栈帧(stack frame)
这儿需要打开ipython_bug.py文件,需要的同学可以问我要,路径还需要自己改一改。
在这个调试器中,可以执行任意python代码并查看各个栈帧中的一切对象和数据(也就是解释还“留了条生路”的那些)。
默认从最低级开始的(即错误发生的地方)。
输入u(up)和d(down)即可在栈跟踪的个级别之间的切换
执行%Pdb命令可以让ipython在出现异常之后自动调用调试器。
此外,调试器还可以为代码开发工作提供帮助,尤其是当你想要设置断点或对函数、脚本进行单步调试以查看各条语句的执行情况时。
实现这个目的的方式有几个:
*********************待完善
*********************待完善
有时候你可能会希望了解某个复杂计算过程中到底是哪些函数占用的时间最多。
ipython专门提供了两个魔术函数(%time和%timeit)以便自动完成该过程。
%time一次执行一条语句,然后报告总体执行时间。
例子:下面是一个拥有60万字符串的数组,以及两个不同的“能够选出其中以foo开头的字符串”的方法:
#一个非常大的字符串数组
strings = ['foo','foobar','baz','qux','python','Guido Van Rossum']*100000
method1 = [x for x in strings if x.startswith('foo')]
mathod2 = [x for x in strings if x[:3] == 'foo']
啦啦啦 差距出来了。
但是这并不是一个非常精确的结果,如果你对相同的语句多次执行%time的话,就会发现其结果是会变的。(亲测真的会变233看下图)
为了得到更为精确的结果,需要使用魔术函数%timeit,对于任意语句,它会自动多次执行以产生一个非常精确的平均执行时间。
在进行数据分析的时候,往往需要检测代码的性能。Python主要的代码分析工具是cProfile模块,cProfile运行一段代码,并且记录下每个函数所花费的时间。命令行为:
!python3 -m cProfile filename.py
!python3 -m cProfile -s cumtime filename.py # 加cumtime列的排序
而除了上面的python命令行外,IPython还提供了非常简易的指令来使用cProfile: %prun和%run,%prun不是运行.py文件,而是运行任意的声明
%prun -l 10 -s cumtime someModule.someFunction()
IPython Notebook使用浏览器作为界面,向后台的IPython服务器发送请求,并显示结果。在浏览器的界面中使用单元(Cell)保存各种信息。Cell有多种类型,经常使用的有表示格式化文本的Markdown单元,和表示代码的Code单元。
每个代码单元都有一个输出区域,在Code单元中输入代码,按 Shift-Enter 将运行此代码,代码中最后一个表达式的值将输出区域显示。如果希望屏蔽输出,可以在最后一条语句之后添加一个分号:”;”。此外,代码中还可以使用 print语句在输出区域中显示信息。
在Markdown单元中还可以直接使用Html和Javascript。
#启动命令:命令行输入
jupyter notebook
# 如果jupyter命令不存在,则要先安装jupyter,命令:pip install jupyter
命令按回车后,会弹出一个浏览器对话框,地址默认一般是http://localhost:8888/tree#,
有时候还会让输入用户密码,找到%安装路径%/Jupyter/runtime/notebook_cookie_secret下的token,复制输入到浏览器对话框中,就能登录成功
如下:
其中:
1.保留有意义的对象和数据
2.扁平结构要比嵌套结构好
3.无惧大文件
(一)让你的类对ipython更加友好
(二)个性化和配置