查看原文
其他

数据可视化的种类与应用

2017-06-23 徐永瑞 Python爱好者社区

作者:徐永瑞【天津大学】

Hi,西山居的朋友们大家好,我是菠萝兄,在这篇文章中,我将给各位介绍当下比较流行的数据可视化技术的一些种类,以及它们的应用。看完这篇文章,如果在工作中遇到一些数据可视化的问题,可以有在本篇文章中找到一些相应的处理思路。

 那么进入正题,什么是数据可视化呢?数据可视化旨在通过图形来清晰有效的表达数据,数据可视化已经在许多领域中广泛的应用了,比如编写报告的时候、管理企业的运转、跟踪任务进展等的工作中就常常用到。我们可以在可视化的数据中发现原有数据中不易观察到的数据联系,甚至可以制造一些乐趣和有趣的图案。



现在介绍数据可视化的一些种类,各位看官请接好~~

一.基于像素的可视化技术

一种可视化一维值的简单方法就是使用像素,用像素的颜色反映该维的值。对于一个m维的数据集,我们可以在屏幕上创建m个窗口,每维一个,记录的m个维值映射到这些窗口中对应位置上的m个像素,而像素的颜色反映对应的值。

下面给出一个基于像素的可视化经典案例:AllElectronics维护了一个顾客信息表,包含四个维:income(收入),credit_limit(信贷额度),transaction_volume(成交量)和age(年龄)。我们来对所有顾客按收入的递增顺序来排序,并使用这个序,在四个可视化窗口中安排顾客的数据,值越小,颜色相应就越淡。

我们很容易从上图观察到,credit_limit随income增加而增加;收入处于中部区间的顾客更可能从AllElectronics购物;income与age之间没有明确的相关性。

二.基于几何投影的可视化技术

 基于像素的可视化技术的一个缺点是,他们对我们理解多维空间的数据分析帮助不大,因为他们并不显示在多维子空间是否存在

稠密区域,由此便有了几何投影技术,几何投影技术帮助用户发现多维数据集的有趣投影,几何投影技术的首要挑战是设法解决如何在二维显示上可视化高维空间。

对二维数据点,我们通常使用散点图,散点图是基于笛卡尔坐标的,散点图中我们可以使用不同的颜色或形状来表示不同得到数据点,我们可以增加第三维,增加第三维的方法见下图:

其中三角形和叉型,表示不同维的数据点,这样可以在二维的坐标面上,表示出了更高维的数据点。

对于维数超过4的数据集,散点图一般不太有效,散点图矩阵是散点图的一种有用扩充。对于n维数据集,散点图矩阵是二维散点图的n*n网络,提供每个维与其他所有维的可视化。

但是,随着维数增加,散点图矩阵也失去作用了,这时便出现了平行坐标,平行坐标绘制了n个等距离,相互平行的轴,每维一个。

三.基于图符的可视化技术

基于图符的可视化技术的定义:使用少量的图符表示多维数据值

(1).切尔诺夫脸

切尔诺夫脸:统计学家赫尔曼·切尔诺夫于1973年引进的。把多达18个变量的多维数据以卡通人物的脸来显示出来,切尔诺夫脸有助于揭示数据中的趋势。脸的要素:眼、耳、口、鼻等,用其形状、大小、位置和方向表示维度的值。

切尔诺夫脸的种类:1.对称的切尔诺夫脸(18维)2.非对称的切尔诺夫脸(36维)

(2).人物线条画

可视化技术把多维数据映射到5-段人物线条画中,其中每个画都有一个四肢和一个躯体。两个维被映射到显示轴(X轴和Y轴),而其余的被映射到四肢角度和长度,下图显示的是人口普查数据,其中age和income被映射到显示轴,而其他维被映射到人物线条画。如果数据项关于两个显示维相对稠密,则结果可视化显示纹理模式,反应数据趋势。

