zoukankan      html  css  js  c++  java
  • seaborn绘图

    导语:

    既然有了matplotlib,那为啥还需要seaborn呢?其实seaborn是在matplotlib基础上进行封装,Seaborn就是让困难的东西更加简单。用Matplotlib最大的困难是其默认的各种参数,而Seaborn则完全避免了这一问题。seaborn是针对统计绘图的,一般来说,seaborn能满足数据分析90%的绘图需求,复杂的自定义图形,还是要Matplotlib。

    导入数据

     1 import seaborn as sns
     2 import matplotlib.pyplot as plt
     3 %matplotlib inline
     4 plt.rcParams['font.sans-serif'] = ['SimHei']#显示中文
     5 plt.rcParams['axes.unicode_minus'] = False#显示负号
     6 import pandas as pd
     7 import numpy as np
     8 from pandas import Series,DataFrame
     9 test=pd.read_excel("/Users/yaozhilin/Downloads/exercise.xlsx",sep="t")
    10 test.head(5)#显示前五行

    为了描述简便下面matplotlib-M,pandas-P和seaborn-S

    ~条形图:sns.barplot()

    1. M:plt.bar(x,y)
    2. P:data.plot(kind="bar")
    3. S:sns.baplot(x=,y=,data=,hue=)
    1 ig,axes = plt.subplots(2,2,figsize=(8,8))
    2 sns.barplot(x="所属区域",y="数量",data=test,ax=axes[0,0])
    3 sns.barplot(x="所属区域",y="数量",data=test,ax=axes[0,1],ci=0)#ci=0去掉置信线
    4 sns.barplot(x="所属区域",y="数量",data=test,ax=axes[1,0],hue="产品类别",ci=0)#用hue进行分组,非常实用

    注:M与S语法一致但S传参数hue就可以分组,非常简便,而P默认index=x、values=y.

    ~直方图:distplot

    1. M:plt.hist(data,bins=)
    2. P:data.plot(kind="hist",bins=)
    3. S:sns.distplot(data,bins=,hist=,kde=,rug=)

    Seaborn有一个强大的方法:distplot,它支持一些参数:

    • bins:直方图的分块
    • hist:True表示绘制直方图,默认为True
    • kde:True表示绘制密度图,默认为True
    • rug:显示分布情况,默认为False不显示
    1 test.dropna(how='any',inplace=True)#去除缺失值
    2 fig,axes = plt.subplots(2,2,figsize=(9,9))
    3 sns.distplot(test["数量"],ax=axes[0,0],color="green")
    4 sns.distplot(test["数量"],ax=axes[0,1],color="black",kde=False)#只画直方图
    5 sns.distplot(test["数量"],ax=axes[1,0],color="blue",hist=False)#只kde图
    6 sns.distplot(test["数量"],ax=axes[1,1],color="green",rug=True)#加抖动rug

    ~箱型图sns.boxplot(x,y,data)

    1. M:plt.boxplot(data)
    2. P:data.plot(kind="box",)
    3. S:sns.boxplot(x=,y=,data,hue=)

     M对一列数作箱型图,P中data若是多列则每列都是一个箱型图,S则是将x分为y组出多个箱型图也能加参数hue再次分组。

    单个箱型图

    1 sns.boxplot(y='数量',data=test,color="green")#传一个变量,即不分类,若传只传x为水平图

    多个箱型图:传入x,x有几类就有几个图

    1 sns.boxplot(x='所属区域',y='数量',data=test)#按“所属区域”画“数量”的箱型图

    1 sns.boxplot(x='所属区域',y='数量',data=test,hue="产品类别")#hue还可以再次分类

    ~散点图

    1. M:plt.scatter(x,y)
    2. P:data.plot(kind="scatter",x=,y=)
    3. S:sns.scatterplot(x=,y=,data,hue=)

    只有S中X可以为分类变量,做出类似箱型图的点图,而且可以传残hue进行分类。

    1 sns.scatterplot(x="所属区域",y="数量",data=test)

    1 sns.scatterplot(x="所属区域",y="数量",data=test,hue="产品类别")#hue分类

    sns.swarmplot()和sns.stripplot()更为美观

    1 sns.swarmplot(x="所属区域",y="数量",data=test,hue="产品类别")#hue分类 

    1 sns.stripplot(x="所属区域",y="数量",data=test,hue="产品类别",split=True)#split将点打散

    变量关系图

    sns.jointplot(x=,y=,data=,kind=)

    kind的类型"scatter" 、"reg" 、"resid" 、"kde" 、 "hex"

    下面我们看看test中成本和金额的关系图
    1 sns.jointplot(x="成本",y="金额",data=test)

    默认kind=scatter,看看kind=kde

    1 sns.jointplot(x="成本",y="金额",data=test,kind="kde")#kind="kde"密度曲线图

    kind=reg为回归图,看看成本和售价回归图是否可以很好的拟合

    1 sns.jointplot(x="成本",y="金额",data=test,kind="reg")#kind="reg"回归图

    ~sns.pairplot(data)

    所有变量俩俩画图

    1 sns.pairplot(test)

    diag_kind调整图形样式

    1 sns.pairplot(test,diag_kind="kde")

    vas=[]控制要画图的数据

    1 sns.pairplot(test,diag_kind="kde",vars=["数量","金额"])

    hue进行分组

    sns.pairplot(test,diag_kind="kde",vars=["数量","金额"],hue="所属区域")#hue进行分类 

    ~sns.lmplot()

    参数:x=,y=,data=,order:次数,robust:鲁棒性,ci:置信度,hue:分组,col:分组并且图像拆分

    探究test中金额与数量的回归图:

    1 sns.lmplot(x="金额",y="数量",data=test)#默认线型回归

    robust:忽略异常点

    1 sns.lmplot(x="金额",y="数量",data=test,robust=True)#robust=True忽略异常点,让图形具有鲁棒性

    hue分组

    col相当于分开画图的hue

    1 sns.lmplot(x="金额",y="数量",data=test,col="产品类别")#col也是分组,但能分别画图

  • 相关阅读:
    Python入门系列——第20篇
    Python入门系列——第19篇
    windows下python使用pip命令安装builtwith库时,遇到的utf-8问题的解决
    Python入门系列——第18篇
    在相同的主机上创建一个duplicate数据库
    duplicate database的时候,rman连接 auxiliary database的后状态不正确
    使用duplicate target database ... from active database复制数据库
    RHEL7
    Oracle 监听器日志文件过大导致监听异常
    TNS-01251: Cannot set trace/log directory under ADR
  • 原文地址:https://www.cnblogs.com/ye20190812/p/13497905.html
Copyright © 2011-2022 走看看