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

作者: python测试开发 | 来源:发表于2018-08-23 11:03 被阅读5次

    简介

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

    本章主要内容:

    • 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      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'])
    
    图片.png
    • 原点图
    plt.plot(dataset_1['x'], dataset_1['y'], 'o')
    
    图片.png
    • 组合图
    # 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)
    
    图片.png

    填充数据

    # 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')
    
    
    图片.png

    添加标签

    # 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')
    
    
    图片.png

    小结:

    图片.png

    参考资料

    相关文章

      网友评论

        本文标题:数据分析工具pandas快速入门教程3绘图1matplotlib

        本文链接:https://www.haomeiwen.com/subject/vousiftx.html