四.层次可视化技术

   层次可视化的定义:对于大型高维数据很难实现可视化技术,所以面对这种情况,层次可视化技术便出现了,层次可视化把大型的高维数据的所有维划分成子集(子空间),这些子空间按层次可视化。

  层次可视化的使用方法:

(1)“世界中的世界”(N-Vision)是一种有代表性的可视化方法,假设我们想对6维数据集可视化,其中维是F,X1,X2....X5。我们想观察维F如何随其他维变化,我们可以先把X3,X4,X5固定为某一个选定的值(如C1,C2,C3),这样我们可以使用一个三维图(世界)对F,X1,X2进行可视化(此方法可以对数据进行降维)。其中X3,X4,X5称为内世界,其余则被称为外世界,内世界的原点是外世界的(C1,C2,C3)。用户可以在外世界中交互的改变内世界原点的位置,同时可以观察内世界的变化结果。此外,用户还可以改变内世界和外世界使用的维,给定更多的维,可以使用更多的维,这也是该方法得此名称原因。

(2)树图是层次可视化方法的另一个例子,它把层次数据显示成嵌套矩形的集合。

五.可视化复杂对象和关系

早期的可视化技术主要用于分析数值数据,然而越来越多的非数值数据,比如文本和社会网络已经成为可利用的,所以可视化这些数据引起了更多广泛的关注。

比如,Web上许多人对诸如图片、博客和产品评论加标签。标签云,是用户产生的标签的统计量的可视化。在标签云中,标签通常按字母次序或用户指定的次序列举。

   标签云的方法有两种:

(1)对于单个术语的标签云,我们根据不同用户使用该标签的次数来显示该标签的大小。(2)在多个术语上的可视化标签统计量的时候,该标签被使用额越多,我们就使它越大,即标签的人气。

   除了复杂的数据之外,数据项之间的复杂关系也对可视化提出了挑战。例如,使用疾病影响图来可视化疾病之间的相关性。图一中的节点是疾病,节点的大小与对应疾病的流行程度成正比,如果对

应疾病具有强相关性,则两个节点可以用一条边来连接,边的宽度与对应的疾病的相关强度成正比。



介绍完了上面的一些分类以后,开始甩点干货,现在教大家用Python实现一些可视化的案例:

这是某公司员工的部分信息表

开始导入表格:

import matplotlib.pyplot as plt

import pandas as pd

df=pd.read_excel("E:/First.xlsx","Sheet1")

(1)直方图

fig=plt.figure()#Plots in matplotlib reside within a figure object, use plt.figure to create new figure

#通过使用增加投影点的功能创建一到多个投影点,因为你不能创造一个空的图形

ax = fig.add_subplot(1,1,1)

#可视化

ax.hist(df['Age'],bins = 7)

#你可以在这里创建直方图

Labels and Tit

plt.title('Age distribution')

plt.xlabel('Age')

plt.ylabel('#Employee')

plt.show()

(2)折线图

var = df.groupby('BMI').Sales.sum()

fig = plt.figure()

ax1 = fig.add_subplot(1,1,1)

ax1.set_xlabel('BMI')

ax1.set_ylabel('Sum of Sales')

ax1.set_title("BMI wise Sum of Sales")

var.plot(kind='line')



干货结束,谢谢欣赏~~

 概括地说,可视化为探索数据提供了有效的工具。菠萝兄的这篇文章向大家介绍了一些当下比较流行的方法以及基本思想。此外,可视化技术可以用于数据挖掘的若干方面。可视化数据挖掘,也是一个重要的研究开发的方向哦。 

菠萝兄其实是数据方向的新人,写下这篇文章也是希望能够更好的和各位一起学习当下较为热门的大数据,所以如果有什么不足的地方,有请指教呀,也欢迎大家和我一起学习和讨论~

关注公众号,“Python爱好者社区”,回复“爬虫”即可获取崔老师爬虫免费学习视频。


Python爱好者社区


为大家提供与Python相关的最新技术和资讯。


您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存