×

数据分析工具pandas快速入门教程3绘图1matplotlib基础

简介

数据可视化是数据处理步骤的一部分。 通过可视化数据,我们可以获得更好的直观性。 另外,可视化也可以揭示数据中的隐藏模式,方便模型选择。

本章主要内容:

  • matplotlib
  • seaborn
  • pandas绘图

安斯库姆四重奏 数据集介绍

安斯库姆四重奏(Anscombe’s quartet)是四组基本的统计特性一致的数据,但由它们绘制出的图表则截然不同。每一组数据都包括了11个(x,y)点。这四组数据由统计学家弗朗西斯·安斯库姆(Francis Anscombe)于1973年构造,他的目的是用来说明在分析数据前先绘制图表的重要性,以及离群值对统计的影响之大。

这四组数据的共同统计特性如下:

性质 数值
x平均数 9
x方差 11
y的平均数 7.50(精确到小数点后两位)
y的方差 4.122或4.127(精确到小数点后三位)
xy之间的相关系数 0.816(精确到小数点后三位)
线性回归线 y = 3.00 + 0.500 x {\displaystyle y=3.00+0.500x} [图片上传失败…(image-5d94e9-1534993415535)](分别精确到小数点后两位和三位)
image

在四幅图中,由第一组数据绘制的图表(左上图)是看起来最“正常”的,可以看出两个随机变量之间的相关性。从第二组数据的图表(右上图)则可以明显地看出两个随机变量间的关系是非线性的。第三组中(左下图),虽然存在着线性关系,但由于一个离群值的存在,改变了线性回归线,也使得相关系数从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      y0        I  10.0   8.041        I   8.0   6.952        I  13.0   7.583        I   9.0   8.814        I  11.0   8.335        I  14.0   9.966        I   6.0   7.247        I   4.0   4.268        I  12.0  10.849        I   7.0   4.8210       I   5.0   5.6811      II  10.0   9.1412      II   8.0   8.1413      II  13.0   8.7414      II   9.0   8.7715      II  11.0   9.2616      II  14.0   8.1017      II   6.0   6.1318      II   4.0   3.1019      II  12.0   9.1320      II   7.0   7.2621      II   5.0   4.7422     III  10.0   7.4623     III   8.0   6.7724     III  13.0  12.7425     III   9.0   7.1126     III  11.0   7.8127     III  14.0   8.8428     III   6.0   6.0829     III   4.0   5.3930     III  12.0   8.1531     III   7.0   6.4232     III   5.0   5.7333      IV   8.0   6.5834      IV   8.0   5.7635      IV   8.0   7.7136      IV   8.0   8.8437      IV   8.0   8.4738      IV   8.0   7.0439      IV   8.0   5.2540      IV  19.0  12.5041      IV   8.0   5.5642      IV   8.0   7.9143      IV   8.0   6.89

matplotlib

  • 折线图(默认)
import matplotlib.pyplot as pltdataset_1 = anscombe[anscombe['dataset'] == 'I']plt.plot(dataset_1['x'],dataset_1['y'])
图片.png
  • 原点图
plt.plot(dataset_1['x'], dataset_1['y'], 'o')
图片.png
  • 组合图
# create subsets of the anscombe datadataset_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)
图片.png

填充数据

# add a plot to each of the axes created aboveaxes1.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')
图片.png

添加标签

# add a plot to each of the axes created aboveaxes1.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')
图片.png

小结:

图片.png

参考资料

  • 讨论qq群144081101 591302926 567351477 钉钉免费群21745728

人已赞赏
0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
今日签到
有新消息 消息中心
有新私信 私信列表
搜索