• 数据可视化(三)- Seaborn简易入门


    本文内容来源:https://www.dataquest.io/mission/133/creating-compelling-visualizations

    本文数据来源:http://www.cdc.gov/nchs/nsfg.htm

    本文摘要:介绍一个以matplotlib为底层,更容易定制化作图的库Seaborn

     

    Seaborn其实是在matplotlib的基础上进行了更高级的API封装,从而使得作图更加容易,在大多数情况下使用seaborn就能做出很具有吸引力的图,而使用matplotlib就能制作具有更多特色的图。应该把Seaborn视为matplotlib的补充,而不是替代物。

     

    安装seaborn的方法

    pip install seaborn

    原始数据展现(这是一份家庭调查的数据,preglngth - 怀孕周长, birthord - 孕妇的第几个孩子, birthwgt_lb1 - 婴儿重量(单位:磅), birthwgt_oz1 - 婴儿重量(单位:盅司), agepreg - 孕妇在分娩时的年龄)

    import pandas as pd
    
    births = pd.read_csv('births.csv')

    Image 002

    直方图

    在上一篇文章中已经使用过pandas.DataFrame.hist()来制作直方图了,现在用seaborn.distplot()来制作直方图,观察之间的差异

    # 对上表的prglngth列做一个直方图
    
    import matplotlib.pyplot as plt
    
    import seaborn as sns #要注意的是一旦导入了seaborn,matplotlib的默认作图风格就会被覆盖成seaborn的格式
    
    %matplotlib inline  # 为了在jupyter notebook里作图,需要用到这个命令
    
    sns.distplot(births['prglngth'])
    
    sns.plt.show()

    Image 003

    可以看到与使用matplotlib作的直方图最大的区别在于有一条密度曲线(KDE),可以通过设置参数去掉这条默认的曲线

    sns.distplot(births['prglngth'], kde=False)
    
    sns.plt.show()

    Image 004

     

    那么Pandas与Seaborn之间有什么区别呢?

    其实两者都是使用了matplotlib来作图,但是有非常不同的设计差异

    1. 在只需要简单地作图时直接用Pandas,但要想做出更加吸引人,更丰富的图就可以使用Seaborn
    2. Pandas的作图函数并没有太多的参数来调整图形,所以你必须要深入了解matplotlib
    3. Seaborn的作图函数中提供了大量的参数来调整图形,所以并不需要太深入了解matplotlib
    4. Seaborn的API:https://stanford.edu/~mwaskom/software/seaborn/api.html#style-frontend

     

    # 对上图进行更多的配置
    
    sns.set_style('dark')                # 该图使用黑色为背景色
    
    sns.distplot(births['prglngth'], kde=False) # 不显示密度曲线
    
    sns.axlabel('Birth number', 'Frequency') # 设置X轴和Y轴的坐标含义
    
    sns.plt.show()

    Image 001

     

    箱型图

    # 以birthord作为x轴,agepreg作为y轴,做一个箱型图
    
    sns.boxplot(x='birthord', y='agepreg', data=births)
    
    sns.plt.show()

    Image 005

     

    多变量作图

    seaborn可以一次性两两组合多个变量做出多个对比图,有n个变量,就会做出一个n × n个格子的图,譬如有2个变量,就会产生4个格子,每个格子就是两个变量之间的对比图

    1. var1  vs  var1
    2. var1  vs  var2
    3. var2  vs  var1
    4. var2  vs  var2

    相同的两个变量之间(var1  vs  var1 和 var2  vs  var2)以直方图展示,不同的变量则以散点图展示(var1  vs  var2 和var2  vs  var1)

    要注意的是数据中不能有NaN(缺失的数据),否则会报错

    sns.pairplot(births, vars=['agepreg', 'prglngth','birthord'])
    
    sns.plt.show()

    wps409B.tmp

  • 相关阅读:
    hdu 5366 简单递推
    hdu 5365 判断正方形
    hdu 3635 并查集
    hdu 4497 数论
    hdu5419 Victor and Toys
    hdu5426 Rikka with Game
    poj2074 Line of Sight
    hdu5425 Rikka with Tree II
    hdu5424 Rikka with Graph II
    poj1009 Edge Detection
  • 原文地址:https://www.cnblogs.com/kylinlin/p/5236601.html
Copyright © 2020-2023  润新知