利用 Python 进行数据分析 (一):IPython 及 Jupyter notebook

  • 本文为《利用 Python 进行数据分析》的读书笔记

IPython 与 Jupyter notebook 简介

  • IPython 项目旨在开发一个更具交互性的 Python 解释器,它使用了一种执行-探索工作流,还提供针对操作系统命令行与文件系统的易用接口
  • Jupyter 项目旨在设计一个适用于更多语言的交互式计算工具。IPython web notebook 则成为 Jupyter notebook。IPython 系统目前可以作为一个内核用于在 Jupyter 中使用 Python
  • 总而言之,IPython 就是一个加强版的 Python 解释器Jupyter notebook 则是一种基于 web 的代码笔记本

IPython 基础

使用 IPython 命令行

$ 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

  1. 在本地运行 Jupyter notebook (jupyter notebook 可以作为本地计算环境,也可以部署在服务器端。在服务器中开启 Notebook 服务,即可在本地的浏览器端进行访问)
$ jupyter notebook
  1. 新建一个笔记本
    ![在这里插入图片描述](https://img-blog.csdnimg.cn/20200529184445910.png
  2. shift+enter运行代码
    在这里插入图片描述
  3. 保存代码
    在这里插入图片描述

配置文件

在配置文件中可以

  • 更改颜色主题
  • 执行任意Python语句(例如导入常用的库以及一些你希望每次启动IPython就运行的程序)
  • 启动IPython扩展
  • 激活Jupyter拓展
  • 自定义魔术函数或系统别名

运行下列指令:

jupyter notebook --generate-config

上面的代码会将默认配置文件写入主目录下的.jupyter/jupyter_notebook_config.py。我win10电脑上的路径为C:\Users\ljxt\.jupyter\jupyter_notebook_config.py,打开相应文件后即可进行配置。也可以将其重命名为不同的文件,之后在启动 jupyter notebook 时添加--config参数使用该配置:

jupyter notebook --config=C:\Users\ljxt\.jupyter\jupyter_notebook_config.py

Jupyter Notebook 文件默认目录的查看以及更改

参考:https://blog.csdn.net/nico2333/article/details/84186063

在jupyter_notebook_config.py中搜索c.NotebookApp.notebook_dir,将它的值设置为想要的路径即可

Tab补全

  1. 对对象的属性名称进行补全
    在这里插入图片描述
  2. 路径补全
    在这里插入图片描述
  3. 函数关键字补全
    在这里插入图片描述

内省

  1. 在一个变量名的前后使用问号(?)可以显示一些关于该对象的文档字符串以及其他概要信息:
    在这里插入图片描述
    在这里插入图片描述
  2. 使用双问号显示函数源代码
    在这里插入图片描述
    在这里插入图片描述
  3. 搜索IPython命名空间
    在这里插入图片描述
    在这里插入图片描述

魔术命令

IPython中的特殊命令被称为魔术命令,前缀符为%。大多数魔术命令都可以使用?查看额外的命令行参数。

  1. %run: 在IPython会话中运行任意Python程序文件
%run hello_world.py
%run -i hello_world.py #让待运行的脚本使用交互式IPython命名空间中已有的变量
  1. %load: 将脚本导入一个代码单元
%load hello_world.py
  1. %time: 报告单个语句的执行时间
    在这里插入图片描述
    wall time(壁钟时间) 测量的时间不是一个非常精确的测量
  2. %timeit: 多次运行单个语句计算平均执行时间,对于执行时间很短的分析语句和函数特别有用,测得时间也更加精确
%timeit np.dot(a,a)
  1. %pwd: 显示当前工作目录
    其输出可以赋给一个变量
    在这里插入图片描述

matplotlib集成

在这里插入图片描述

使用虚拟环境

conda install nb_conda

之后再重启 jupyter notebook,在新建文件的选项上就可以选择想要使用的虚拟环境了

在这里插入图片描述

更多 IPython 系统相关内容

输入和输出变量

  1. IPython会话存储对输入和输出命令的引用,并将特定变量中的Python对象输出。前两个输出分别存储在_(一个下划线)和__(两个下划线)变量中
    在这里插入图片描述

  2. 输入变量存储在_iX变量中,X为输入行号。对于每个输入变量,都有一个对应的输出变量_X
    在这里插入图片描述
    由于输入变量是字符串,可以使用exec函数再次执行它们

exec(_i19)

删除变量

在处理非常大的数据集时,即使使用del删除变量,IPython的输入和输出历史记录也会导致引用的所有对象不会被垃圾回收。这种情况下,可以使用%reset和%xdel来避免内存问题

  1. %reset: 删除交互式命名空间中所有的变量/名称
  2. %xdel: 从IPython机器中移除对象的所有引用

与操作系统交互

  1. !cmd: 在系统命令行中执行cmd命令
    在这里插入图片描述
  2. output = !cmd args: 运行cmd并在output中保存stdout
#Linux
ip_info = !ifconfig wlan0 | grep "inet"
  1. 使用变量作为命令参数
foo = 'test*'
!ls $foo
  1. %alias: 为shell命令自定义快捷键
%alias ll ls -l
%alias test_alias (ls; cd ..; ls)
  1. %bookmark: 目标书签系统允许保存通用目录别名,以便轻松跳转
%bookmark py4da /home/richard/pydata-book
!cd py4da
%bookmark -l #列出所有书签
  1. %cd directory: 将系统工作目录更改到传递的目录
  2. %pwd: 返回当前工作目录

软件开发工具

debug: Python pdb 调试器

  • 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( p \text p p)/d(own)在函数调用堆栈中上下移动
a(rgs)显示当前函数的参数
debug statement在新的(递归)调试器中调用语句statement
l(ist) statement显示当前堆栈的当前位置和上下文
w(here)在当前位置打印带有上下文的完整堆栈回溯
  • 调试器命令优先于变量名称,在这种情况下,变量前面加上 ! 来检查变量内容
小例子
  1. 在异常发生后立刻输入 %debug,可以唤起调试器并进入抛出异常的堆栈区,默认从最底层即错误发生的地方开始。通过 u 和 d,可以在堆栈回溯的不同层级间切换
    在这里插入图片描述在这里插入图片描述
  2. %run -d xxx.py: 在执行所有传递的脚本中的代码前唤起调试器,用于单步执行脚本。必须按下 s(step) 来进入脚本。%run -d -b2 xxx.py 会启动一个已经设置了断点的调试器 (在第 2 行设置断点)
    在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述
set_trace(), debug()
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)
  • set_trace() 在代码中调用可以充当断点
    在这里插入图片描述
  • debug() 允许在任意函数调用中唤起交互式调试器
    在这里插入图片描述

代码分析

代码分析更多关注于时间开销的位置。使用Python分析工具cProfile模块。cProfile执行程序或任意代码块,同时记录每个函数花费多少时间。

  1. python -m cProfile -s cumulative xxx.py: 在命令行上运行整个程序,并输出每个函数的聚合时间。
    %run -p有相同效果
    -s用于指定一个排序顺序
    在这里插入图片描述
  2. %prun: 与cProfile采用相同的命令行选项,但会分析任意Python语句而不是整个.py文件
    -l 7表示取前7行
    在这里插入图片描述
  3. %%prun: 分析整个代码块
    在这里插入图片描述
  4. 逐行分析函数
  • 安装line_profiler
conda install line_profiler
  • 开启IPython扩展
%load_ext line_profiler
  • 使用%lprun进行分析
    在这里插入图片描述
    在这里插入图片描述
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值