前沿
 ;
前  ;言
 ;
 ;
 ;
 ;
数据的世界很大,单凭自己就想畅游其中是一件非常困难的事。《JavaScript数据整理》可以作为你的指导,带你了解如何使用JavaScript来处理数据。
《JavaScript数据整理》是一本非常实用的实际操作指南,内容非常宽泛,为你介绍如何使用JavaScript来处理数据。《JavaScript数据整理》详细介绍了整个开发过程,在阅读《JavaScript数据整理》的过程中,你会感觉就像是自己在亲自执行相关工作。
书中涵盖大量的工具、技术和设计模式,而这些是使用JavaScript高效处理数据所必不可少的。通过《JavaScript数据整理》的学习,你将了解到如何应用这些技能并构建一个切实可行的数据处理流程,其中包括数据整理的所有阶段,从数据采集一直到数据可视化。
当然,《JavaScript数据整理》无法涵盖关于数据整理的所有内容,因为这一主题的范围极其广泛,并且不断发展演变,但是,《JavaScript数据整理》的一个主要目标就是帮助你构建并管理自己的数据整理工具包。阅读并认真学习《JavaScript数据整理》以后,你不仅能够构建数据处理流程,还可以掌握相关技能,从而自如地在这个复杂且不断发展的生态系统中遨游,评估各种可帮助你独立创建或扩展系统的工具和库,并能快速推进你自己的开发过程。
《JavaScript数据整理》的目标读者
《JavaScript数据整理》主要面向想要提升数据整理技能的中等水平的JavaScript开发人员。要想充分理解《JavaScript数据整理》的内容,你应该已经对某种流行的JavaScript开发平台(如浏览器、Node.js、Electron或Ionic)有着丰富的使用经验。
你需要对JavaScript有多大程度的了解呢?基本上来说,你应该对基本语法以及如何使用JavaScript匿名函数有一定的了解。《JavaScript数据整理》中会用到Node.js代码中简洁的箭头函数语法以及基于浏览器的代码中的传统语法(为了向后兼容)。
如果对Node.js和异步编码有基本的了解,那么会对学习《JavaScript数据整理》有非常大的帮助,不过,即使不了解这些内容也没有关系,《JavaScript数据整理》第2章提供了关于使用JavaScript创建Node.js和基于浏览器的应用的基础知识,并简要介绍如何使用Promise进行异步编码。
即使你不具备很好的JavaScript技能,也不必过分担心,这是一种非常简单的语言,可以轻松上手,并且在网上可以找到大量相关的学习资料。我相信,在阅读《JavaScript数据整理》的过程中,你可以轻松地学会JavaScript。如果你想要学习数据整理,同时还需要学习JavaScript,也不用担心,只需要付出一点点额外的努力就完全没有问题。
此外,你还需要掌握一些基本的计算机技能,以便安装Node.js以及《JavaScript数据整理》中涉及的其他工具。要想执行《JavaScript数据整理》中提供的示例代码,你需要具备文本编辑器、Node.js、浏览器,并且能够访问Internet(用于下载示例代码)。
《JavaScript数据整理》的组织结构:路线图
《JavaScript数据整理》分为14章,涵盖了数据整理的各个主要阶段。首先,我会对每个阶段进行较为详细介绍,然后提供更详尽的示例,最后着重解决在将数据处理流程置于生产环境中时要应对的各种问题。
● 第1章对整个数据整理过程进行了简单介绍,并解释了为什么需要使用JavaScript来完成数据整理工作。
● 第2章介绍构建Node.js应用和基于浏览器的应用以及使用Promise进行异步编码的基本知识。如果你已经对这些基本知识有了很好的了解,就可以跳过该章,继续学习后面的内容。
● 第3章主要介绍数据的采集、存储和检索。可以为你解答以下问题:如何检索数据?如何存储数据以便进行高效检索?该章讲解如何从文本文件和REST API读取数据,如何解码CSV和JSON格式,并带你了解MongoDB和MySQL数据库的基本使用方法。
● 第4章简要介绍一些不常见的数据检索方法:使用正则表达式解析非标准格式,通过网页爬取技术从HTML页面提取数据,以及必要时采用二进制格式。
● 第5章介绍探索性编码和数据分析,这是一种功能强大并且可以有效提升工作效率的技术,能够帮助你快速构建数据处理流程。我们首先在Excel中构建原型,然后在Node.js中进行编码,最后在浏览器中实现基本的可视化。
● 第6章主要关注数据清洗和转换,这些是必不可少的准备工作。我们将了解用于处理问题数据的各种方法。
● 第7章回答一个较难的问题:如果数据文件太大,无法在内存中完整存储,那么我们应该如何处理这种文件呢?我们的解决方案是使用Node.js流逐步地递增式地处理这种数据文件。
● 第8章介绍我们应该如何实际处理大型数据集,方法就是使用数据库。我们将带你了解各种MongoDB使用技术,帮你高效地检索可以在内存中存储的数据。我们将使用MongoDB API来对数据进行筛选、投影和排序。此外,还将使用递增式处理方法,从而确保可以处理大型数据集,而不会耗尽内存。
● 第9章介绍如何使用JavaScript进行数据分析。首先介绍基本的构建块,然后带你了解更多高级技术。在这里,你将学到滚动平均数、线性回归的相关知识,掌握如何处理时间序列数据,并了解数据变量之间的关系以及更多其他内容。
● 第10章主要介绍基于浏览器的可视化,这也是JavaScript为人称道的一点。我们将采用一些真实的数据,并利用C3图表库创建一些交互式折线图、条形图和饼图,以及一个散点图。
● 第11章介绍如何实现基于服务器端的可视化,并通过无头浏览器使其可以在服务器端正常使用。当你在自己的开发工作站执行探索性数据分析时,这种技术非常有用。此外,它还可用于预呈现图表以便在网页中显示,以及呈现PDF报告以便自动分发给用户。
● 第12章中,我们通过将前面各章中的多种技术整合成一个接近生产就绪状态并可实际使用的系统,实际构建一个数据处理流程。我们将构建一个空气质量监测系统。一个传感器会将实时数据输入到我们的处理流程中,在流程中经过处理后,会根据设定的条件发布SMS警报,并自动生成报告,然后在浏览器中实时更新可视化结果。
● 第13章进一步扩展了我们的可视化技能。介绍了D3的基本知识,D3是JavaScript生态系统中最著名的可视化工具包。这个工具包非常复杂,不过,我们可以利用它实现很多令人难以置信的自定义可视化效果。
● 第14章是《JavaScript数据整理》的最后一章,将带我们进入生产环境。我们将了解进入生产环境时需要面对的各种难题,并学习一些基本的策略,以帮助我们将应用交付给对应的受众。
关于代码
《JavaScript数据整理》涉及的源代码可从Manning网站(https://www.manning.com/books/data- wrangling-with-javascript)上免费下载,也可通过以下GitHub资源库进行下载:https://github.com/data-wrangling-with-javascript。
还可扫封底二维码下载代码。
你可从每个资源库对应的网页中下载每章代码的ZIP压缩文件。另外,也可在学习《JavaScript数据整理》的过程中使用Git复制每个资源库。可以使用任何现成的代码,并以此为基础完成自己的实践工作或项目,这可以节省大量时间。我已经对每个代码示例进行了一些优化处理,使其尽可能简单,并且尽量完整包含所需的各种内容。
《JavaScript数据整理》中的绝大多数代码都是在Node.js上运行的,并且使用的是适用于最新版本JavaScript的语法。其余代码则在浏览器中运行。这部分代码原本设计用来在旧版浏览器中运行,因此,对应的语法与Node.js代码有一点点不同。在撰写《JavaScript数据整理》时,我使用的是Node.js版本8和9,然而,当你阅读《JavaScript数据整理》时,很可能已经发布了新版本。如果你在代码中发现任何问题,欢迎给我提供反馈信息,只需要在相关的资源库网页上提交问题即可。
《JavaScript数据整理》中包含很多源代码示例,这些示例既有编号代码清单形式,也有普通文本行形式。不管是哪种形式,源代码都采用固定宽度字体格式,以便与普通文本区分。有时,代码还会采用粗体格式,以便突出显示与相应章节中之前的操作步骤相比哪些发生了更改,例如向现有代码行中添加新功能时,会对其进行相应的更改。
在很多情况下,我们对原始的源代码已经进行了格式上的调整,添加了一些换行符,并调整了缩进,以便适合《JavaScript数据整理》中可用的页面空间。在少数情况下,这样做仍然不够,那么我们需要在代码清单中包含续行符标记(?)。此外,当在文本中介绍代码时,通常会将源代码中的注释删掉。很多代码清单都会附带代码注释,用于重点介绍一些比较重要的概念。
图书论坛
购买《JavaScript数据整理》后即可免费访问Manning出版社运营和维护的专用Web论坛,在这里,你可以针对《JavaScript数据整理》发表自己的评论,询问一些技术上的问题,并且可以从作者和其他用户那里获得相关的帮助。如果想要访问此论坛,请访问https://forums.manning.com/ forums/data-wrangling-with-javascript。此外,你还可以访问以下网址,了解有关Manning论坛以及行为规范的更多信息:https://forums.manning.com/forums/about。
Manning会保证为读者提供一个专门的场所,以供各个读者以及读者与作者之间进行一些有意义的对话和交流。这一承诺并不是对作者参与论坛讨论和交流的强制规定,作者是否参与以及参与的频繁程度完全由作者自己决定,并且是无偿的。我们建议你试着向作者问一些具有挑战性的问题,以引起作者的重视并使其足够专注。对于已经出版发行的图书,可以在出版商的网站上访问对应的论坛以及之前相关讨论的归档文件。
其他在线资源
读者朋友可通过http://www.the-data-wrangler.com/访问Ashley Davis的博客,名为The Data Wrangler。Data-Forge Notebook是Ashley Davis专门为使用JavaScript进行数据分析和转换而开发的产品。从概念上来说,它与古老的Jupyter Notebook有些类似,但主要用于JavaScript。如果读者感兴趣,可以访问http://www.data-forge-notebook.com/了解更多内容。
 ;
前  ;言