本文概述
- SQL Server
- MySQL
- PostgreSQL
- MongoDB
- Redis
- Hadoop
- Spark
- Power BI
- Tableau
- QlikView
- Octoparse
- Content Grabber
- ParseHub
- python
- R
- Spyder
- PyCharm
- RStudio
数据科学适用于任何喜欢解开纠结的事物并发现明显混乱中的隐藏奇迹的人。
这就像在大海捞针中搜寻;只是数据科学家根本不需要动手。他们使用带有彩色图表的精美工具, 看着成堆的数字, 然后潜入数据草堆, 以具有高业务价值的洞察力的形式找到有价值的针头。
典型的数据科学家工具箱应至少包括以下各项中的一项:关系数据库, NoSQL数据库, 大数据框架, 可视化工具, 抓取工具, 编程语言, IDE和深度学习工具。
关系数据库
关系数据库是在具有属性的表中结构化的数据的集合。这些表可以相互链接, 定义关系和限制, 并创建所谓的数据模型。要使用关系数据库, 通常使用一种称为SQL(结构化查询语言)的语言。
在关系数据库中管理结构和数据的应用程序称为RDBMS(关系数据库管理系统)。有很多这样的应用程序, 最相关的应用程序最近开始把重点放在数据科学领域, 增加了与大数据存储库一起工作的功能, 并应用了诸如数据分析和机器学习之类的技术。
SQL Server
这就是微软的RDBMS, 它通过不断扩展其企业功能已经发展了20多年。从2016版开始, SQL Server提供了一系列服务, 其中包括对嵌入式R代码的支持。 SQL Server 2017通过将其R Services重命名为Machine Language Services并增加了对Python语言的支持(下面提供了这两种语言的更多信息)来增加赌注。
通过这些重要的补充, SQL Server面向可能没有Transact SQL(Microsoft SQL Server的本机查询语言)经验的数据科学家。

SQL Server远非免费产品。你可以购买许可证以将其安装在Windows Server上(价格会根据并发用户的数量而有所不同), 也可以通过Microsoft Azure云将其用作收费服务。学习Microsoft SQL Server很容易。
MySQL
在开源软件方面, MySQL具有RDBMS的流行度。尽管Oracle目前拥有它, 但它仍然是免费的, 并且根据GNU通用公共许可证的条款是开源的。由于它符合SQL标准, 因此大多数基于Web的应用程序都将MySQL用作基础数据存储库。

易于安装的过程, 庞大的开发人员社区, 大量全面的文档以及简化日常管理活动的第三方工具(例如phpMyAdmin)也有助于其受欢迎。尽管MySQL没有本机功能来进行数据分析, 但它的开放性使其可以与你选择的几乎任何可视化, 报告和商业智能工具集成。
PostgreSQL
另一个开源RDBMS选项是PostgreSQL。 PostgreSQL虽然不如MySQL流行, 但以其灵活性和可扩展性以及对复杂查询的支持而著称, 这些查询超出了SELECT, WHERE和GROUP BY等基本语句。
这些功能使其在数据科学家中越来越受欢迎。另一个有趣的功能是对多环境的支持, 该功能使其可以在云和本地环境中使用, 也可以在两种混合使用中使用, 通常称为混合云环境。

