数据分析 PyDay05
第九章 IPython科学计算库(有点像是py标准库的升级,更具有方向性,很多优点)
IPython壳基础
自动补全
可以通过按下Tab键,搜索命名空间内的对象,并自动补全正在输入的字符。
IPython会自动隐藏以双下划线开始的实体属性(私有属性)和方法(私有方法)
访问私有属性或私有方法:输入点符号后,输入下画线,并按Tab键。
检查
检查变量(函数、类):变量名(函数名、类名)之前或之后使用”?”会给出该对象的基本信息
查看该类的构造函数的详细信息:在它之前或者之后输入两个问号”??”
“?” 和 通配符(*) 结合起来。例如:搜索pandas库中所有含有”lo”的对象
pandas.*lo*?
%run命令
Python脚本都可以在IPython的环境下运行,工作路径下有一个test_run.py脚本文件,运行:
%run test_run.py
通过Ctrl+C出发KeyboardInterrupt异常的方式来终止正在运行的程序。
快捷键
C代表Ctrl
C+P 从当前位置向前查找命令行历史
C+N 从打开壳开始查找命令行
C+C 终止程序运行
C+A 把光标移动到命令行开始处
C+E 把光标移动到命令行结尾处
C+K 删除一行文本
C+L 清楚屏幕
异常和错误定位
%run命令行的方式运行脚本,出错时,会打印整个错误路径和异常的详细信息。
IPython排除程序错误比python高效
%xmode魔法方法控制谁出错误信息(任何以%作为前缀的方法都可以被称作魔法方法) %timeit魔法方法来检查程序运行的时间。
融合Matplotlib库和Pylab模型
- Python标准库中,如果绘图,每次绘好图之后必须关闭图形窗口才能继续输入命令。
- Ipython库融合了Matplotlib库,而Pylab模型是Matplotlib库提供给用户的绘图接口,和Matlab的绘图语法很接近。
- 可以在终端发起融合了Matplotlib库并以Pylab的方式绘图的IPython壳。
ipython –pylab
输入输出变量
- 当处理一个复杂问题的时候我们经常会用到多个变量和函数,可能会犯一些错误比如:忘记把函数的输出值赋给一个变量,而其他函数正好需要这个输出值作为输入值的时候。需要重新计算。
- 在IPython中,使用_(单下画线)指代最近一次的输入值,使用__(双下画线)指代最近一次的输出值
交互式调试器
- 代码运行错误时会按照代码的执行顺序打印全部调用路径,接着输入%debug,只打印出错的那部分代码。
- 如果是调试(Debugger)模式,可以任意执行代码的一部分并且检查其中的函数,数据等对象。默认处于调用路径的最后一层。可以通过u(向上)或者d(向下)(操作左边箭头)改变路径的位置
计时
通常我们需要通过计时知道哪一部分用到的时间多,以便对代码进行优化。
- Python的time模块可以记录时间,但是当代码量十分大的时候,会有很多重复工作。
- IPyhon的%time和%timeit魔法方法可以避免这其中的重复工作
使用%time多次测试同一个代码的时候会发现运行时间会有轻微的变化,因为这不是一个精确的方法。%timeit在多次运行后,报告平均时间。
%timeit是多次运行同一个声明或者函数并计算均值。如果代码的运行时间比较短,比如在微妙或者纳米级别,那么每次的时间波动会比较大,取多次运行的平均值,更恒反映实际。
重新载入模块
经常导入一个库后,如果对里面的函数进行了修改,再次运行脚本Python会使用之前的函数而不是最新的。因为IPython只导入一次库。Matlab会自动更新导入的库函数。
解决:
- 退出IPython壳,重新进入。
- Python的函数reload()可以保证每次运行脚本的时候都的到最后的库函数。当依赖的库比较多的时候,会比较麻烦。
- Ipython提供了dreload()函数。 dreload(lib_name)函数会寻找lib_name模块内的所有其它库,并且重新导入。
新的比较凌乱,欢迎大家的讨论,留下建议,小白新手上路,不喜勿喷。谢谢
原文作者: 冯亚杰(DanBoard·Feng)
原文链接: http://danbo3110.github.io/2019/10/23/数据分析 PyDay05/
版权声明: 转载请注明出处(必须保留作者署名及链接)