zoukankan      html  css  js  c++  java
  • 数据可视化(三)- 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

  • 相关阅读:
    13,发布CRM
    12,nginx+uWSGI+django+virtualenv+supervisor发布web服务器
    11.2,nginx负载均衡实验
    11.1,nginx集群概念
    11,nginx入门与实战
    10,python开发之virtualenv与virtualenvwrapper
    9.5web service基础知识
    9.4python开发之virtualenv与virtualenvwrapper
    9.3centos7安装python3 以及tab补全功能
    Google 浏览器被劫持怎么办?
  • 原文地址:https://www.cnblogs.com/kylinlin/p/5236601.html
Copyright © 2011-2022 走看看