PostgreSQL能够将在线分析处理(OLAP)与在线事务处理(OLTP)相结合, 并以一种称为混合事务/分析处理(HTAP)的模式工作。由于添加了PostGIS(用于地理数据)和JSON-B(用于文档), 它也非常适合处理大数据。 PostgreSQL还支持非结构化数据, 这使其可以归为两类:SQL和NoSQL数据库。
NoSQL数据库
也称为非关系数据库, 这种类型的数据存储库提供了对非表格数据结构的更快访问。这些结构的一些示例包括图形, 文档, 宽列, 键值等。 NoSQL数据存储可以抛开数据一致性, 转而使用其他好处, 例如可用性, 分区和访问速度。
由于NoSQL数据存储区中没有SQL, 因此查询此类数据库的唯一方法是使用低级语言, 并且没有像SQL这样被广泛接受的语言。此外, 没有NoSQL的标准规范。具有讽刺意味的是, 这就是为什么某些NoSQL数据库开始增加对SQL脚本的支持的原因。
MongoDB
MongoDB是一种流行的NoSQL数据库系统, 它以JSON文档的形式存储数据。它的重点在于以非结构化方式存储数据的可伸缩性和灵活性。这意味着在所有存储的元素中都没有观察到的固定字段列表。此外, 数据结构可以随时间改变, 这在关系数据库中意味着影响运行中的应用程序的高风险。

MongoDB中的技术允许建立索引, 临时查询和聚合, 为数据分析奠定了坚实的基础。数据库的分布式性质无需复杂的工具即可提供高可用性, 可扩展性和地理分布。
Redis
这是开源NoSQL前端中的另一个选项。它基本上是一个在内存中运行的数据结构存储, 除了提供数据库服务外, 它还用作高速缓存和消息代理。

它支持多种非常规的数据结构, 包括哈希, 地理空间索引, 列表和排序集。它在数据密集型任务(例如计算集合交集, 长列表排序或生成复杂排名)中的高性能使其非常适合数据科学。 Redis出色的性能的原因在于其内存中的操作。可以将其配置为选择性地保留数据。
大数据框架
假设你必须分析Facebook用户在一个月内生成的数据。我们正在谈论照片, 视频, 消息等等。考虑到其用户每天向社交网络添加的数据量超过500 TB, 因此很难衡量一整月数据所代表的数量。
为了有效地操作大量数据, 你需要一个能够在分布式体系结构上计算统计信息的适当框架。主导市场的框架有两个:Hadoop和Spark。
Hadoop
作为一个大数据框架, Hadoop处理与检索, 处理和存储大量数据相关的复杂性。 Hadoop在由处理简单算法的计算机集群组成的分布式环境中运行。有一种称为MapReduce的编排算法, 该算法将大任务分成小部分, 然后在可用集群之间分配这些小任务。

对于需要快速访问和高可用性的企业级数据存储库, 建议使用Hadoop, 而所有这些操作均采用低成本方案。但是你需要具有Hadoop丰富知识的Linux管理员来维护框架并运行。
Spark
Hadoop不是唯一可用于大数据操作的框架。这个领域的另一个大牌是Spark。在分析速度和易用性方面, Spark引擎旨在超越Hadoop。显然, 它达到了这个目标:一些比较表明, 在磁盘上工作时, Spark的运行速度比Hadoop快10倍, 而在内存中的运行速度则快100倍。它还需要较少数量的计算机来处理相同数量的数据。

除了速度之外, Spark的另一个好处是它对流处理的支持。这种类型的数据处理, 也称为实时处理, 涉及数据的连续输入和输出。
可视化工具
数据科学家之间的一个普遍笑话是, 如果你对数据的折磨时间足够长, 它将承认你需要了解的内容。在这种情况下, “折磨”是指通过对数据进行转换和过滤来对其进行操作, 以便更好地对其进行可视化处理。这就是数据可视化工具出现的地方。这些工具从多个来源获取经过预处理的数据, 并以图形化, 易于理解的形式显示其揭示的事实。
有数百种工具属于此类。不管你喜不喜欢, 使用最广泛的是Microsoft Excel及其图表工具。使用Excel的任何人都可以访问Excel图表, 但是它们的功能有限。这同样适用于其他电子表格应用程序, 例如Google Sheets和Libre Office。但是我们在这里谈论的是更具体的工具, 这些工具是专门为商业智能(BI)和数据分析量身定制的。
Power BI
不久前, Microsoft发布了Power BI可视化应用程序。它可以从多种来源获取数据, 例如文本文件, 数据库, 电子表格以及许多在线数据服务(包括Facebook和Twitter), 并使用它来生成包含图表, 表格, 地图和许多其他可视化对象的仪表板。仪表板对象是交互式的, 这意味着你可以单击图表中的数据系列以选择它, 并将其用作板上其他对象的过滤器。

