数据分析 PyDay05

第九章 IPython科学计算库(有点像是py标准库的升级,更具有方向性,很多优点)

IPython壳基础

自动补全

可以通过按下Tab键,搜索命名空间内的对象,并自动补全正在输入的字符。

IPython会自动隐藏以双下划线开始的实体属性(私有属性)和方法(私有方法)

访问私有属性或私有方法:输入点符号后,输入下画线,并按Tab键。

检查

  1. 检查变量(函数、类):变量名(函数名、类名)之前之后使用"?"会给出该对象的基本信息
  2. 查看该类的构造函数的详细信息:在它之前或者之后输入两个问号"??"
  3. "?" 和 通配符(*) 结合起来。例如:搜索pandas库中所有含有"lo"的对象
  4.  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会自动更新导入的库函数。

解决:

  1. 退出IPython壳,重新进入。
  2. Python的函数reload()可以保证每次运行脚本的时候都的到最后的库函数。当依赖的库比较多的时候,会比较麻烦。
  3. Ipython提供了dreload()函数。 dreload(lib_name)函数会寻找lib_name模块内的所有其它库,并且重新导入。

新的比较凌乱,欢迎大家的讨论,留下建议,小白新手上路,不喜勿喷。谢谢

你可能感兴趣的:(Python数据分析)