1.3 为什么选用Python语言整理数据
读这本书的时候,你可能已经听说过Python编程语言,而且你可能已经确信,这门语言很适合在初次学习数据整理(或是提高数据整理水平)时使用。虽然大家已经知道Python的好处,但笔者觉得还是有必要简单地介绍一下Python,让读者了解它为什么特别适合执行本书所要讲解的这种数据整理与质量工作。还有一些读者可能并没有听过Python这个名字,那正好可以通过这段介绍了解它为何能够成为一门当今很流行也很强大的编程语言。
1.3.1 功能丰富
作为一门通用的编程语言,Python较为明显的一个优势可能就在于它的功能十分丰富。它可以轻松地访问API、从网上抓取数据、做统计分析,还可以生成各种有效的图表。其他一些编程语言或许也能实现其中某些任务,但很少有哪门语言能把这些任务都做得像Python这样好。
1.3.2 容易入门
Python的创始人之一——Guido van Rossum(吉多·范罗苏姆)在设计这门语言的时候,目标之一是想让“代码像日常所说的英语那样好懂”。Python直接使用英文单词做关键词,而不像R或JavaScript等脚本语言那样,采用标点做关键词。这意味着对于说英语的人而言,Python要比其他一些脚本语言更直观、更易学。
1.3.3 代码易读
Python语言的一个核心原则就是“readability counts”(可读性很重要)。在大多数编程语言中,代码的布局并不会影响其功能,只要你把该写的那些“标点”写对,计算机就会知道这段代码是什么意思。但Python不是这样,它要根据空白来决定代码之间的关系,如果你没有通过制表符或空格做出必要的缩进,那么Python就不会按照你本来想表达的意思执行,而会报告许多错误。虽然这意味着初学者可能必须花一段时间才能适应,但这样可以确保你用Python书写的代码的可读性,使得其他人读起来很顺畅(其实更有可能重读代码的人是你自己,你可能过一段时间就需要重新看看早前所写的代码)。要想提升代码的可读性,除了添加缩进,还有就是在代码中撰写注释,或以其他方式给代码书写文档,笔者将在1.10节详细解释这个问题。
1.3.4 庞大的社区
Python有一个非常庞大和活跃的用户社区,他们中的许多人帮助创建并维护各种代码“库”,你在编写Python代码时,可以通过这些库迅速实现各种功能。例如,Python有诸如NumPy与Pandas之类流行且开发良好的代码库,它们可以帮你清洗和分析数据;Python还有像Matplotlib与Seaborn这样的库,它们能够创建各种可视化的数据表现形式;Python甚至还有更为强大的Scikit-Learn与NLTK库,能够实现机器学习与自然语言处理等重量级的功能。这本书将会告诉你用Python整理数据时必备的技术(而且会在讲解过程中使用刚才提到的许多库),掌握了这些知识之后,你可能很想去研究这种只需几行代码就能实现许多功能的程序库。开发这些程序库的人通常都会写博客、录视频,并分享示例代码,告诉你怎样用这个库扩充Python的功能。
由于用Python的人很多,而且这些用户都特别喜欢这门语言,因此,寻找某些常见的(乃至不太常见的)问题与错误的解决办法是相当容易的,经常有人会在网上贴出详细的解法。这意味着与那些较为专门且用户较少的语言相比,用Python语言编写代码会比较顺利。
1.3.5 除了Python还可以考虑哪些语言
虽然Python有很多优势,但你依然可以考虑用其他一些语言来整理数据。下面简单说说这些语言,并解释一下笔者为什么觉得Python比它们更适合用来讲解本书的内容:
R
对于数据处理工作来说,R语言可能是实力最接近Python的一种语言了,许多团队与组织都选用了R语言,因为它既能整理数据,又能做比较高级的统计建模,而且还具备可视化功能。但是,这种语言不如Python那么容易入门,而且写出来的代码也不如Python好懂。
SQL
SQL(Simple Query Language/Structured Query Language)的目标,就是用来切割数据库中的数据。这种语言本身很强大,而且也很有用,但你在使用它之前必须先让数据以某种格式存在,这对于整理数据来说是个限制,因为有的时候,我们其实还没有把数据整理出来。
Scala
虽然Scala很适合用来处理大规模数据集,但这种语言学起来要比Python难多了,而且使用这门语言的人也比较少。Julia语言也有这个问题。
Java、C/C++
这些语言的用户很多,而且功能也比较丰富,但你用这些语言写出来的代码不像Python那样接近日常语言,所以读起来也不如Python代码那么容易。另外,这些语言更擅长的是做软件项目而不是做数据整理和分析。
JavaScript
在基于Web的环境中,JavaScript是极为有用的,而且许多流行的可视化工具(例如D3)都需要依赖某种形式的JavaScript才能运作。但是,JavaScript的数据分析功能并不像Python那样丰富,而且运行速度通常也比较慢。