数据可视化
数据可视化的宗旨是用眼睛思考
数据可视化的过程是有成本的(信息丢失\制作成本)
人类的眼睛很容易被欺骗,在进行数据可视化的时候一定要小心,力求还原数据本真
如何挑选合适的图表
数据可视化的的时候,我们面临的几大基本任务
- 数据之间的比较
- 数据的组成
- 数据的分布
- 数据的相关性
根据上面的几个任务,我们可以将基本的图表所擅长表达的做一个简单分类
- 条形图很适合与比较(bar)
- 折线图更适合于反映趋势(line)
- 散点图能够体现数据的相关性和分布(scatter)
- 饼图只能用在来反映数据的简单构成,不能用于比较也不能反映分布(pie)
Table
简单来说就是表格,表格也是所有数据可视化的基础,当我们数据很少的时候,我们可以直接用表格呈现,
使用表格
- 当我们需要比较两个独立的不同值
- 需要知道准确的数据值
- 当数据值包含了不同的度量时
- 数据包含了量化的信息,但是并没有趋势
使用图
- 需要传达关于数据形状的信息
- 需要展现两个不同值的关系
柱状图
柱状图是最常用的图,柱状图被用来表现数据之间的不同,可以很轻易地从数据图中看到每列之间的大小关系(柱子的长度)
柱状图也可以用来反映时间序列的数据,比如比较近五年来的供职的营收情况,也可以用柱状图来表示,但是这种情况下只适合列数比较少的时候,如果时间跨度比较大,列很多的时候,最好还是用折线图来展现数据的确实比较好。
- 一般绘制柱状图的时候柱子的数量一般在五个左右,最好不要超过七个。
- 数据里面的时间段,比如说年度,季度这类的,最好要放在横轴上面
- 在图中的时间序列,要从左到右排序,也就是从时间远的左边,到时间近的右边
- 对于柱状图,数值轴(y轴)必须要从0开始,人类的眼睛非常敏感,特别是对长度,如果不是从0开始的话,会导致数据的高度不在有绝对意义,会得出不正确的结论
- 使用纯色的柱子即可,不要加上纹理
- 柱状图每列的种类名字最好是横着,不要斜
- 柱状图里面柱子之间的间隔,应该是柱子宽度的二分之一
直方图
直方图和柱形图比较像,很多人都会将他们搞混,这两者的区别如下
- 直方图反映的是数据的分布,比如年龄的分布,柱状图是表示数据之间的比较,比如小明和小白的收入
- 直方图每个柱子都是来连在一起的,而柱状图的主子之间是有分割缝隙的
直方图还有一种表现方式,就是在柱子上面含有不同的颜色,这样一个图里面就可以反映多个变量的分布情况,同时还起到了不同特征之间的对比作用,这就得到了两个数据分布之间的联系。在一个柱子里的颜色最好不要超过三个,同样地直方图特可以运用这种绘图方式。
条形图
条形图和柱状图内涵类似,只不过条形图将柱状图的x轴,y轴颠倒过来,这样的好处是可容纳更多的条,也就是种类。条形图还有一个好处就是,当我们的种类名字很长的时候,在柱状图很难展现全部的名字,这样就要用条形图来展现
和柱状图一样,直方图也可以用条形图的形式,通过横向的条形图来表示密度有一个好处,在碰到二分类变量的时候比如(男女)我们可以用图的左边表示男性,右边表示女性,这种方法能更好地让我们理解数据
同样地在运用条形图的时候,我们也可以使用各种不同的颜色,来增加图反映数据的维度,能够更好的体现数据里面的组成,但是这样子就失去了数据之间的比较作用。
- 可以将种类的名字放在条形图中每个条的上方,这样子更加节省空间
- 条形图最上面的一条应该是最长的,然后降序向下
折线图
折线图是最适合反映趋势变化的,特别是对时间这种连续数据,当然对于很多很多的数据种类,超过7列的数据,也是可以用折线图来表示的,因为折线图仍然是通过数据之间的对比来反映趋势的。
时间折线图
时间折线图是最常见的折线图形式,最常见的时间折线图有以下几种
- 股票K线图
- 网站流量图
- 季度销售数据图
使用折线图应该注意的几点
- 在绘制折线图的时候,我们选择的数据区间会对折线图的样式产生很大的影响,折线图的区间长度要一样
- 折线图的起点不一定是原点(零点)比如我们绘制的是销售增长率的趋势,我们绘制出来的图形不是从零开始的。我们绘制的时候最好能够选取一列作为基点,比如选取2004年作为基点,那么这年增长率就是零,后面的年份再根据2004年为基础来不断地计算增长率
- 不要再一张图里面放太多的折现,最好不要超过4个
- 折线图的图例最好跟在线段的后面,不要单独里出来在一个小方块
饼图
饼图的使用很常见,但是饼图不好的地方在于能够反映的信息很少,一般统计学家和数据科学家都不使用饼图
饼图使用的注意点:
- 饼图反映的应该是占比,百分比
- 所有的种类占比加起来应该等于1
- 不要使用太多的种类,一般在五个以内
散点图
散点图能够很好的反映数据之间的关系,数据的分布,还能够帮助我们判断数据是聚集还是分散,我们能够从里面找到离群值,异常值
气泡图
气泡图使用特殊的散点图,在散点图的基础上增加了一个维度,即气泡的大小
一个例子是销售成本和销售收入组成了一个基本的散点图的横轴和纵轴,在此基础上销售商品的品类作为气泡的大小,这样我们不仅能够观察收入和成本的关系,还有数据的分布,还可以知道每种产品的重要性。
散点图(气泡图)的使用:
- 表现两种或三种数值型变量的关系。
- 可以将横轴变成对数标量,这样能够展现出更多数据分布信息。
- 可以体现数据的模式,聚集或分散,可以找到异常值和离群值。
- 可以忽略时间维度来比较数据。
- 体现整体的关系,而不是单一值的比较
地图
地图能够很好的反映地理信息,但是不利于数据之间的比较,由于地图是以颜色来区分的,而人眼遇到多种颜色的时候会产生一定程度的紊乱。
地图的使用指南:
- 表达量化的地理信息
- 观察数据在地理的分布情况
- 只有在数据都是标准化的时候才能使用地图
甘特图
甘特图主要用于计划、日程安排
各种图形的绘制技巧
- 散点图,用颜色反映分类,需要配上图例说明
- 散点图,通过改变透明度来反映数据的密度,数据分布越集中的区域,透明度越低
- 折线图,通过改变线条的粗细来反映重要性(权重weight)
- 图表的位置,设置子图,来体现多个特征之间的联系,各个子图之间的轴刻度最好也相同,这样比较起来才可信
- 箱型图,可以使用纹理和颜色来反映分类
在python中有seaborn这个可视化的神器,我们可使用seaborn快熟进行可视化工作,在进行数据分析的过程中每次我们都要绘制的图形
- 关系矩阵
- pairplot
- swarmplot
相关系数矩阵
相关系数矩阵是体现数据中各个特征之间和目标之间的相关性的可视化图表,两个特征之间的关系又正相关,负相关,不相关,
- 工资和消费是存在正相关的关系的,收入越高的人消费越高。(连续型变量)
- 在保险行业中,保费收入和地区的经济水平有很大关系,比如上海、北京等一线城市的保费收入要远远高于南宁、贵阳这样的三线城市。如果我们看到一个城市有比较高的保费收入,那么这个城市很可能就是属于一线城市的。(分类型变量)
在绘制相关系数矩阵之前,我们应该将所有含有确实值的特征填充(填充缺失值之前要先看一下数据分布,如果用均值填充,会受到离群值的影响较大,可以使用去尾均值)
pairplot
pairplot其实就是一个大画布,里面有很多的子图,这个子图是每两个变量作为x轴或者y轴绘制出来的散点图,用来可视化两个变量之间的关系,在对角线的位置是这个变量的分布,可以是直方图也可以是密度图等
在seaborn中我们可以使用一个特征作为图像的颜色,这个我们绘制散点图的时候就多了一个维度,在散点图中那我们还可以发现异常值
Swarmplot
swarmplot可以用来展现数值型的特征和文本型的特征,其实也是一种散点图,但是这种散点图可以将分类型变量作为轴坐标的值,然后在每个分类上面的绘制散点图用来官产,数据的分布。
使用swarmplot的时候,可以组合来用,比如和箱型图组合,箱型图能够绘制出数据的中位数,四分位数这些分布指标,但是还是无法看清数据的全部分布,比如在箱型图的极值处,我们并不知道是有多少个数值处于极值,也不知道有多少的数据点是分布在75%分位数以上的
如上图所示,这样我们就可以比较好的了解分类型特征里面的每种分类的数据分布情况
数据可视化的注意事项
- 时间轴要放在横轴上,从左到右
- 不同的种类用不同的颜色
- 整个notebook中最好都用一致的颜色版
- 使用颜色的时候避免一些颜色是色盲无法分辨的
- 不要使用超过六种颜色
- 超过一种种类的时候最好使用图例