Power BI是Windows桌面应用程序(Office 365套件的一部分), Web应用程序和在线服务的组合, 用于在Web上发布仪表板并与你的用户共享。该服务使你可以创建和管理权限, 以仅将某些人授予对板的访问权限。
Tableau
Tableau是从多个数据源的组合创建交互式仪表板的另一种选择。它还提供了桌面版本, Web版本和联机服务, 以共享你创建的仪表板。它自然地以”你认为的方式”运行(如它声称的那样), 并且对于非技术人员来说易于使用, 并且通过大量的教程和在线视频对其进行了增强。

Tableau最杰出的功能包括无限的数据连接器, 实时和内存数据以及针对移动设备进行优化的设计。
QlikView
QlikView提供了一个干净直接的用户界面, 可帮助分析人员通过直观的元素从现有数据中发现新的见解, 而每个人都容易理解。

该工具以最灵活的商业智能平台之一而闻名。它提供了一个称为”关联搜索”的功能, 该功能可以帮助你专注于最重要的数据, 从而节省了自行查找数据所需的时间。
借助QlikView, 你可以与合作伙伴进行实时合作, 进行比较分析。可以将所有相关数据组合到一个应用程序中, 并具有限制访问数据的安全功能。
刮tools工具
在Internet刚刚兴起的时代, 网络爬虫开始与网络一起以自己的方式收集信息。随着技术的发展, 术语” Web爬取”更改为” Web抓取”, 但含义仍然相同:从网站自动提取信息。要进行网页抓取, 你使用自动过程或漫游器, 它们从一个网页跳转到另一个网页, 从中提取数据并将其导出为不同的格式, 或将其插入数据库中以进行进一步分析。
下面我们总结了当今三种最流行的刮板机的特点。
Octoparse
Octoparse网络抓取工具提供了一些有趣的功能, 其中包括从网站获取信息的内置工具, 这些信息使抓取机器人无法轻松完成工作。它是一个无需编写代码的桌面应用程序, 其用户界面友好, 可通过图形化工作流程设计器可视化提取过程。

Octoparse与独立应用程序一起提供基于云的服务, 以加快数据提取过程。使用云服务而不是桌面应用程序时, 用户可以获得4倍至10倍的速度提升。如果你坚持使用台式机版本, 则可以免费使用Octoparse。但是, 如果你更喜欢使用云服务, 则必须选择其中一项付费计划。
Content Grabber
如果你正在寻找功能丰富的抓取工具, 则应关注Content Grabber。与Octoparse不同, 要使用Content Grabber, 必须具备高级编程技能。作为交换, 你将获得脚本编辑, 调试界面和其他高级功能。使用Content Grabber, 你可以使用.Net语言编写正则表达式。这样, 你不必使用内置工具来生成表达式。

该工具提供了一个API(应用程序编程接口), 你可以使用该API向桌面和Web应用程序添加抓取功能。要使用此API, 开发人员需要获得对Content Grabber Windows服务的访问权限。
ParseHub
该刮板可以处理大量不同类型的内容, 包括论坛, 嵌套评论, 日历和地图。它还可以处理包含身份验证, Javascript, Ajax等内容的页面。 ParseHub可以用作可在Windows, macOS X和Linux上运行的Web应用程序或桌面应用程序。

与Content Grabber一样, 建议你具有一些编程知识, 以充分利用ParseHub。它有一个免费版本, 限于5个项目, 每次运行200页。
编程语言
就像前面提到的SQL语言是专门为关系数据库设计的一样, 还有其他一些语言专门针对数据科学而创建。这些语言使开发人员可以编写处理大量数据分析的程序, 例如统计数据和机器学习。
SQL也被认为是开发人员必须进行数据科学的一项重要技能, 但这是因为大多数组织仍然在关系数据库上拥有大量数据。 “真正的”数据科学语言是R和Python。
python

