IPython
Table of Contents
1. Commands
通常%用于测试单行语句,而%%用于块语句
1.1. 功能指令
- %time: Time the execution of a single statement
- %timeit: Time repeated execution of a single statement for more accuracy
- %prun: Run code with the profiler
- %lprun: Run code with the line-by-line profiler # %load_ext line_profiler
- %memit: Measure the memory use of a single statement # %load_ext memory_profiler
- %mprun: Run code with the line-by-line memory profiler
- `%%cython` 用来编译cython代码, 而且必须放在在cell第一行
- 调用前用 ` %load_ext cython` 加载cython模块。
- `@numba.jit` 使用numba jit来加速数值运算。
1.2. 编辑指令
- `!shell-command` 用来执行外部shell命令,同时可以将结果传给变量比如 `x = !pwd`.
- %quickref 显示notebook命令
- %history -n 1-4 历史命令1-4条
- %debug 进入调试模式,如果需要自动打开可以使用%pdb on
- %save filename n1-n2 保存历史上执行的命令,按照编号存取
- %store output_variable > output.txt 把变量内容输出到文件
- %logstart/off/on/stop 可以保存ipython下面所有执行的命令
- %reset 清除当前session下面所有的变量
- %xdel variable 清除当前sesison的某个变量
- %bookmark <name> <dir> / cd <name> / %bookmark -l 书签系统
- %who/%whos/%who_ls 列举当前环境下所有的变量
- %cpaste 格式化粘贴代码
- %page variable 通过分页器打印变量
2. Tricks
2.1. Biolerplate
import pandas as pd import numpy as np %matplotlib inline import matplotlib.pyplot as plt plt.style.use('fivethirtyeight') # import seaborn as sns # sns.set() # https://matplotlib.org/3.1.0/api/matplotlib_configuration_api.html#matplotlib.RcParams plt.rcParams['font.sans-serif']=['SimHei'] #用来正常显示中文标签 plt.rcParams['axes.unicode_minus']=False #用来正常显示负号 plt.rcParams['figure.figsize'] = (15, 5) # x,y轴字体大小,x属性字体大小,每个曲线标题字体大小 plt.rcParams['xtick.labelsize'] = 15 plt.rcParams['ytick.labelsize'] = 15 plt.rcParams['axes.labelsize'] = 20 plt.rcParams['legend.fontsize'] = 18 # 或者使用下面这个方式 # plt.rc('font', **{'sans-serif': ['SimHei']}) # plt.rc('axes', **{'unicode_minus': False}) # plt.rc('figure', **{'figsize': (10, 10)}) np.set_printoptions(precision=4) pd.set_option('display.width', 5000) pd.set_option('display.max_columns', 60)
2.2. Remote Notebook
UPDATE @ 2016-08-26: 发现下面方法可以用来解决remote ipython notebook的问题.
- 首先在目标机器dev上启动ipython notebook. `jupyter notebook –no-browser –port=8888`
- 然后在本机上选择绑定端口比如1000. `ssh -L "*:10000:dev:8888" dev`
之后就可以在本地使用 `http://localhost:10000` 来访问远端的notebook了.
2.3. 绘制图形的一些技巧
绘制图的时候尽可能地将数据组织成为DataFrame,然后调用DataFrame的plot方法画出来。这样可以省去标注等问题,并且只需要记住DataFrame的API即可。比如要绘制两个柱状图
df = pd.DataFrame() df['a'] = a; df['b'] = b df.hist(alpha=1, bins = 200, figsize=(20, 10))
尽可能地让plot往DataFrame上靠,而不是将DataFrame拆开以适应plot,虽然df上的方法相比native matplotlib弱很多,但是good enough.
此外如果需要分开两个axes来绘制的话,可以在plot时候加上参数ax
fig, (ax1, ax2) = plt.subplots(1,2, sharey=True) df_cluster['招商银行'].plot(figsize=(20, 10), ax=ax1, legend=True, color = 'r', linewidth=1) df_cluster['中信银行'].plot(figsize=(20, 10), ax=ax2, legend=True, color = 'b', linewidth=1) # df_cluster.plot(figsize=(20, 10), color = 'yb', linewidth=2)