Python数据科学手册读书笔记(个人向) Chapter 1:IPython

好久不见,日常的忙碌告一段落之后终于可以继续做做自己感兴趣的事,看看自己感兴趣的书。

最近开了《Python数据科学手册》这本的新坑,缘由大概是之前研究matplotlib中数据可视化的basemap包时发现此书的结构和内容看起来还不错,故在豆瓣标记了想读。然后也是被国内图书的价格震惊到了,遂于读书日疯狂在亚马逊采购了一批书。

稍微介绍下这本书的背景,本书的内容主要包括Python在数据科学领域的基本工具(栈,我总喜欢称为Library 或者包 = =),包括Ipython, Jupyter, Numpy, Pandas, Matplotlib和 Scikit-learn(咦?高大上的机器学习?)。本书作者Jake VanderPlus是华盛顿大学eScience学院物理科学研究院院长,擅长Python科学计算和数据可视化,虽然我没听说过,但之前景大根专门被公司派去西雅图跟着华盛顿大学的一个类似于培训班的东西学习Python那么想来水平应该不会差。

这一系列的文章读者设定是自己,因为之前也提过自己的学习路径是LPTHW(笨办法学Python)到Python for Data Analysis再到廖雪峰先生的Python教学网站(嗯...老实说没学完还?印象中练习到了OOP), 学习此书更多的也是为了查漏补缺起一个巩固自己在python数据科学/科学计算方面知识的作用。 如此,这组个人向文章更多的是类似于读书笔记或者针对性的记录一些之前不曾掌握的知识,作为电子版笔记的存档,故对其他读者(倘若有)的借鉴意义不是很大
废话少说,Life is short, we use Python.

Chapter 1 Ipython: 超越Python

1.1 一种可行的Python安装方法

之前提过傻瓜式安装可以使用Anaconda发行版,傻瓜式集成数百个牵扯到数据分析和科学计算的包的一站式Python。
此书前言中提到如果不想一次性占据如此多的空间和根据需求再管理需要的程序包情况下,Anaconda也提供了一种叫做Miniconda的版本。内部仅包含了Python解释器和conda(command line),之后用到的包 都可以采取诸如:
conda install LibraryName即可

1.2 Ipython的两种形式

Python Shell 类似于现如今WIN10自带的power shell是一个命令行工具,对小白怎么理解呢...嗯就当是最早的DOS那种黑漆漆的环境是不是就可以了?
Jupyter Notebook 高大上多了,是基于浏览器的GUI。一般很适合用于课堂或者演讲演示,交互式的环境和简洁美观的格式都让人心情好很多(专业程序员应该十分鄙视?不过这个作者好像还挺推崇的)

第一章主要介绍了下Ipython的强大之处,说老实话看完这一章我也成了Ipython的半个粉丝,恨不得立刻抛下之前使用的Notepad++和IDLE重投Jupyter Notebook的怀抱,那么有哪些我事先不知道的特性打动了我呢?

1.3获取文档/获取源代码/自动补全

对象名/函数名+符号?
例:len? # len函数是自带的返回对象长度的函数#
可直接获取文档信息(事实上就是返回代码中的内嵌文档,一般一些的理解是我们在对象和函数内嵌的解释说明类注释,这也提示了我们应该养成在函数编写过程中添加功能性注释的好习惯)

对象名/函数名+符号??
这是获取源代码的快捷方式(所以使用了两个问号)
如果在使用过程中使用??发现不能显示源代码,说明我们查询的对象并不是由python语言实现,底层应该是使用C语言或者其他编译扩展语言实现,此种情况下,??后缀实现的功能等同于?后缀实现的功能(查看代码中的内嵌文档)

对象.<Tab>
一个十分有用的功能,Tab键自动补全未完成的内容(譬如对一个列表对象,你使用list.<tab>会得到所有关于列表对象的可用属性。当然你也可以先输入首字母等缩小<tab>自动补全的对象范围)
注1:python也与SQL语言一样,我们也可以使用wildcard(通配符)来模糊查询,这种方法好处是可以通过*匹配中间或者末尾的字符,相较于之,<tab>无法实现这个功能。

1.4 查询历史命令

一般我们在python中是通过向上键/向下键查询之前输入过的指令,Ipython在此之外还提供了ctrl+r输入相似字符来精确查找(可以理解成word/excel内的搜索功能,如果有多个满足条件的语句,多次按下ctrl+r可遍历各结果)

接下来介绍了Ipython最引以为豪的magic command(魔法指令)

1.5 粘贴代码块

当我们从其他网站拷贝代码块直接复制粘贴进python时总会有恼人的>或者->使得我们无法直接测试程序,这种错误大都是由缩进和解释符号引起的。而%paste解决了这个包含符号的多行输入问题。与之类似的,%cpaste会打开一个交互式的多行输入提示,在此提示下我们可以粘贴并执行一个甚至多个代码块

1.6 Ipython的输入和输出对象

我们常常在Ipython Shell中和Jupyter Notebook看到类似于 In [1]/Out [1]这样的标记,好像除了帮我们数行数没有更多的功能,看了本书第一章我才知道Ipython实际创建了叫做In和Out的python变量,这意味着我们可以调用这些变量进行后续推导计算。正如书中所说的,如果我们在执行一个非常复杂的计算并且希望重复利用运算结果,那么通过诸如演算 math.sin(Out [13]) * math.cos(Out[15])就变得非常有用了。
注2: In对象是一个列表, Out对象是一个字典。
注3: Out [x]的简写形式是 _x(即一条下划线加行号)

1.7Ipython终端直接执行shell命令

与标准Python解释器交互时,我们经常需要在多个python工具和系统命令行工具窗口中来回切换,而Ipython跨越了这个鸿沟,提供了从Ipython终端直接执行shell命令的语法,这个符号就是简单的感叹号(!)。任何在!之后的内容将不会通过python内核运行,而是通过系统命令行运行。
注4:不仅是执行,我们也可以将在shell中运行得到的对象存储到python中,值得注意的是这些结果并不是以列表的形式返回, 而是以Ipython中定义的一个特殊shell返回类型的形式返回:type = Ipython.utils.text.SList

1.8调试:Ipdb提示符

可以用于探索栈空间的当前状态,探索可用变量,甚至运行python命令。

1.9代码计时

%timeit指令可以让代码段重复运行来计算代码的运行时间,根据代码运行快慢,%timeit将自动调整并减少重复执行的次数。一个具有隐患的问题是重复操作并不一定适用于所有情况,譬如对一个预先排序好的列表进行排序,比对一个无需的列表排序要快,重复运行将使结果出现偏差。%timeit计时相较%timeit总是较短,这是因为它在底层做了一些聪明的事情来组织系统调用对计时过程的干扰(譬如%timeit阻止了garbage collection)
%timeit对于运行时间较长的命令来说,较短的系统延迟不太可能影响结果,此时%time魔法函数是一个不错的选择
注5:%time和%timeit都可以通过双百分号语法实现多行代码的计时

1.10分析整个脚本 %prun

1.11逐行分析 %lprun

1.12内存分析

%memit检测函数消耗内存
%mprun逐行代码的内存消耗检测

以上看出除了我们常见的魔法指令外,Ipython 在包括同时应对python解释器和命令行语句、获取额外信息(内嵌文档/源代码)、复制粘贴代码块等方面确实体现了超越python的优越性。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,098评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,213评论 2 380
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,960评论 0 336
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,519评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,512评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,533评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,914评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,574评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,804评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,563评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,644评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,350评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,933评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,908评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,146评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,847评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,361评论 2 342

推荐阅读更多精彩内容