Python是一种高级解释型通用编程语言, 非常适合快速应用程序开发。它具有简单易学的语法, 可以使学习曲线更陡峭, 并降低程序维护成本。为什么它是数据科学的首选语言有很多原因。仅举几例:脚本编写潜力, 冗长性, 可移植性和性能。
对于打算在进入真正的艰苦的数据整理工作之前进行大量实验并且想要开发完整的应用程序的数据科学家来说, 这种语言是一个很好的起点。
R
R语言主要用于统计数据处理和绘图。尽管它并不像Python那样开发成熟的应用程序, 但R由于其在数据挖掘和数据分析方面的潜力, 近年来已变得非常流行。

由于不断增长的免费软件包扩展了其功能, R能够执行各种数据处理工作, 包括线性/非线性建模, 分类, 统计测试等。
这不是一门易学的语言, 但是一旦你熟悉了它的哲学, 你将像专业人士一样进行统计计算。
集成开发环境
如果你正在认真考虑致力于数据科学, 那么你将需要仔细选择适合你需求的集成开发环境(IDE), 因为你和你的IDE将花费大量时间共同工作。
理想的IDE应该将你日常工作所需的所有工具汇总为一个编码器:具有语法高亮和自动完成功能的文本编辑器, 功能强大的调试器, 对象浏览器以及对外部工具的轻松访问。此外, 它必须与你喜欢的语言兼容, 因此在知道要使用哪种语言之后选择IDE是一个好主意。
Spyder
该通用IDE主要供需要编码的科学家和分析人员使用。为了让他们感到舒适, 它不仅限于IDE功能, 它还提供了用于数据探索/可视化和交互式执行的工具, 这可以在科学包装中找到。 Spyder中的编辑器支持多种语言, 并添加了类浏览器, 窗口分割, 跳转到定义, 自动代码完成, 甚至是代码分析工具。

调试器可帮助你以交互方式跟踪每一行代码, 探查器可帮助你查找和消除效率低下的问题。
PyCharm
如果你使用Python编程, 则你选择的IDE可能就是PyCharm。它具有一个智能代码编辑器, 可进行智能搜索, 代码完成以及错误检测和修复。只需单击一下, 你就可以从代码编辑器跳转到任何与上下文相关的窗口, 包括测试, 超级方法, 实现, 声明等。 PyCharm支持Anaconda和许多科学软件包, 例如NumPy和Matplotlib, 仅举两个例子。

它提供了与最重要的版本控制系统以及测试运行器, 事件探查器和调试器的集成。为了完成交易, 它还与Docker和Vagrant集成以提供跨平台开发和容器化。
RStudio
对于喜欢R团队的数据科学家而言, 由于其众多功能, 因此选择的IDE应该是RStudio。你可以将其安装在装有Windows, macOS或Linux的桌面上, 或者如果不想在本地安装, 则可以通过网络浏览器运行它。两种版本都提供诸如语法突出显示, 智能缩进和代码完成等功能。当你需要浏览表格数据时, 可以使用一个集成的数据查看器。

调试模式允许逐步执行程序或脚本时查看如何动态更新数据。对于版本控制, RStudio集成了对SVN和Git的支持。一个不错的加法是可以使用Shiny和Gives库编写交互式图形。
你的个人工具箱
在这一点上, 你应该全面了解应该掌握的数据科学工具。另外, 我们希望我们能为你提供足够的信息, 以确定每个工具类别中最方便的选择。现在由你决定。数据科学是一个发展事业的繁荣领域。但是, 如果要这样做, 则必须跟上趋势和技术的变化, 因为它们几乎每天都在发生。