像许多开发人员一样,在构建数据密集型项目时,使用Python并不是我的首选。老实说,在Java工作了这么多年之后,Scala起初对我来说似乎更具吸引力,尽管学习曲线相当陡峭。Scala是一种非常强大的语言,它优雅地结合了面向对象和函数式编程,这在Java中非常缺乏(至少在Java 8开始引入Lambda表达式之前)。
Scala还提供了一种非常简洁的语法,可以转换为更少的代码行,更高的生产力,并最终减少错误。这很方便,特别是当您的大部分工作是操纵数据时。喜欢Scala的另一个原因是在使用像Apache Spark这样的大数据框架时更好的API覆盖率,这些框架本身是用Scala编写的。还有很多其他很好的理由喜欢Scala,比如强大的系统,与Java的互操作性,在线文档和高性能。
因此,对于像我这样的开发人员开始参与数据科学,Scala看起来似乎是一个更自然的选择,但是,更糟糕的是,我们最终专注于Python。这种选择有多种原因:
- Python作为一种语言,也有很多事情要发生。它是一种动态编程语言,与Scala具有类似的功能,如函数式编程,简洁的语法等。
- 在过去的几年中,Python已经看到数据科学家的迅速崛起,超越了长期竞争对手R作为数据科学的首选语言,快速搜索Python数据科学,Python机器学习,R数据科学和R机器学习Google趋势:
2017年的兴趣趋势
在良性循环中,Python的日益普及推动了庞大且不断增长的广泛库生态系统,可以使用PIP Python软件包安装程序轻松导入到您的项目中。数据科学家现在可以访问许多功能强大的开源Python库,如数据操作,数据可视化,统计,数学,机器学习,自然语言处理等等。
即使是初学者也可以使用流行的Scikit-learn软件包快速构建机器学习分类器,而无需成为机器学习专家,或使用Matplotlib或Bokeh快速绘制丰富的图表。
此外,如IEEE Spectrum 2017调查所示,Python也已成为开发人员的顶级语言之一:
编程语言的使用情况统计
这种趋势也在GitHub上得到了证实,其中Python现在是存储库总数的第三位,仅次于Java和JavaScript:
Python也在网络上无处不在,为许多知名网站提供支持,包括Django,Tornado和TurboGears等Web开发框架。最近,有迹象表明,Python也正在进入云服务领域,所有主要的云提供商都在其产品中以某种身份提供服务。
Python显然在数据科学领域有着光明的未来,特别是与Jupyter笔记本等强大工具结合使用时,这些工具在数据科学家社区中非常流行。笔记本的价值主张是它们非常容易创建并且非常适合快速运行的实验。此外,笔记本电脑支持多种高保真序列化格式,可以捕获指令,代码和结果,然后可以非常轻松地与团队中的其他数据科学家共享,或者作为开放源供所有人使用。例如,我们看到在GitHub上共享的Jupyter笔记本爆炸超过250万并且还在增加。
下面的屏幕截图显示了GitHub搜索任何扩展名为ipynb的文件的结果,这是序列化Jupyter笔记本(JSON格式)最流行的格式:
在GitHub上搜索Jupyter笔记本的结果
这很棒,但Jupyter笔记本经常被认为只是数据科学家的工具。我们将在接下来的章节中看到它们可以更多,并且它们还可以帮助所有类型的团队解决数据问题。例如,它们可以帮助业务分析人员快速加载和可视化数据集,使开发人员能够直接在Notebook中与数据科学家合作,利用他们的分析并构建功能强大的仪表板,或允许DevOps轻松地将这些仪表板部署到可扩展的企业级微型计算机中 – 可以作为独立Web应用程序或可嵌入组件运行的服务。它基于将数据科学工具带给非数据科学家的愿景,即PixieDust开源项目的创建。
推出PixieDust
我经常被问到我是如何想出PixieDust这个名字的,我回答说我只是想简单地制作Notebook,就像魔法一样,非数据科学家。
PixieDust 是一个开源项目,主要由三个组件组成,旨在解决本文开头所述的三个目标:
- Jupyter Notebooks的辅助Python库,提供简单的API,将来自各种源的数据加载到流行的框架(如Pandas和Apache Spark DataFrame)中,然后以交互方式可视化和探索数据集。
- 一种简单的基于Python的编程模型,通过创建称为PixieApps的强大仪表板,开发人员可以将分析直接“产品化”到笔记本中。正如我们将在下一章中看到的,PixieApps与传统的BI(商业智能)仪表板不同,因为开发人员可以直接使用HTML和CSS来创建任意复杂的布局。此外,他们可以在业务逻辑中嵌入对Notebook中创建的任何变量,类或函数的访问。
- 一个名为PixieGateway的安全微服务Web服务器,可以将PixieApps作为独立的Web应用程序或可以嵌入任何网站的组件运行。使用图形向导可以轻松地从Jupyter Notebook部署PixieApps,无需更改任何代码。此外,PixieGateway支持将PixieDust创建的任何图表共享为可嵌入的网页,使数据科学家能够轻松地在笔记本外部传达结果。
GitHub存储库统计编程语言
上面的图表显示了一些有趣的统计数据,展示了Python开发人员社区的活跃程度。与GitHub相关的Python相关存储库是第三大存储库,同样健康的总代码推送和每个存储库打开的问题。
值得注意的是,PixieDust“display()”主要支持两种流行的数据处理框架:
- 熊猫:迄今为止最受欢迎的python数据分析包。Pandas提供了两种主要的数据结构:DataFrame用于操作二维表格式数据集,而Series用于自己维度的列式数据集。
目前,PixieDust“display()”仅支持Pandas DataFrame。
- Apache Spark DataFrame:用于跨Spark Cluster操纵分布式数据集的高级数据结构。Spark DataFrames构建在较低级别的RDD(Resilient Distributed Dataset)之上,具有支持SQL查询的附加功能。
PixieDust“display()”支持的另一种不太常用的格式是JSON对象数组。在这种情况下,PixieDust将使用这些值来构建行,并将键用作列。
例如:
my_data = [
{“name”:“Joe”,“age”:24},
{“name”:“Harry”,“age”:35},
{“name”:“Liz”,“age”:18},
…
]
此外,PixieDust在数据处理和渲染级别都具有高度可扩展性。例如,您可以添加要由可视化框架呈现的新数据类型,或者如果您想利用您特别喜欢的绘图库,可以轻松地将其添加到PixieDust支持的呈现器列表中(有关详细信息,请参阅下一章) 。
您还会发现PixieDust包含一些与Apache Spark相关的额外实用程序,如:
- PackageManager:允许您在Python笔记本中安装Spark包
- Scala Bridge:让您使用%% scala magic直接在Python笔记本中使用Scala。变量自动从Python传输到Scala,反之亦然。
- Spark Job Progress Monitor:通过直接在单元格输出中显示进度条来跟踪任何Spark作业的状态。
您已经阅读了Packt Publishing即将出版的书“ Thoughtful Data Science”的摘录 。 本书不仅为有志于发展技能或成为专业数据科学家的新兴数据科学家和开发人员提供服务,而且还是已经成熟的数据科学家的优秀桌面伴侣,并将很快推出。
本文由 CPDA数据分析师 投稿至 数据分析网 并经编辑发表,内容观点不代表本站立场,如转载请联系原作者,本文链接:https://www.afenxi.com/59692.html 。