本文为《利用Python进行数据分析》的部分读书笔记
IPython项目旨在开发一个更具交互性的Python解释器,它使用了一种执行-探索工作流来替代其它语言中典型的编辑-编译-运行工作流。它还提供针对操作系统命令行与文件系统的易用接口。Jupyter项目旨在设计一个适用于更多语言的交互式计算工具。IPython web notebook则成为Jupyter notebook。IPython系统目前可以作为一个内核用于在Jupyter中使用Python。
总而言之,IPython就是一个加强版的Python解释器,Jupyter notebook则是一种基于web的代码笔记本。
$ ipython
Python 3.7.4 (default, Aug 9 2019, 18:34:13) [MSC v.1915 64 bit (AMD64)]
Type 'copyright', 'credits' or 'license' for more information
IPython 7.8.0 -- An enhanced Interactive Python. Type '?' for help.
In [1]:
$ jupyter notebook
jupyter notebook可以作为本地计算环境,也可以部署在服务器端。在服务器中开启Notebook服务,即可在本地的浏览器端进行访问。
在配置文件中可以
运行下列指令:
jupyter notebook --generate-config
上面的代码会将默认配置文件写入主目录下的.jupyter/jupyter_notebook_config.py。我win10电脑上的路径为D:\Software\Cadence\Cadence\SPB_Data.jupyter\jupyter_notebook_config.py,打开相应文件后即可进行配置。也可以将其重命名为不同的文件,之后在启动jupyter notebook时添加–config参数使用该配置:
jupyter notebook --config=D:\Software\Cadence\Cadence\SPB_Data\.jupyter\jupyter_notebook_config.py
参考:https://blog.csdn.net/nico2333/article/details/84186063
在jupyter_notebook_config.py中搜索c.NotebookApp.notebook_dir
,将它的值设置为想要的路径即可
IPython中的特殊命令被称为魔术命令,前缀符为%。大多数魔术命令都可以使用?查看额外的命令行参数。
%run hello_world.py
%run -i hello_world.py #让待运行的脚本使用交互式IPython命名空间中已有的变量
%load hello_world.py
%timeit np.dot(a,a)
IPython会话存储对输入和输出命令的引用,并将特定变量中的Python对象输出。前两个输出分别存储在_(一个下划线)和__(两个下划线)变量中
输入变量存储在_iX变量中,X为输入行号。对于每个输入变量,都有一个对应的输出变量_X
由于输入变量是字符串,可以使用exec函数再次执行它们
exec(_i19)
在处理非常大的数据集时,即使使用del删除变量,IPython的输入和输出历史记录也会导致引用的所有对象不会被垃圾回收。这种情况下,可以使用%reset和%xdel来避免内存问题
#Linux
ip_info = !ifconfig wlan0 | grep "inet"
foo = 'test*'
!ls $foo
%alias ll ls -l
%alias test_alias (ls; cd ..; ls)
%bookmark py4da /home/richard/pydata-book
!cd py4da
%bookmark -l #列出所有书签
IPython集成并增强了内置的Python pdb调试器,加强的地方包括tab键补全、语法高亮以及异常回溯中每一行的上下文。
Python调试器命令:
命令 | 动作 |
---|---|
h(elp) | 展示命令列表 |
help command | 显示command命令的文档 |
c(ontinue) | 恢复程序执行 |
q(uit) | 退出调试器 |
b(reak) number | 在当前文件的number位置设置断点 |
b(reak) path/file.py:number | 在指定文件的number位置设置断点 |
s(tep) | 单步进入函数调用 |
n(ext) | 执行当前行,并进入到当前层级的下一行 |
u§/d(own) | 在函数调用堆栈中上下移动 |
a(rgs) | 显示当前函数的参数 |
debug statement | 在新的(递归)调试器中调用语句statement |
l(ist) statement | 显示当前堆栈的当前位置和上下文 |
w(here) | 在当前位置打印带有上下文的完整堆栈回溯 |
调试器命令优先于变量名称,在这种情况下,变量前面加上!来检查变量内容
from IPython.core.debugger import Pdb
import sys
def set_trace():
Pdb().set_trace(sys._getframe().f_back)
def debug(f, *args, **kwargs):
return Pdb().runcall(f, *args, **kwargs)
代码分析更多关注于时间开销的位置。使用Python分析工具cProfile模块。cProfile执行程序或任意代码块,同时记录每个函数花费多少时间。
conda install line_profiler
%load_ext line_profiler