前  言

如今,来自手机、互联网、物联网、科学实验、新闻等各处的信息每天创造着数以万亿字节的数据。在这万物互联的时代,信息技术将人类对数据的创造力一波又一波地推向新的巅峰。我们对计算机、手机中各种App的每一次点击与字符输入,对歌曲、文章的每一次点赞、喜欢、评论等操作都将零散单薄的数据汇入了信息的海洋,被大数据、人工智能等技术激荡出新的浪花。而在这片汪洋大海下,数据科学成为沉淀下来的理论与科学基础。

作为当前最流行的编程语言之一,Python在过去几十年已被广泛应用于系统管理任务的处理和网络编程等领域,接触过Web编程的读者想必很熟悉基于Python语言的Django框架。得益于机器学习、深度学习的兴起,近些年Python在科学计算领域绽放出新的光芒。在IEEE发布的编程语言排行榜中,Python在2017年~2019年连续3年稳居榜首。不同于MATLAB等商业软件,Python是完全免费和开源的;不同于R等主要用于统计分析与建模的开源软件比较难以将成果扩展为完整的应用程序,Python有着非常丰富的扩展库(模块),可以轻松完成各种高级任务,将项目的所有需求一起实现。

然而,国内少有聚焦于数据分析领域的Python图书,来自国外的译作大多起点较高,并不十分适合零基础的读者学习和使用。因此,我写作了本书—— 《交互的Python:数据分析入门》。“交互”一词可能更容易让人们联想到“人机交互”,百度百科中的解释为“一门研究系统与用户之间交互关系的学问”。与普通的Python编程或其他编程(“编辑—编译—运行”的工作模式)有所不同,利用Python处理数据时,用户能够感受到一种极强的交互性。在数据分析时,我们常常缺乏明确的目的和解决方案,因而不断地尝试各种分析—— 键入代码、查看结果、修正、重新运行查看结果,这一不断循环的过程往往是基于探索的,我们可以将其简化为“运行—探索”的工作模式。除此之外,动态文档是数据分析的一个新的流行趋势,普通的编程是进行应用程序的开发,数据分析则是进行数据的探索以及生成相关报表供用户阅读和研究。所以在本书的结构安排上,我添加了关于Markdown标记语言的内容。数据分析过程,就应当像写文章一样。

本书是Python数据分析的入门教程,主要为新手设计,也同样适用于想要了解或者打算进入数据分析领域的程序员。注意,本书绝不是一本技术手册,其中没有讲解关于Python在所有领域的知识,比如网络编程、游戏编程、界面设计等;也不会事无巨细地讲解Python的所有基础知识,而是侧重于解读数据分析和科学计算知识。

1.实例丰富,简单易懂。从简单的数据出发,让读者聚焦于思考、理解和掌握分析逻辑,简单易学,事半功倍。

2.循序渐进,深入浅出。本书的章节安排由易到难,由浅及深,主要采用IPython Shell展示代码,代码简洁优美,输入输出清晰易懂。

3.内容充实,全面覆盖。本书涵盖Python基础知识、数据导入、数据分析和可视化等方面的基础知识。

4.随学随用,举一反三。从简单的需求出发,阐述逻辑,实例方案可以作为模板初步应用到实际工作场景。本书将Markdown作为编程基础的一部分加以介绍,以使读者学会记录和分享知识。

本书共分为15章。

  • 第1章介绍Python软件的安装与配置。
  • 第2章介绍Python的基本编程方式和数据类型。
  • 第3章介绍Python核心数据结构的使用,包括列表、元组、字典和集合。
  • 第4章介绍Python的条件判断与循环控制,这是任何语言都具备的核心语法,并简单介绍如何操作文件。
  • 第5章介绍Python函数的创建和使用、模块的下载和使用。
  • 第6章介绍NumPy库及其核心数据结构ndarrary的操作方法。
  • 第7章介绍Matplotlib库的应用场景和基本图形的绘制方法。
  • 第8章介绍Pandas库及其核心数据结构Series和DataFrame的基本操作方法,并讲解如何进行简单的统计分析。
  • 第9章介绍Markdown的语法和使用,Jupyter Notebook的使用、记录和编程知识。
  • 第10章介绍如何将数据导入Python中,包括常见的CSV、Excel文件、网络数据常用的JSON文件和数据库。
  • 第11章介绍一些技巧性和高级编程知识,包括异常捕获、正则表达式和函数式编程等内容,以便读者更好地理解Python,编写安全高效的代码。
  • 第12章深入介绍Pandas的数据结构和操作,讲解如何进行函数计算、数据清洗和简单的可视化。
  • 第13章简单介绍3个高级的可视化库—— Seaborn、Plotnine和Bokeh,并讲解如何使用它们绘制常见的图形。
  • 第14章简单介绍统计分析的基础理论知识,包括数据的描述性统计、分布和假设检验。
  • 第15章补充介绍一些内容,包括IPython的魔术命令和面向对象编程知识。

写书是一项繁琐的工作,尽管我已力求本书内容简明、生动、准确,但限于个人水平,书中难免有错漏之处,恳请各位读者批评指正。读者若有任何关于本书的反馈意见,请通过异步社区的本书页面提交,这将有利于我改进本书,使更多读者受益。

本书的内容基于Python和诸多第三方库,在此感谢Python积极活跃的数据科学生态系统,以及NumPy、Pandas、Matplotlib、Plotnine和Seaborn等第三方库的作者们。

感谢出版社的张爽编辑,她对于本书内容的把握和细节的重视极大地提高了本书的质量。

感谢简书的毛晓秋女士和其他工作人员,如果不是他们的努力和鼓励,本书可能很难与众位读者见面。

最后,感谢我的女朋友,如果不是她时刻的敦促,我也许无法投入持续的热情和精力创作一本书;感谢我的家人,他们在远方的陪伴,是我能够写作的最坚实的动力。

王诗翔  

2020年1月于上海