Python数据可视化1.4 可视化如何帮助决策

1.4 可视化如何帮助决策


数据有多种视觉展示的方式。然而,其中仅有少数方式能够用人们视觉上看得懂且观察到的新模式来刻画数据。数据可视化并不像看起来那么简单;它是一门艺术,且需要很多实践经验。(就像画一幅画,一个人不可能一天之内成为绘画大师,它需要很多实践经验。)

人类感知在数据可视化领域扮演着重要角色。健康人的眼睛具有水平方向大约200度的视野范围(两只眼睛共享大约120度的视野)。大概人类大脑的四分之一涉及可视化处理,这比其他任何感官都要多。在听觉、视觉和嗅觉中,人的视觉占据最多(约为60%)(http://contemplatingmadness.tumblr.com/post/27478393311/10-limits-to-human-perception-and-how-they-shape)。

有效的可视化有助于我们分析理解数据。作者Stephen Few列举出如下8种定量信息(通过可视化),这有助于理解或交流数据(来源:https://www.perceptualedge.com/articles/ie/the_right_ graph.pdf):

时间序列

排序

局部到整体

偏差

频率分布

相关

名义比较

地理或地理空间

科学家已经绘制出人类基因组,这是我们面临将知识转换为可视化以求更好理解的挑战。换句话说,我们可能不得不找到从视觉上呈现人类基因组的新方法,使得普通人也能理解。

1.4.1 可视化适用于哪里

需要强调的是,数据可视化不是科学的可视化。科学可视化处理的数据本身固有一种物理结构,比如流过飞机机翼的空气分子。另一方面,信息可视化处理抽象数据,帮助解决大量数据集问题。挑战之一是确保数据是干净的,而且通过降维提出不必要的冗余信息。

可视化可以用于知识或数据价值增加的任何情况。通过做更多的数据分析和运行更多的算法即可完成。数据分析的形式可能由最简单变得更复杂。

有时,仅仅观察均值、中位数或总和无法获得真正的价值。这是因为这些测度指标仅仅测度了显而易见的东西。有时,一个区域的并集或数值隐藏着需要特别关注的有趣细节。一个经典的例子(Anscombe四重奏)包括简单的统计性质几乎相同的四个数据集,但在图像中却截然不同。如果想了解更多,请见链接:https://en.wikipedia.org/wiki/Anscombe% 27s_quartet。

 

在大多数情况下,数据集的可视化可能有不同的形式,但是总会有一些人能够画出比其他人更清晰的图片来帮助理解。在一些情况下,必须通过多次分析来得到可视化的更好理解,如上图所示。

良好的可视化不仅仅能看到如博物馆展览一样的静态图。我们还可以深入挖掘数据,发现更多变化。(通过循序渐进地查看,收缩和过滤,改变展示标尺,再得到可视化结果)。如由Ben Shneiderman提供的资料(http://www.mat.ucsb.edu/~g.legrady/academic/courses/11w259/schneiderman.pdf)所示,得到有时在同一图中,以同一个标尺展示所有信息非常有难度,而且用户可以通过个人经验更好地理解这些可视化方法。进一步总结,特别是当数据充足时,可视化在组织和提炼数据方面很有用处。

交互式可视化成为一种新的沟通交流形式,它允许用户分析信息以便创建自己对数据的新理解。

1.4.2 如今的数据可视化

虽然很多计算领域旨在用自动化取代人工判断,但是可视化系统是独一无二的,而且明确设计为无法取代人类。事实上,可视化系统是为确保人类在整个参与过程中的积极性而设计的,这是为什么呢?

数据可视化是在各种计算工具帮助下受数据驱动并由人类创造的一门艺术。一位艺术家用工具和材料(像刷子和颜料)绘制一幅画。同样,另一位艺术家尝试在计算工具的帮助下创建数据可视化。可视化可以是美观的,并有助于使事情更清晰;根据不同的创建者,有时会缺乏上述一个或两个特点。

如今,数据的可视化展示方式已超过30种,每一种特定的方式都有它的用处。正因为可视化方法不断发展进步,我们已经不局限于柱状图和饼状图。数据可视化有很多好处,但它们往往因为缺乏理解而有所不足。在一些情形下,同一个图上聚集太多东西往往会使得整个构图纷繁复杂。

有很多呈现数据的方法,但仅有一小撮适用于大多数情况,这将在本章后面的部分详细讲述。在讨论之前,不妨先看看得到好的可视化效果有哪些重要的注意事项。

什么是好的可视化

好的可视化结果有助于用户探索和理解数据,提供价值和深刻的观点。它是有效的、具有视觉吸引力的、可伸缩的而且容易理解的(好的可视化不必太复杂)。通过开展研究和分析工作,可视化是发现数据模式和趋势的核心工具,我们使用其中的任何一种方法都能够回答数据问题。

有效的可视化背后的主要原则是能够突出你想表现的主要问题,根据观众的层次和背景,精确呈现数据并创造出能够清晰传达信息的可视化结果。

举例:下图来自小样本数据源,该数据展示了1970~2012年10门学科中女性和男性被授予学位的百分比(womens-undergrad-degrees.csv和mens-undergrad-degrees.csv来自http://www.knapdata.com/python/):

 

所有数据来源可见http://nces.ed.gov/programs/digest/d11/ tables/dt11_290.asp,包含全部数据集。

尽管不同学科间授予学位的数量彼此没有关系,但有一种简单的方法,用同一个标尺展现所有学科。让我们分析和观察一下,这种展示方式是否可行,如果不可行,我们需要做什么?还有其他展示方式吗?

一方面,所有学科数据展示在同一幅图上形成了一个很好的对比。然而,我们不能直接得到2000年的信息。除非有一种类似于金融股票图的交互式展示模式,否则没有一种简单的方法来确定2000年各学科的学位授予信息。另一方面,同一学科授予男性和女性学位的百分比共占100%;比如,男性在卫生专业被授予学位的百分比占15.2%,女性占84.8%。

我们还有其他可视化方法吗?可以考虑就每年都创建一个气泡图,加入年份因素,通过设置按钮自助切换不同年份的气泡图,完成交互式的可视化图像。

这种可视化方式更适用于该数据。我们也可以用与原始图相同的滑块,通过强调所选年份的数据实现交互。用不同的方法来观察一些图是否比其他图更好,这是一种好习惯。如果数据的数值区间很大(比如,20~200 000),那么我们可能不得不将数值进行对数处理。

我们可以用Python编程绘制气泡图。此外,也可考虑用D3.js的JavaScript语言和RStudio的R语言。读者可以进一步探索其他可视化的选择。

可以用Google Motion图来可视化,在developers.google.com/chart/interactive/docs/gallery/ motionchart?csw=1#Example呈现的交互式图表,这里展示了与棋牌图类似的一个工作示例。下面的气泡图仅展示三年的情况,但是你可以创建另一个图展示所有年份的情况。

 

数据可视化是数据分析后的一个过程。在前面,我们也注意到数据转换、数据分析和数据可视化已被多次尝试。为什么会这样?我们都知道有这样一句名言,“有知识的人给出正确的答案,聪明的人提出正确的问题。”数据分析有助于我们更好地理解数据,因此,数据分析应用于回答有关数据的问题。然而,当数据用不同方式进行视觉展示时,一些新问题就会出现,而且这也是要重复分析和可视化的原因之一。

数据可视化是数据探索的主要途径,而且几乎总是先于或引发数据分析。有很多数据的视觉展示工具,但是用于分析的工具却少之又少。像Julia、R和Python这些编程语言在表现数据分析方面排名靠前,但是就可视化而言,基于D3.js的JavaScript在生成交互式数据可视化方面具有更大的潜力。

与Python相比,学习R语言相对较难。关于这点,Quora上也有一些争论;你可以在网站(https://www.quora.com/Which-is-better-for-data-analysis-R-or-Python)上验证其有效性。现在,Python有很多统计建模和数据分析工具,因此,成为了研究数据科学的一种颇具吸引力的选择。

时间: 2024-10-03 00:34:12

Python数据可视化1.4 可视化如何帮助决策的相关文章

《Python数据可视化编程实战》—— 1.2 安装matplotlib、Numpy和Scipy库

1.2 安装matplotlib.Numpy和Scipy库 Python数据可视化编程实战 本章介绍了matplotlib及其依赖的软件在Linux平台上的几种安装方法. 1.2.1 准备工作 这里假设你已经安装了Linux系统且安装好了Python(推荐使用Debian/Ubuntu或RedHat/SciLinux).在前面提到的Linux系统发行版中,Python通常是默认安装的.如果没有,使用标准的软件安装方式安装Python也是非常简便的.本书假设你安装的Python版本为2.7或以上.

Python数据可视化2.4 用数据编写有趣的故事

2.4 用数据编写有趣的故事 数据可视化通常改善用数据讲述故事的能力,而且在某些情况下,需要视觉上没有那么琐碎.不久前,新闻记者已经更倾向于将可视化结果整合到叙述中,这样通常有助于读者理解故事.在商界,很少有案例成功掌握数据与故事相关联的方法.对于观众来说,这些有意义的故事应从感性和理性角度都具有吸引力.正如Rudyard Kipling所写,"如果历史以故事的形式串联,那么它将不会被遗忘."类似的想法用在数据方面.因此,我们应该会理解:如果数据展示方式正确,那么读者会更好地理解和记住

《Python数据可视化编程实战》——5.2 创建3D柱状图

5.2 创建3D柱状图 Python数据可视化编程实战 虽然matplotlib主要专注于绘图,并且主要是二维的图形,但是它也有一些不同的扩展,能让我们在地理图上绘图,让我们把Excel和3D图表结合起来.在matplotlib的世界里,这些扩展叫做工具包(toolkits).工具包是一些关注在某个话题(如3D绘图)的特定函数的集合. 比较流行的工具包有Basemap.GTK 工具.Excel工具.Natgrid.AxesGrid和mplot3d. 本节将探索关于mplot3d的更多功能.mpl

《Python数据可视化编程实战》—— 1.6 安装图像处理工具:Python图像库(PIL)

1.6 安装图像处理工具:Python图像库(PIL) Python数据可视化编程实战Python图像库(PIL)为Python提供了图像处理能力.PIL支持的文件格式相当广泛,在图像处理领域提供了相当强大的功能. 快速数据访问.点运算(point operations).滤波(filtering).图像缩放.旋转.任意仿射转换(arbitrary affine transforms)是PIL中一些应用非常广泛的特性.例如,图像的统计数据即可通过histogram方法获得. PIL同样可以应用在

《Python数据可视化编程实战》—— 1.5 在Windows上安装matplotlib

1.5 在Windows上安装matplotlib Python数据可视化编程实战在本节中,我们将演示如何安装Python和matplotlib.假设系统中没有预先安装Python. 1.5.1 准备工作 在Windows上安装matplotlib有两种方式.较简单的方式是安装预打包的Python环境,如EPD.Anaconda和Python(x,y).这是本书推荐的安装方式,尤其对于初学者来说更是如此. 第二种方式,是使用预编译的二进制文件来安装matplotlib和依赖软件包.需要注意安装的

《Python数据可视化编程实战》—— 1.8 在代码中配置matplotlib参数

1.8 在代码中配置matplotlib参数 Python数据可视化编程实战matplotlib库提供了强大的绘图功能,是本书用的最多的Python库.在其配置文件即.rc文件中,已经为大部分属性设定了默认值.本节会介绍如何通过应用程序代码修改matplotlib的相关属性值. 1.8.1 准备工作 如前所述,matplotlib配置信息是从配置文件读取的.在配置文件中可以为matplotlib的几乎所有的属性指定永久有效的默认值. 1.8.2 操作步骤 在代码执行过程中,有两种方式更改运行参数

《Python数据可视化编程实战》—— 1.9 为项目设置matplotlib参数

1.9 为项目设置matplotlib参数 Python数据可视化编程实战本节介绍matplotlib使用的各种配置文件的位置,以及使用这些配置文件的意义.同时还将介绍配置文件中的具体配置项. 1.9.1 准备工作 如果不想在每次使用matplotlib时都在代码开始部分进行配置(像前一节我们做的那样),就需要为不同的项目设定不同的默认配置项.本节将介绍如何做到这一点.这种配置方式使得配置项与代码分离,从而使代码更加整洁.此外,你可以很容易在同事间甚至项目间分享配置模板. 1.9.2 配置方法

《Python数据可视化编程实战》—— 1.7 安装requests模块

1.7 安装requests模块 Python数据可视化编程实战我们需要的大部分数据都可以通过HTTP或类似协议获得,因此我们需要一些工具来实现数据访问.Python的requests库能让这部分工作变得轻松起来. 虽然Python提供的urllib2模块提供了访问远程资源的能力以及对HTTP协议的支持,但使用该模块完成基础任务的工作量还是很大的. Request模块提供新的API,减轻了使用web服务的痛苦,使其变得更直接.Requests封装了很多HTTP 1.1的内容,仅在需要实现非默认行

《Python数据可视化编程实战》—— 1.3 安装virtualenv和virtualenvwrapper

1.3 安装virtualenv和virtualenvwrapper Python数据可视化编程实战如果同时工作在多个项目上,或是需要在不同项目间频繁切换,将所有的软件都安装在操作系统层级上也许不是一个好主意.当需要在不同系统(产品环境)上运行软件时,这种方式会带来问题.如果到此时才发现缺少特定的软件包,或是产品环境已经安装的软件包存在版本冲突,这将是非常痛苦的.为避免这种情况发生,可以选择使用virtualenv. virtualenv是由Ian Bicking创建的开放源代码项目.通过这个项