
Foreword 前言
为什么要写这本书
我接触大数据技术的时间算是比较早的,四五年前当大数据这个词火遍互联网的时候,我就已经在实验室里学习编程及算法的知识。那个时候我一心想要做学术,每天阅读大量的英文文献,主要兴趣更多的是在机器人和人工智能上。研究生毕业时我本来想实现早先的愿望,继续攻读博士学位,不过思来想去觉得不应该错过大数据这个机会,所以毅然决定投入大数据行业中。
在工作之初,市面上已经存在一些介绍大数据相关技术的权威著作,其中很多还是很底层的或特定领域的专著。但即使是我这种自诩为“学院派”的人看这些书,头脑也会经常开小差。而大数据相关的技术又特别庞杂,包括计算框架、网络爬虫、机器学习算法、编程语言、数据库、文本分析、数据流水线的架构,甚至还包括前端可视化等众多方面,只有对它们都有涉猎,才能更好地胜任相关的工作。所以我读过很多的相关图书,这确实为我以后的工作打下了坚实的基础,不过随着工作内容的增加,以及新同事的到来,更多的问题相继涌现。首当其冲的就是,并不是每个人都有足够的基础来阅读这些专业著作,而且每个人的情况各不相同,有的是编程基础差,有的是数学基础差,有的是英语基础差,这也导致我的这套学习方法难以推广开来。所以我想写一本关于大数据技术的手册,其目的并不是为读者讲明白所有技术背后的原理,而是告诉读者某项技术可以用于哪些工作中,哪些工作需要哪些工具。
读完这本手册,可以帮助读者建立一个相对完整的大数据生态的概念,其中所讲的每一个工具都值得读者进行更深入的研究(你也可以像我一样,对其中的两三项进行非常深入的研究),也许在研究过程中,你会成为该领域的专家。如果现在正在看这本书的你是一位技术决策者,那么我希望本书的介绍能帮助你下定决心使用其中的某项技术,比如写作全书的Python语言就是一门非常好的数据处理语言,它能快速编码,且具有强大的字符串处理能力,拥有大量成熟的大数据类库,这些都使Python成为数据科学领域无可争议的No. 1语言;或许你的团队可以仅用Python编写大规模分布式爬虫程序(虽然本书介绍的是单机的简化版)就能大幅度地提升工作的效率。Scrapy可能是爬虫领域最有名的框架了,你也可以像我一样实现属于你自己的版本。当然这本书也是一本Python入门书,所以读者无须担心阅读门槛,你可以从零基础开始学习,并体验整个学习过程所带来的愉悦。
读者对象
根据工作职责的不同,我为本书划分出了一些可能的读者,具体如下。
❑ 想要了解大数据生态的学生。
❑ 需要快速入门大数据的技术人员。
❑ 需要了解技术细节以做决策的技术管理者。
❑ 希望入门Python但不知如何下手的编程爱好者。
如何阅读本书
本书分为三部分,其中第1~4章是Python基础,这个部分会介绍阅读本书所必须掌握的Python知识,但并不会包含很复杂的编程知识,比如面向对象编程就不是必要的,因为Python支持过程式编程,可以直接编写函数,使用这种方式编程更适合教学,因为所有的执行步骤都是线性的,方便逐步讲解。第5~7章讲解的是Python直接提供的数据处理工具,这些工具包括一些易用的数据结构、标准库和第三方工具。学习这些工具可以让我们快速地实现某些简单的算法,而不用花费大量的时间“重复造轮子”,Python处理数据的高效性在此处将体现得淋漓尽致。第8~12章是一些实际的案例,将会涉及Python主要擅长的几个领域:统计、爬虫、科学计算、Hadoop&Spark中的集成、图计算等。最后的三个附录分别介绍了关于Python的一些扩展知识,比如如何编写同时兼容Python 2和Python 3的代码,如何安装完整Python开发环境,以及一些常用的Python技巧,如处理时间、文件I/O等。
勘误和支持
由于笔者的水平有限,编写的时间也很仓促,书中难免会出现一些错误或不准确的地方,恳请读者批评指正。另外本书的部分代码会上传到Github上,其网址为:https://github.com/magigo/data_science_tool_book_code。你可以将书中的错误发布在Issues中,或者向我提问,我会尽可能地回答你的问题。当然如果是比较好的问题我也希望你能在知乎上邀请我回答,这样就能有更多的人受益于你的问题,我的知乎主页为:https://www.zhihu.com/people/ji-lu-15-70。如果你有更多的宝贵意见,也欢迎你发送邮件至我的邮箱magi-go@126. com,我很期待能够听到你们的真挚反馈。
致谢
首先要感谢“仁慈的独裁者”吉多·范罗苏姆(Guido van Rossum),他在我出生的那一年(1989年)发明了Python编程语言,不仅为我带来了一份全职的工作,还为我带来了无尽的乐趣。而且我与Python似乎真的有着某种缘分,不仅出生年份相同,生肖也相同,不知道吉多是否知道1989年正好也是我国的农历蛇年呢。
感谢机械工业出版社华章公司的编辑Lisa邀请我写作本书,刚开始时我乐观地估计本书很快就能写作完成。不过就像大多数软件项目一样——它延期了。感谢Lisa在百忙中适时地督促我写作,没有她我想这本书与读者见面的时间还会延后。
最后我要特别感谢我的爸爸、妈妈和前女友(你知道我要强调“前”这个字),感谢你们促进了我的身心成长,是你们促使我变得像现在这般强大!
谨以此书,献给我最亲爱的家人,以及众多热爱Python的朋友们。
纪路
中国,北京,2017年1月