本书不适合入门
《数据科学入门》不适合作为你了解数据科学的第一本书。
这本书的不足之处,主要在于两点:一、中文可读性弱;二、代码可读性弱。
首先,说说中文部分。本书的中文显然是对原书的逐词直译,不符合我们对中文的阅读习惯。中文和英文的用词、标点符号位置、长短句的分割这些行文逻辑和习惯都是有显著差别的,然而本书并没有按照中文的行文习惯来解释名词、调整句子的顺序、突出段落中心思想。换言之,你需要用英文行文逻辑去阅读中文,这样阅读的理解难度是高于你直接看英文原文的。
再者,作者在书中时不时地使用了一些口语化表达,或是构建了一些情境来作为例子。他的本意可能是通过轻松诙谐的口吻来增添本书的趣味性、代入感。但是,由于“直译”和文化差异的原因,读者也不太容易理解这些本应轻松趣味的部分。另外,本书对术语的翻译是否符合国内从业者的使用习惯,这一点也有待商榷。
总的来说,中英文阅读思维的错乱造成了读者的理解障碍,使得读者很难代入书中、跟上作者的思路。就中文译文而言,本书说不上对小白读者友好。
那么,代码部分又如何呢?比较遗憾,书中的代码也不太好读,原因有三点。
第一点,书中的代码部分与正文部分在排版上没有显著的区分。本书的代码和正文部分是靠段落缩进、字体差异来区分的;而在我手头上另外两本Python学习书中,代码前后都是画有实线横线的,读者即使粗略扫一眼也能分清任一页上面的正文和代码的位置。对本书的排版,读者要区分代码的位置,就需要消耗一定的专注力辨别段落缩进。阅读学习本来就是一件耗费专注力的事情,读者的专注力不应该浪费在分辨书本的排版上。
第二点,书中的代码里的注释部分也被翻译成中文了。单看这一点可能没什么大不了,但是,如上文说到的中英文思维错乱和排版不直观的问题,加上注释翻译,三者结合的结果就是读者会迷惑“我现在是在看中文还是在看英文?”。如此一来,对于小白读者而言,本书中文部分令人似懂非懂;想看代码辅助理解,代码部分又让人难以代入,这样无形中提高了小白读者的理解和学习的门槛。我手中其他的Python学习书也会翻译代码注释。但因为这些书画了实线直线,在排版上把代码和正文部分清晰地区分开,所以读者可以更轻松地意识到这部分的中文是代码的注释,从而把专注力投入到理解代码含义本身。
第三点,书中的代码会引用作者自己写的程序。这一点也是让我费解的地方。本书原名为Data Science from Scratch,短语“from scratch”意为从零开始,按理说作者的意图应该是让读者不需导入任何第三方包、模块就可以编写程序、学习数据科学。但是,实际上本书读者需要另外下载作者为本书配套的程序模块,导入其中的一些函数来做计算。书中正文部分缺少导入模块的明确指示,而仅仅通过代码部分的import语句提示。客观地讲,要导入作者自编模块的情况在书中不算常见, 但足以让小白读者困惑。我自认愚钝,一开始我误以为书中的示例代码导入的是常见、通用的模块,还憨憨地试着用pip安装作者编写的线性代数程序,着实走了一些弯路。
此外,书中的代码部分是零碎的。后文代码会用到前文代码中编写的函数,但书中没有标示清楚这两段代码是要在同一个程序文件编写的。如果读者把书中一章的代码从头抄写一遍,可能就不会有这种困惑;但是如果读者认为前文简单而不需抄写代码,在后文却遇到需要通过抄写代码辅助理解的部分,那么他就会遭受代码分段所带来的困惑。我在阅读本书前,已阅读过《Python编程 从入门到实践》,这本书会清楚地在代码左侧标明这段代码在哪一个程序。珠玉在前,本书的排版结构自然相形见绌。
综上所述,《数据科学入门》这本书不适合作为你了解数据科学的“第一本”书。如果你之前已经有一定的数学、编程基础,也有过一些项目的实践经验,那么本书(的目录)可以为你指明了解数据科学知识体系的方向。但是,如果你此前没有接触过数据科学的相关知识,那么也不要指望本书能帮你理解新的概念和术语。