作者序

信息管理专业Python教程:一本混编的开源书

在学术界,科研人员不断被洗脑的是“发表或消亡”,从头开始创造,做出原始创新。本书不是原始创新,而是对《像计算机科学家一样思考Python》(以下简称为《思考Python》)(Allen B. Downey, Jeff Elkner等著)这本书的一次混编实验。

2009年12月,我在密西根大学准备讲授“SI502-网络编程”这门课(连续第五学期开设),决定开始编写一本侧重于数据探索,而不是理解算法与抽象理论的Python教材。我的SI502课程目标是培养学生使用Python的终生数据处理技能。我的学生中间很少有人打算成为计算机程序员。相反,他们的职业规划是图书馆员、经理、律师、生物学家、经济学家等。他们希望在所从事的行业中能熟练运用技术。

我似乎找不到适合这门课的Python教材,侧重以数据为中心的,因此我决定要编写这样一本书。我打算利用假期时间从头编写这本书,所幸,在放假前三周的教职工会议上,Atul Prakash博士带给我一本书《思考Python》,他在那个学期使用这本书讲授Python课程。这是一本很棒的计算机专业教材,特点在于篇幅短、直白的解释以及易于学习。

本书的整体结构已经调整为尽可能快速地解决数据分析问题,包括一系列从基础到高阶的可运行的数据分析示例与练习。

第2-10章与《思考Python》内容类似,主要区别如下:面向数值的示例与练习被面向数据的练习取代;主题的顺序按照循序渐进原则,从简单数据处理到复杂的数据分析解决方案;一些主题,例如try与except调整到前面,作为第3章 “条件”的部分内容。由于函数比较抽象,没有过早出现,当需要处理程序的复杂性时才予以介绍。几乎所有用户定义的函数都从第4章的例代码与练习中移除了。本书不会出现“递归”1这个术语。

第1章和第11-16章的内容都是全新的,主要介绍Python的现实应用,包括一些用于数据分析的Python简单示例,例如,搜索与解析的正则表达式,计算机上任务的自动化执行,通过网络检索数据,采集网页数据,Web Services的使用,解析XML与JSON数据,使用结构化查询语言SQL进行数据库的创建与使用等。

本书做出这些调整的最终目标是,从计算机专业视角转向信息管理专业视角,仅仅涵盖技术入门课程必需的主题,即使选课的学生并不打算成为专业的程序员也会感到有用。

对这本书感兴趣的学生想要进一步探索的话,应该阅读Alle B. Downey的《思考Python》。由于两本书的内容存在许多重叠,学生能从那本书中快速掌握更多技术编程技能与提升算法思考能力。另外,两本书的写作风格相似,读完这本书之后应该能很容易通读《思考Python》。

《思考Python》这本书的版权所有者Allen授权我对书中内容的版权做了修改,将本书中保留的他书中的内容许可从GNU自由文档许可变更为最近流行的知识共享——以相同方式共享(CC-BY-SA)协议。这一做法符合开放文档许可从GFDJ到CC-BY-SA的转变趋势(如,维基百科的授权方式)。CC-BY-SA许可保留了图书最显著的版权传统,同时又允许新作者直接重用书中他们觉得合适的内容。

我觉得这本书是教学资料开放的一个典范,对未来的教育而言非常重要。感谢Alleb B. Downey和剑桥大学出版社做出的前瞻决定,让这本书可以在开放版权下出版。希望他们对我努力的结果感到欣慰,我也希望读者对我们的集体努力感到高兴。

我还要感谢Allen B. Downey与Lauren Cowles在解决本书版权问题时提供的帮助、耐心与指导。

Charles Severance
www.dr-chuck.com
Ann Arbor, MI, USA
2013年9月9号

Charles Severance博士是密西根大学信息学院的临床副教授。

1. 当然,这里出现的递归除外。