数据科学的工具箱
数据科学就像一场智力探险,适合那些热爱解谜,并能在看似混乱的表象下发现隐藏规律的人们。它不是简单的体力劳动,而更像是在信息的海洋中寻宝。
数据科学家们借助精美的彩色图表工具,深入海量数据,仿佛潜水员探索深海。他们的目标是从看似无序的数据中,提取出具有重要商业价值的洞察。
一个典型的数据科学家工具箱至少应包含以下几类工具:关系数据库、非关系型数据库(NoSQL数据库)、大数据框架、可视化工具、网络爬虫工具、编程语言、集成开发环境(IDE)和深度学习工具。
关系数据库
关系数据库是一种结构化的数据集合,数据以表格的形式存储,并带有属性。这些表格之间可以相互关联,通过定义关系和约束,形成所谓的数据模型。要使用关系数据库,通常需要使用一种名为SQL(结构化查询语言)的语言。
管理关系数据库中结构和数据的应用程序被称为关系数据库管理系统(RDBMS)。市面上有许多这样的应用,其中一些最受欢迎的RDBMS开始将重点转向数据科学领域,增加了与大数据存储库协同工作的功能,并融入了数据分析和机器学习等技术。
SQL服务器
微软的关系型数据库SQL Server,经过二十多年的发展,不断扩展其企业级功能。自2016版本起,SQL Server开始提供包括嵌入式R代码支持在内的多种服务。SQL Server 2017通过将其R服务更名为“机器学习服务”,并新增对Python语言的支持,进一步提升了竞争力。
这些重要的改进使得SQL Server能够吸引那些可能不熟悉Transact SQL(微软SQL Server的本机查询语言)的数据科学家。
SQL Server并非免费产品。用户可以选择购买许可证将其安装在Windows Server上(价格会根据并发用户数量而变化),或者通过微软Azure云使用其收费服务。 学习Microsoft SQL Server 相对容易。
MySQL
在开源软件领域,MySQL 占据着RDBMS的领先地位。尽管目前它属于甲骨文公司,但根据GNU通用公共许可证,它仍然是免费和开源的。由于MySQL符合SQL标准,因此大多数基于Web的应用程序都使用MySQL作为底层数据存储库。
MySQL的普及还得益于其简单的安装过程、庞大的开发者社区、全面的文档以及诸如phpMyAdmin等第三方工具,这些工具可以简化日常管理任务。虽然MySQL本身不具备数据分析的内置功能,但其开放性使得它能够与几乎任何可视化、报表和商业智能工具集成。
PostgreSQL
另一个开源的RDBMS选择是PostgreSQL。尽管不如MySQL流行,但PostgreSQL以其灵活性和可扩展性,以及对复杂查询的支持而脱颖而出,这些查询超出了基本SQL语句(如SELECT、WHERE和GROUP BY)的范围。
这些特性使其在数据科学家中很受欢迎。另一个值得一提的特性是其对多环境的支持,这使得它可以在云端、本地环境或混合云环境中部署。
PostgreSQL能够将在线分析处理(OLAP)与在线事务处理(OLTP)相结合,以一种称为混合事务/分析处理(HTAP)的模式工作。由于添加了用于地理数据的PostGIS和用于文档的JSON-B,它也非常适合处理大数据。PostgreSQL还支持非结构化数据,这使得它既可以被归类为SQL数据库,也可以被归类为NoSQL数据库。
NoSQL数据库
NoSQL数据库,也称为非关系数据库,提供了一种更快地访问非表格数据结构的方式。 这些结构的例子包括图形、文档、宽列、键值对等。NoSQL数据库为了追求可用性、分区和访问速度等优势,有时会牺牲数据一致性。
由于NoSQL数据库不使用SQL,查询这类数据库的唯一方法是使用低级语言,而且不像SQL那样有广泛接受的标准语言。此外,NoSQL数据库没有统一的标准规范。具有讽刺意味的是,一些NoSQL数据库开始增加对SQL脚本的支持。
MongoDB
MongoDB 是一种流行的NoSQL数据库系统,它以JSON文档的形式存储数据。它的重点是可扩展性和以非结构化方式存储数据的灵活性。这意味着在所有存储的元素中,没有必须遵守的固定字段列表。此外,数据结构可以随着时间而改变,这在关系数据库中可能意味着对运行中的应用程序产生高风险。
MongoDB中的技术支持索引、即席查询和聚合,为数据分析提供了坚实的基础。该数据库的分布式特性提供了高可用性、可扩展性和地理分布,而无需复杂的工具。
Redis
Redis 是另一种开源的NoSQL数据库选择。它主要是一种在内存中运行的数据结构存储,除了提供数据库服务外,它还可以用作缓存和消息代理。
它支持众多非常规的数据结构,包括散列、地理空间索引、列表和排序集。由于它在数据密集型任务(例如计算集合交集、排序长列表或生成复杂排名)中具有高性能,因此它非常适合数据科学。 Redis表现出色的原因是它在内存中进行操作。它可以配置为选择性地持久化数据。
大数据框架
假设您需要分析Facebook用户在一个月内生成的数据,包括照片、视频、消息等。考虑到用户每天向社交网络添加超过500TB的数据,很难想象一个月的数据量有多庞大。
要以有效的方式处理如此大量的数据,您需要一个能够在分布式架构上计算统计数据的适当框架。目前,市场上领先的大数据框架主要有两个:Hadoop和Spark。
Hadoop
作为一种大数据框架,Hadoop 旨在解决与检索、处理和存储海量数据相关的复杂性。Hadoop在分布式环境中运行,由处理简单算法的计算机集群组成。它使用一种名为MapReduce的编排算法,将大型任务分解为小部分,然后在可用的集群之间分配这些小任务。
Hadoop 适用于需要快速访问和高可用性的企业级数据存储库,而且它具有低成本的优势。但是,你需要具备深入的Linux管理知识,以便维护和运行Hadoop框架。
Spark
Hadoop并不是唯一可用于大数据操作的框架。该领域的另一个重要角色是Spark。Spark引擎旨在在分析速度和易用性方面超越Hadoop。事实证明,它成功地实现了这个目标:一些比较显示,在磁盘上运行时,Spark的运行速度比Hadoop快10倍,而在内存中运行速度快100倍。它还只需要较少的机器来处理相同的数据量。
除了速度之外,Spark的另一个优点是它支持流处理。这种数据处理方式,也称为实时处理,涉及数据的连续输入和输出。
可视化工具
数据科学家之间流传着一个笑话:如果你“折磨”数据足够长的时间,它就会“坦白”你需要知道的东西。这里的“折磨”指的是通过转换和过滤来操纵数据,从而更好地将其可视化。这正是数据可视化工具的用武之地。这些工具从多个来源获取预处理的数据,并以图形化的、易于理解的方式呈现出来,揭示数据背后的真相。
市面上存在数百种此类工具。最常用的无疑是Microsoft Excel及其图表工具。任何使用Excel的人都可以访问这些图表,但其功能有限。其他电子表格应用程序,如Google Sheets和Libre Office,也存在类似的情况。我们在这里讨论的是更专业的工具,专门为商业智能(BI)和数据分析量身定制。
Power BI
微软不久前推出了Power BI可视化应用程序。它可以从各种来源获取数据,例如文本文件、数据库、电子表格以及包括Facebook和Twitter在内的许多在线数据服务,并利用这些数据生成包含图表、表格、地图和其他可视化对象的仪表板。仪表板对象是交互式的,这意味着你可以通过点击图表中的数据系列来选择它,并将其用作仪表板上其他对象的过滤器。
Power BI结合了Windows桌面应用程序(Office 365套件的一部分)、Web应用程序和在线服务,用于在Web上发布仪表板并与用户共享。该服务允许你创建和管理权限,以便只允许特定人员访问仪表板。
Tableau
Tableau是另一种从多个数据源创建交互式仪表板的选择。它也提供桌面版本、Web版本和在线服务来共享你创建的仪表板。它以“按照你的想法”工作而闻名,并且对非技术用户友好,并提供了大量教程和在线视频来帮助用户上手。
Tableau的一些最突出的功能包括其无限的数据连接器、实时和内存数据,以及针对移动设备优化的设计。
QlikView
QlikView提供了简洁明了的用户界面,帮助分析师通过每个人都容易理解的可视元素,从现有数据中发现新的见解。
该工具以最灵活的商业智能平台之一而闻名。它提供了一种名为关联搜索的功能,可以帮助你专注于最重要的数据,从而节省你自行查找所需数据的时间。
使用QlikView,你可以与合作伙伴进行实时协作,进行比较分析。所有相关数据都可以合并到一个应用程序中,并具有限制数据访问的安全功能。
网络爬虫工具
在互联网兴起的早期,网络爬虫开始在网络上“旅行”,以它们的方式收集信息。随着技术的发展,网络爬虫一词逐渐被网络抓取所取代,但含义仍然相同:自动从网站中提取信息。为了进行网络抓取,你会使用自动化流程或机器人,从一个网页跳转到另一个网页,从中提取数据,并将其导出为不同的格式,或将其插入到数据库中进行进一步分析。
下面我们总结了目前可用的三种最流行的网络爬虫工具的特性。
八爪鱼
八爪鱼网络爬虫提供了一些有趣的特性,包括内置工具,用于从网站获取信息,这些信息通常难以被抓取机器人获取。它是一款不需要编程的桌面应用程序,拥有用户友好的UI,允许通过图形工作流设计器可视化提取过程。
除了独立应用程序外,八爪鱼还提供基于云的服务来加速数据提取过程。与使用桌面应用程序相比,使用云服务时,用户可以体验到4到10倍的速度提升。如果你选择使用桌面版,你可以免费使用八爪鱼。但是,如果你更喜欢使用云服务,则需要选择付费计划。
内容抓取器
如果你正在寻找功能丰富的抓取工具,你应该关注内容抓取器。与八爪鱼不同,要使用内容抓取器,需要具备高级编程技能。作为交换,你可以获得脚本编辑、调试界面和其他高级功能。借助内容抓取器,你可以使用.Net语言编写正则表达式。这样,你就不必使用内置工具生成表达式。
该工具提供了一个应用程序编程接口(API),你可以使用该API将抓取功能添加到你的桌面和Web应用程序中。要使用此API,开发人员需要获得对内容抓取器Windows服务的访问权限。
ParseHub
ParseHub可以处理各种不同类型的内容,包括论坛、嵌套评论、日历和地图。它还可以处理包含身份验证、Javascript、Ajax等的页面。ParseHub既可以作为Web应用程序使用,也可以作为能够在Windows、macOS X和Linux上运行的桌面应用程序使用。
与内容抓取器类似,建议你具备一些编程知识才能充分利用ParseHub。它有一个免费版本,限制为5个项目,每次运行最多抓取200页。
编程语言
就像前面提到的SQL语言是专门为与关系数据库一起工作而设计的一样,还有其他语言也明确关注数据科学。这些语言允许开发人员编写程序来处理海量数据分析,例如统计和机器学习。
SQL也被认为是开发人员进行数据科学时应该具备的一项重要技能,因为大多数组织仍然拥有大量关系数据库上的数据。“真正”的数据科学语言是R和Python。
Python
Python是一种高级的、解释型的、通用的编程语言,非常适合快速应用程序开发。它具有简单易学的语法,降低了学习难度,也降低了程序维护的成本。它是数据科学的首选语言,原因有很多,例如:脚本潜力、可读性、可移植性和性能。
对于那些计划在进入真实和艰巨的数据处理工作之前进行大量实验,以及想要开发完整应用程序的数据科学家来说,Python语言是一个很好的起点。
R
R语言主要用于统计数据处理和绘图。尽管它不像Python那样适用于开发成熟的应用程序,但由于其在数据挖掘和数据分析方面的巨大潜力,R近年来变得非常流行。
由于不断增长的免费可用软件包库扩展了其功能,R能够进行各种数据处理工作,包括线性/非线性建模、分类、统计测试等。
它不是一门容易学习的语言,但是一旦你熟悉了它的哲学,你就可以像专业人士一样进行统计计算。
IDE
如果你正在认真考虑致力于数据科学,那么你需要仔细选择一个适合你需求的集成开发环境(IDE),因为你和你的IDE将在工作中花费大量时间在一起。
理想的IDE应该将你作为编码人员日常工作所需的所有工具整合在一起:具有语法高亮和自动完成功能的文本编辑器、功能强大的调试器、对象浏览器,以及对外部工具的轻松访问。此外,它必须与你偏好的语言兼容,因此最好在你了解将要使用哪种语言之后再选择你的IDE。
Spyder
Spyder通用IDE主要面向需要编码的科学家和分析师。为了让他们感到舒适,它不仅仅局限于IDE功能,还提供了用于数据探索/可视化和交互式执行的工具,这在科学软件包中可以找到。Spyder中的编辑器支持多种语言,并添加了类浏览器、窗口拆分、跳转到定义、自动代码完成,甚至是代码分析工具。
调试器可以帮助你以交互方式跟踪每一行代码,而分析器可以帮助你发现并消除效率低下的问题。
PyCharm
如果你使用Python编程,你选择的IDE很可能是PyCharm。它有一个智能代码编辑器,具有智能搜索、代码完成以及错误检测和修复功能。只需点击一下,你就可以从代码编辑器跳转到任何上下文相关的窗口,包括测试、超级方法、实现、声明等。PyCharm支持Anaconda和许多科学软件包,例如NumPy和Matplotlib,仅举其中两个。
它提供了与最重要的版本控制系统以及测试运行器、分析器和调试器的集成。 为了完成交易,它还与Docker和Vagrant集成,以提供跨平台开发和容器化。
RStudio
对于那些偏爱R的数据科学家来说,理想的IDE应该是RStudio,因为它有很多功能。你可以将其安装在带有Windows、macOS或Linux的桌面上,或者如果你不想在本地安装它,也可以从Web浏览器运行它。这两个版本都提供了语法高亮、智能缩进和代码完成等功能。当你需要浏览表格数据时,集成的的数据查看器非常有用。
调试模式允许你在逐步执行程序或脚本时,查看数据是如何动态更新的。对于版本控制,RStudio集成了对SVN和Git的支持。一个不错的优点是可以使用Shiny和相关的库来创建交互式图形。
你的个人工具箱
此时,你应该对在数据科学领域中常用的工具具备了全面的了解。此外,我们希望我们为你提供了足够的信息,以便你能够决定在每个工具类别中,哪个是最适合你的选择。现在,这取决于你。数据科学是一个蓬勃发展的领域,可以发展你的事业。但是,如果你想在这个领域取得成功,你必须紧跟趋势和技术的变化,因为它们几乎每天都在发生。