简介
数据可视化是数据处理步骤的一部分。 通过可视化数据,我们可以获得更好的直观性。 另外,可视化也可以揭示数据中的隐藏模式,方便模型选择。
本章主要内容:
- matplotlib
- seaborn
- pandas绘图
安斯库姆四重奏 数据集介绍
安斯库姆四重奏(Anscombe's quartet)是四组基本的统计特性一致的数据,但由它们绘制出的图表则截然不同。每一组数据都包括了11个(x,y)点。这四组数据由统计学家弗朗西斯·安斯库姆(Francis Anscombe)于1973年构造,他的目的是用来说明在分析数据前先绘制图表的重要性,以及离群值对统计的影响之大。
这四组数据的共同统计特性如下:
性质 | 数值 |
---|---|
x的平均数 | 9 |
x的方差 | 11 |
y的平均数 | 7.50(精确到小数点后两位) |
y的方差 | 4.122或4.127(精确到小数点后三位) |
x与y之间的相关系数 | 0.816(精确到小数点后三位) |
线性回归线 | y = 3.00 + 0.500 x {\displaystyle y=3.00+0.500x} [图片上传失败...(image-5d94e9-1534993415535)](分别精确到小数点后两位和三位) |
在四幅图中,由第一组数据绘制的图表(左上图)是看起来最“正常”的,可以看出两个随机变量之间的相关性。从第二组数据的图表(右上图)则可以明显地看出两个随机变量间的关系是非线性的。第三组中(左下图),虽然存在着线性关系,但由于一个离群值的存在,改变了线性回归线,也使得相关系数从1降至0.81。最后,在第四个例子中(右下图),尽管两个随机变量间没有线性关系,但仅仅由于一个离群值的存在就使得相关系数变得很高。
爱德华·塔夫特(Edward Tufte)在他所著的《图表设计的现代主义革命》(The Visual Display of Quantitative Information)一书的第一页中,就使用安斯库姆四重奏来说明绘制数据图表的重要性。
该数据集可以从seaborn导入
>>> import seaborn as sns
>>> anscombe = sns.load_dataset("anscombe")
>>> print(anscombe)
dataset x y
0 I 10.0 8.04
1 I 8.0 6.95
2 I 13.0 7.58
3 I 9.0 8.81
4 I 11.0 8.33
5 I 14.0 9.96
6 I 6.0 7.24
7 I 4.0 4.26
8 I 12.0 10.84
9 I 7.0 4.82
10 I 5.0 5.68
11 II 10.0 9.14
12 II 8.0 8.14
13 II 13.0 8.74
14 II 9.0 8.77
15 II 11.0 9.26
16 II 14.0 8.10
17 II 6.0 6.13
18 II 4.0 3.10
19 II 12.0 9.13
20 II 7.0 7.26
21 II 5.0 4.74
22 III 10.0 7.46
23 III 8.0 6.77
24 III 13.0 12.74
25 III 9.0 7.11
26 III 11.0 7.81
27 III 14.0 8.84
28 III 6.0 6.08
29 III 4.0 5.39
30 III 12.0 8.15
31 III 7.0 6.42
32 III 5.0 5.73
33 IV 8.0 6.58
34 IV 8.0 5.76
35 IV 8.0 7.71
36 IV 8.0 8.84
37 IV 8.0 8.47
38 IV 8.0 7.04
39 IV 8.0 5.25
40 IV 19.0 12.50
41 IV 8.0 5.56
42 IV 8.0 7.91
43 IV 8.0 6.89
matplotlib
- 折线图(默认)
import matplotlib.pyplot as plt
dataset_1 = anscombe[anscombe['dataset'] == 'I']
plt.plot(dataset_1['x'],dataset_1['y'])
- 原点图
plt.plot(dataset_1['x'], dataset_1['y'], 'o')
- 组合图
# create subsets of the anscombe data
dataset_2= anscombe[anscombe['dataset'] == 'II']
dataset_3 = anscombe[anscombe['dataset'] == 'III']
dataset_4 = anscombe[anscombe['dataset'] == 'IV']
fig = plt.figure()
axes1 = fig.add_subplot(2, 2, 1)
axes2 = fig.add_subplot(2, 2, 2)
axes3 = fig.add_subplot(2, 2, 3)
axes4 = fig.add_subplot(2, 2, 4)
填充数据
# add a plot to each of the axes created above
axes1.plot(dataset_1['x'], dataset_1['y'], 'o')
axes2.plot(dataset_2['x'], dataset_2['y'], 'o')
axes3.plot(dataset_3['x'], dataset_3['y'], 'o')
axes4.plot(dataset_4['x'], dataset_4['y'], 'o')
添加标签
# add a plot to each of the axes created above
axes1.plot(dataset_1['x'], dataset_1['y'], 'o')
axes2.plot(dataset_2['x'], dataset_2['y'], 'o')
axes3.plot(dataset_3['x'], dataset_3['y'], 'o')
axes4.plot(dataset_4['x'], dataset_4['y'], 'o')
小结:
参考资料
- 讨论qq群144081101 591302926 567351477 钉钉免费群21745728
- 本文涉及的python测试开发库 请在github上点赞,谢谢!
- 本文相关书籍下载
- 源码下载
- 本文英文版书籍下载