典型的数据科学家工具箱中应至少包含以下各项中的一项或者多项,包括关系数据库,NoSQL数据库,大数据框架,可视化工具,抓取工具,编程语言,IDE和深度学习工具。
关系数据库
关系数据库是在具有属性的表中结构化数据的集合。这些表可以相互链接,定义关系和限制,并创建所谓的数据模型。要使用关系数据库,离不开SQL语言。在关系数据库中管理结构和数据的应用程序是关系数据库管理系统(RDBMS)。这样的应用程序很多,而且越来越多的关系数据库开始把重点放在数据科学领域,增加了与大数据存储库一起工作的功能,并应用了如数据分析和机器学习之类的技术。
1.SQL Server
SQL Server不断扩展其企业功能已经发展了20多年。从2016版开始,SQL Server提供了一系列服务,其中包括对嵌入式R代码的支持。SQL Server 2017通过将其R Services重命名为Machine Language Services,并增加了对Python语言的支持。通过这些重要的补充,SQL Server面向可能没有Transact SQL(Microsoft SQL Server的本机查询语言)经验的数据科学家。
![37874170e077d7512901797dd3d91d73.png](https://i-blog.csdnimg.cn/blog_migrate/624c9e3d4d937a3479531378a97efa1b.jpeg)
你可以购买许可证以将其安装在Windows Server上(价格会根据并发用户的数量而有所不同),也可以通过Azure云。而且SQL Server的学习曲线没那么陡峭。
2.MySQL
在开源软件方面,MySQL是主流的关系数据库。尽管Oracle目前拥有它,但它仍然是免费的,并且根据GNU通用公共许可证的条款是开源的。由于它符合SQL标准,因此大多数基于Web的应用程序都将MySQL用作基础数据库。
易于安装的过程,庞大的开发人员社区,大量全面的文档以及简化日常管理活动的第三方工具有助于其受大受欢迎。尽管MySQL没有进行数据分析的本机功能,但它的开放性使其可以与你选择的几乎所有可视化,报告和商业智能工具集成。
3.PostgreSQL
另一个开源关系数据库选项是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脚本支持的原因。
4.MongoDB
MongoDB是一种流行的NoSQL数据库系统,它以JSON文档的形式存储数据。它的重点在于以非结构化方式存储数据的可伸缩性和灵活性。这意味着在所有存储的元素中都没有固定字段列表。此外,数据结构可以随着时间而改变,这在关系数据库中意味着影响运行中的应用程序的高风险。
![2e30381c03e1c4a78e68795fca6f3838.png](https://i-blog.csdnimg.cn/blog_migrate/cbaaa57e811e7e9070c5229972af5476.jpeg)
MongoDB中的技术允许建立索引,临时查询和聚合,为数据分析奠定了坚实的基础。数据库的分布式性质提供了高可用性,可伸缩性和地理分布,而无需复杂的工具。
5.Redis
这是开源NoSQL前端中的另一个选项。它基本上是一个在内存中运行的数据结构存储,除了提供数据库服务外,它还用作高速缓存和消息代理。
它支持多种非常规的数据结构,包括哈希,地理空间索引,列表和排序集。它在数据密集型任务(例如计算集合交集,对长列表进行排序或生成复杂排名)中具有高性能,因此非常适合数据科学。Redis出色的性能的原因在于其内存操作。可以将其配置为选择性地保留数据。
大数据框架
假设你必须分析社交网络中用户在一个月内生成的数据,比如照片,视频,消息等等。考虑到其用户每天向社交网络添加大量数据,因此很难衡量一整月数据所代表的数量。
为了有效地操作大量数据,需要一个能够在分布式体系结构上计算统计信息的适当框架。主导市场的框架有两个:Hadoop和Spark。
6.Hadoop
作为一个大数据框架,Hadoop处理与检索,处理和存储大量数据相关的复杂性。Hadoop在由处理简单算法的计算机集群组成的分布式环境中运行。有一种称为MapReduce的编排算法,该算法将大任务分成小部分,然后在可用集群之间分配这些小任务。
对于需要快速访问和高可用性的企业级数据库,建议使用Hadoop,而所有这些操作均采用低成本方案。但是需要具有Hadoop丰富知识的Linux管理员来维护框架并运行。
7.Spark
Hadoop不是唯一可用于大数据操作的框架。这个领域的另一个大牌是Spark。在分析速度和易用性方面,Spark引擎旨在超越Hadoop。显然,它达到了这个目标:一些比较表明,在磁盘上工作时,Spark的运行速度比Hadoop快10倍,而在内存中的运行速度则快100倍。它还需要较少数量的计算机来处理相同数量的数据。
除了速度之外,Spark的另一个好处是它对流处理的支持。这种类型的数据处理也称为实时处理,涉及数据的连续输入和输出。
可视化工具
数据可视化工具从多个来源获取经过预处理的数据,并以图形化,易于理解的形式显示得出的事实,市场上有数百种工具属于此类。不管你喜不喜欢,使用最广泛的是Excel及其图表工具。使用Excel的任何人都可以访问Excel图表,但是它们的功能有限。这同样适用于其他电子表格应用程序,例如Google Sheets和Libre Office。但是我们在这里谈论的是更具体的工具,这些工具是专门为商业智能(BI)和数据分析而量身定制的。
8.Power BI
不久前,微软发布了Power BI可视化应用程序。它可以从多种来源获取数据,例如文本文件,数据库,电子表格以及许多在线数据服务(包括Facebook和Twitter),并使用它来生成包含图表,表格,地图和许多其他可视化对象的仪表板。仪表板对象是交互式的,这意味着可以单击图表中的数据系列以选择它,并将其用作板上其他对象的过滤器。
Power BI是Windows桌面应用程序(Office 365套件的一部分),Web应用程序和在线服务的组合,用于在Web上发布仪表板并与用户共享。该服务使你可以创建和管理权限,以仅将某些人授予对板的访问权限。
9.Tableau
Tableau是从多个数据源的组合创建交互式仪表板的另一种选择。它还提供了桌面版本,Web版本和联机服务,以共享你创建的仪表板。它自然地“按照你想法”运行,并且对于非技术人员来说易于使用,并且通过大量的教程和在线视频得到了增强。Tableau最强的功能包括无限的数据连接器,实时和内存数据以及针对移动设备进行优化的设计。
10.QlikView
QlikView提供了一个简洁明了的用户界面,可帮助分析人员通过直观的元素从现有数据中发现新的见解,而每个人都容易理解。该工具是最灵活的商业智能平台之一。它提供了一个称为“关联搜索”的功能,该功能可以帮助你专注于最重要的数据,从而节省了自行查找数据所需的时间。
![704719a19773c2cf9aa57a2c6fa2a97d.png](https://i-blog.csdnimg.cn/blog_migrate/b6556f4bea982104e41788e4d88c57f7.jpeg)
借助QlikView,你可以与合作伙伴进行实时合作,进行比较分析。可以将所有相关数据组合到一个应用程序中,并具有限制访问数据的安全功能。
抓取工具
在互联网刚刚兴起时,网络爬虫开始与网络一起以自己的方式收集信息。随着技术的发展,术语“web scraping”改为“ web crawling”,但含义仍然相同:从网站自动提取信息。要进行网页抓取,你使用自动过程或漫游器,它们从一个网页跳到另一个网页,从中提取数据并将其导出为不同的格式,或将其插入数据库中以进行进一步分析。
以下是几个流行的抓取工具。
11.Octoparse
Octoparse网络抓取工具提供了一些有趣的功能,包括内置工具,这些工具可以从网站获取信息,而这些信息使抓取机器人无法轻松地完成工作。它是一个无需编写代码的桌面应用程序,具有易于使用的用户界面,可通过图形化工作流程设计器可视化提取过程。
Octoparse与独立的应用程序一起提供基于云的服务,以加快数据提取过程。使用云服务而不是桌面应用程序时,用户可以获得4倍至10倍的速度提升。如果你坚持使用桌面版本,则可以免费使用Octoparse。但是,如果你更喜欢使用云服务,则必须选择其中一项付费计划。
12.Content Grabber
如果你正在寻找功能丰富的抓取工具,则应关注Content Grabber。与Octoparse不同,要使用Content Grabber,必须具有高级编程技能。你将使用脚本编辑,调试界面和其他高级功能。使用Content Grabber,可以使用.Net语言编写正则表达式。这样的话不必使用内置工具来生成表达式。
该工具提供了一个API,可以使用该API向桌面和Web应用程序添加抓取功能。要使用API,开发人员需要获得对Content Grabber Windows服务的访问权限。
13.ParseHub
ParseHub可以处理大量不同类型的内容,包括论坛,嵌套评论,日历和地图。它还可以处理包含身份验证,Javascript,Ajax等内容的页面。ParseHub可以用作可在Windows,macOS X和Linux上运行的Web应用程序或桌面应用程序。
![35904c25ddfd3ff86da858afc7a6eeb9.png](https://i-blog.csdnimg.cn/blog_migrate/e48bee0d3b00346c43bd797abec14f94.jpeg)
与Content Grabber一样,建议你具有一些编程知识,以充分利用ParseHub。它有一个免费版本,限于5个项目,每次运行200页。
编程语言
就像前面提到的SQL语言是专门为关系数据库设计的一样,还有其他一些语言专门针对数据科学而创建。这些语言使开发人员可以编写处理大量数据分析的程序,例如统计数据和机器学习。
SQL也被认为是开发人员必须进行数据科学的一项重要技能,但这是因为大多数组织仍然在关系数据库上拥有大量数据。“真正的”数据科学语言是R和Python。
14.Python
Python是一种高级解释型通用编程语言,非常适合快速应用程序开发。它具有简单易学的语法,可以使学习曲线更陡峭,并降低程序维护成本。有很多原因使它成为数据科学的首选语言。仅举几例:脚本编写潜力,冗长性,可移植性和性能。
对于打算在进入真正的艰苦的数据整理工作之前进行大量试验,并且想要开发完整的应用程序的数据科学家来说,这种语言是一个很好的起点。
15.R
R语言主要用于统计数据处理和绘图。尽管它并不像Python那样开发成熟的应用程序,但R由于其在数据挖掘和数据分析方面的潜力,近年来已变得非常流行。
由于不断增长的免费软件包扩展了其功能,R能够执行各种数据处理工作,包括线性/非线性建模,分类,统计测试等。这不是一门易学的语言,但是一旦熟悉了它的逻辑,你将像专业人士一样进行统计计算。
集成开发环境
如果你正在认真考虑致力于数据科学,那么需要仔细选择适合需求的集成开发环境(IDE),因为你将花费大量时间与IDE共同工作。
理想的IDE应该将你日常工作所需的所有工具汇总为一个编码器:具有语法高亮和自动完成功能的文本编辑器,功能强大的调试器,对象浏览器以及对外部工具的轻松访问。此外,它必须与你喜欢的语言兼容,因此在知道要使用哪种语言之后选择IDE是一个好主意。
16.Spyder
该通用IDE主要供需要编程的科学家和分析人员使用。它不仅限于IDE功能-它还提供了用于数据探索/可视化和交互式执行的工具,这可以在科学包装中找到。Spyder中的编辑器支持多种语言,并添加了类浏览器,窗口分割,跳转到定义,自动代码完成,甚至是代码分析工具。
![6183d7b1065bfea65619fab72e32a761.png](https://i-blog.csdnimg.cn/blog_migrate/89fbd68ff7f289b0b5072ef8062396a6.jpeg)
调试器可帮助你以交互方式跟踪每一行代码,而探查器可帮助你查找和消除效率低下的问题。
17.PyCharm
如果你使用Python编程,则你选择的IDE很有可能是PyCharm。它具有一个智能代码编辑器,可进行智能搜索,代码完成以及错误检测和修复。只需单击一下,就可以从代码编辑器跳到任何与上下文相关的窗口,包括测试,超级方法,实现,声明等。PyCharm支持Anaconda和许多科学软件包,例如NumPy和Matplotlib,仅举两个例子。
它提供与最重要的版本控制系统以及测试运行器,事件探查器和调试器的集成。为了完成交易,它还与Docker和Vagrant集成以提供跨平台开发和容器化。
18.RStudio
对于喜欢R的数据科学家而言,由于其众多功能,因此选择的IDE应该是RStudio。可以将其安装在装有Windows,macOS或Linux的桌面上,或者如果你不想在本地安装它,则可以从Web浏览器运行它。两种版本都提供诸如语法突出显示,智能缩进和代码完成之类的优点。当你需要浏览表格数据时,可以使用一个集成的数据查看器。
调试模式允许逐步执行程序或脚本时查看如何动态更新数据。对于版本控制,RStudio集成了对SVN和Git的支持。一个不错的加法是可以使用Shiny和Gives库编写交互式图形。