Python技术在数据可视化中的研究综述
2021-07-24肖慧明
肖慧明
(辽宁轨道交通职业学院,辽宁沈阳,11000)
1 Python技术
Python是目前主流的程序设计语言,主要是面向对象的、能简单快速的编程,它为开发者提供了高效的高级数据结构。Python的创始人为吉多·范罗苏姆 为打发圣诞节的无聊,决定研发一款基于ABC语言的新脚本解释性程序。Python开发技术主要特征就是简洁性、易读易学、灵活扩展、免费开源、强大的数据库等。Python另一大重要的技术发展特色社会就是被我们所昵称为一种胶水式类型编译器编程设计语言,它几乎没有可以很容易地把我们需要使用一些诸如C语言、C++语言、Java语言等其他数据类型编译器编程教学语言学习所需要做的各个管理工作分析模块都直接联结起来到一起。因此,一些大型操作系统通常可以使用 Python快速构建基于一个应用程序的原型,然后用它来重新修改其所有符合特殊要求的基础组件。
2008年在世界著名的TIOBE编程通用语言榜单上完全成为编程黑马,现在世界排名第三,成为TIOBE2018编程通用语言,在人工智能研究领域排名第一,在编程脚本语言编写工程技术研究领域排名第一,在电子系统测试工程技术研究领域排名第一。除此之外,Python还在微机编程和电子信息科学理论计算电子数据技术发展两个不同方面都已经是一直占据着重要的技术领导者这个社会地位。
2 常用可视化库
Python具有强大的交互式网络可视化信息管理库的能力,具有众多的信息可视性优化库,如在2D、3D信息可视化优化库matplotlib、seaborn及Pandas等。地图信息可视化优化库 folium、basemap、mapbox、geoplotlib、pyechartsmap、geo等,社会服务网络的信息可视化管理库networkx,词典和云图的信息可视性优化库wordcloud、pyecharts的wordcloud等。本文介绍几个简单的实例Python基本可视化数据库。
2.1 Matplotlib库
Matplotlib库占据Python可视化程序库的高级地位,在几十年的程序变更中,它依然是Python社区中使用最广泛的数据可视化绘图库,它的设计与MATLAB基本一致。Matplotlib 是Python中第一款数据可视化的第三方库,它可以很方便迅速地获得数据的大致信息,其强大的功能超出想象,但是使用起来却非常复杂,上手相对较难。因此,后来陆续出现了很多第三方库都是建立在Matplotlib库的基础上,有些甚至直接调取Matplotlib库中的方法,例如Pandas库、Seaborn库,这两个库都是Matplotlib库的外包,开发者调取 Matplotlib的方法不需复杂的代码,只需几条简单的代码即可调取,方便快捷。通过Matplotlib开发者可以很轻松地绘制各种图表,仅仅几行源码就能根据数据绘制各种直方图、线图、功率谱、条形图、错误图等,如图1所示。
图1 Matplotlib的直方图示例
2.2 Seaborn库
Seaborn基于matplotlib的图形可视化python包,其优势是专攻于统计可视化,提供了一种高度交互式界面,它可以和pandas进行无缝对接,更适用于初学者,简单上手操作快速,用简洁的代码创建信息丰富和有吸引力的统计图形库,Seaborn提供了种类繁多的功能,比如用通过内置的主题、各种函数及工具,利用这些就能实现单/双因素、数据矩阵、线性回归等,从而使开发者能够快速构建比较复杂的可视化数据信息。如图二所示。Seaborn与Matplotlib相比较,其最大的不同在于Seaborn默认绘图的风格、具有当代审美观点的颜色搭配。同时Seaborn的语法结构更加简洁明了,Seaborn库仅仅能作为Matplotlib库的补充库,不可代替Matplotlib库。Seaborn的兼容性较好,支持numpy和pandas的数据结构,掌握Seaborn库能很大程度帮助我们更高效的观察数据与图表。Seaborn[6]有着如下特点:基于matplotlib aesthetics绘图风格,增加了一些绘图模式;增加调色板功能,利用色彩丰富的图像揭示您数据中的模式;运用数据子集绘制与比较单变量和双变量分布的功能;运用聚类算法可视化矩阵数据;灵活运用处理时间序列数据;利用网格建立复杂图像集。
图2 Seaborn绘制的直方图
2.3 ggplot库
ggplot库是基于R的一个作图包 ggplot2,ggplot的运行方式与matplotlib区别很大:它允许你对组件进行分层以创建完整的绘图,叠加不同的图层。例如,可以从轴开始,然后添加点、添加线、趋势线等。绘图很直观,但不适合制作非常个性化的图像,它牺牲了图像的复杂性,以达到简单性。它于pandas的整合度非常高,所以当你使用它的时候,最好将你的数据读成 DataFrame。ggplot2的中心思想是将绘图和数据彻底分离开,将与数据有关的绘图同与数据无关的绘图分离开。真正实现按照图层来绘图,同时保留命令式作图,可以根据命令调整目标函数,使绘图变得更加灵活,并将这些常见的统计数据变换可以融入学习到了绘图中,如图3所示。
图3 ggplot绘制的图
2.4 Bokeh库
Bokeh库与ggplot库一样,都是一个 Python 交互式可视化库。但与ggplot库不同的是,它是原生Python的,而不是从R语言移植过来的。Bokeh库的优点是可用于创建可直接用于网络的交互式站点图。它能够轻松地将其输出为JSON对象、HTML页面,甚至是交互式的Web应用程序。Bokeh库同时还支持流媒体和实时数据的实现。支持现代 web 浏览器,提供优雅、简洁和创新的图形样式,以及与大型数据集的高性能交互,允许您快速创建交互式图形、仪表板和数据应用程序,如图4所示。其缺点是语法较复杂,不易上手。Bokeh根据不同的用户需求,它提供三种不同的控制水平。最高级的控制管理水平可以帮助开发者实现快速地绘制图表,主要包括用于制作常用图像,比如直方图、散点图等。中等的控制管理水平,跟matplotlib库原理相同,允许开发者控制图像的基本元素信息(比如分布图中的点)。最低的控制级管理水平主要是针对高端的开发者和软件工程师。这个级别的没有默认值,需要对图表中的每个元素进行定义。
图4 Bokeh绘制的图
2.5 Pygal库
Pygal库与 Bokeh 、 Plotly相类似,Pygal库的可交互图表能够直接嵌入到Web浏览器中,方便灵活。这就与另外两个库存在差异,Pygal库可以将图表的输出定义为SVG格式。如果你使用较小的数据集,SVG格式的图像就可以了。但是,如果您制作包含数十万个数据点的图表,它们可能难以呈现且响应迟钝。因为所有的图都包装在方法中,而且默认样式很好,所以用几行代码就可以很容易地制作出漂亮的图,如下所示。
图5 Pygal绘制的图
3 结语
Python强大的可视化库,使得每位开发人员都能轻松地将数据进行分析,进而绘制成满足我们需要的图表,通过这种数据可视化的方式用来表达管理分析数据,反应相应数据信息的能力,从而向用户展示数据内部隐藏的信息,或系统地表达对数据的理解。一旦用户接触到这些可视化图表(如直方图、箱线图、线图、条形图等)。用户立刻会有感知到数据信息,认知信息,进而进行数据交互及有效沟通。数据可视化在数据集分析中起着关键作用。最大的优势在于可以帮助开发者及客户甚至决策者更深入的理解那些隐藏在数据集中的细微动态发展变化,让用户更容易的理解就是我们的数据。