美文网首页Python库
功能强大的python包(三):Seaborn

功能强大的python包(三):Seaborn

作者: 可爱多多少 | 来源:发表于2021-07-17 17:12 被阅读0次

    1. Seaborn简介

    Seaborn是一个基于matplotlib且数据结构与Pandas统一的统计图制作库。

    Seaborn库旨在以数据可视化为中心来挖掘并理解数据。

    Seaborn提供的面向数据集制图函数主要是对行列索引和数组的操作,包含对整个数据集进行内部的语义映射与统计整合。

    可以毫不夸张的说,你想象力能及的图表,Seaborn都能绘制!

    2. 样例数据

    本文所有的可视乎图表都是基于Seaborn自带的餐厅顾客消费数据集tips而绘制的。
    tips数据集前两条数据如下:

    No total_bill tip sex smoker day time size
    0 16.99 1.01 Female No Sun Dinner 2
    1 10.34 1.66 Male No Sun Dinner 2

    (total_bill:消费总金额,tip:小费金额,sex:性别,smoker:是否吸烟,day:消费日期,time:消费时段,size:聚餐人数)

    3. Seaborn总览

    image
    • 关系图

    关系图一般是用来表达双变量关系的图表。

    函数 作用
    relplot(kind='line')/lineplot( ) 绘制线形图,参数:data,x,y,hue
    relplot(kind='scatter')/scatterplot( ) 绘制散点图,参数:data,x,y,hue
    参数 含义
    data pandas.DataFrame对象
    x 绘图的x轴变量
    y 绘图的y轴变量
    hue 区分维度,一般为分类型变量
    import numpy as np
    import pandas as pd
    import matplotlib.pyplot as plt
    import seaborn as sns
    
    sns.set(style='darkgrid')
    
    tips = sns.load_dataset('tips')
    sns.relplot(x='total_bill',y='tip',data=tips)
    sns.relplot(x="total_bill", y="tip", hue="smoker", data=tips);
    
    fmri = sns.load_dataset("fmri")
    sns.relplot(x="timepoint", y="signal", kind="line", data=fmri);
    
    image
    image
    • 分类图

    对可分类的数据进行可视化;可以通过散点图、分布图、估计图等形式呈现分类图。

    函数 作用
    catplot(kind='strop')/stripplot( ) 分类散点图
    catplot(kind='swarm')/swarmplot( ) 分类散点图
    catplot(kind='box')/boxplot( ) 分类分布图
    catplot(kind='violin')/violinplot( ) 分类分布图
    catplot(kind='boxen')/boxenplot( ) 分类分布图
    catplot(kind='point')/pointplot( ) 分类估计图
    catplot(kind='bar')/barplot( ) 分类估计图
    catplot(kind='count')/countplot( ) 分类估计图
    import seaborn as sns
    import matplotlib.pyplot as plt
    sns.set(style='ticks',color_codes=True)
    
    tips = sns.load_dataset('tips')
    sns.catplot(x='day',y='total_bill',data=tips)
    sns.catplot(x='day',y='total_bill',kind='swarm',data=tips)
    sns.catplot(x='day',y='total_bill',kind='box',data=tips)
    
    diamonds = sns.load_dataset('diamonds')
    sns.catplot(x='color',y='price',kind='boxen',data=diamonds.sort_values('color'))
    sns.catplot(x="total_bill", y="day", hue="time",kind="violin", data=tips)
    
    titanic = sns.load_dataset("titanic")
    sns.catplot(x="sex", y="survived", hue="class", kind="point", data=titanic)
    sns.catplot(x="sex", y="survived", hue="class", kind="bar", data=titanic)
    sns.catplot(x="deck", kind="count", palette="ch:.25", data=titanic)
    
    image
    image
    image
    image
    image
    image
    image
    • 回归图

    对数据进行回归,并绘制回归出函数。

    函数 作用
    lmplot( ) 绘制回归图
    regplot( ) 绘制回归图
    residplot( ) 绘制回归图
    import numpy as np
    import seaborn as sns
    import matplotlib.pyplot as plt
    
    sns.set(color_codes=True)
    tips = sns.load_dataset("tips")
    sns.lmplot(x="total_bill", y="tip", data=tips)
    sns.residplot(x="x", y="y", data=anscombe.query("dataset == 'II'"),scatter_kws={"s": 80})
    
    f, ax = plt.subplots(figsize=(5, 6))
    sns.regplot(x="total_bill", y="tip", data=tips, ax=ax)
    
    image
    image
    image
    • 分布图
      用于检查单变量或双变量分布的图表。
    函数 作用
    distplot( ) 单变量分布
    kdeplot( ) 核密度估计
    pairplot( ) 成对二元分布
    joinplot( )/joinplot(kind='hex')/joinplot(kind='reg') 二元分布
    import seaborn as sns
    import matplotlib.pyplot as plt
    from scipy import stats
    
    sns.set(color_codes=True)
    x = np.random.normal(size=100)
    sns.distplot(x)
    sns.kdeplot(x, shade=True)
    
    mean, cov = [0, 1], [(1, .5), (.5, 1)]
    data = np.random.multivariate_normal(mean, cov, 200)
    df = pd.DataFrame(data, columns=["x", "y"])
    sns.jointplot(x="x", y="y", data=df)
    
    iris = sns.load_dataset("iris")
    sns.pairplot(iris)
    
    image
    image

    [图片上传失败...(image-9e1fd3-1626513027417)]
    [图片上传失败...(image-aaa2cd-1626513027417)]

    • 矩阵图
      以矩阵的形式呈现可视化的数据集。
    函数 作用
    heatmap( ) 热力图
    clustermap( ) 聚类矩阵图
    import matplotlib.pyplot as plt
    import seaborn as sns
    import pandas as pd
    
    sns.set_theme()
    
    # Load the example flights dataset and convert to long-form
    flights_long = sns.load_dataset("flights")
    flights = flights_long.pivot("month", "year", "passengers")
    
    # Draw a heatmap with the numeric values in each cell
    f, ax = plt.subplots(figsize=(9, 6))
    sns.heatmap(flights, annot=True, fmt="d", linewidths=.5, ax=ax)
    
    
    sns.set_theme()
    
    # Load the brain networks example dataset
    df = sns.load_dataset("brain_networks", header=[0, 1, 2], index_col=0)
    
    # Select a subset of the networks
    used_networks = [1, 5, 6, 7, 8, 12, 13, 17]
    used_columns = (df.columns.get_level_values("network")
                              .astype(int)
                              .isin(used_networks))
    df = df.loc[:, used_columns]
    
    # Create a categorical palette to identify the networks
    network_pal = sns.husl_palette(8, s=.45)
    network_lut = dict(zip(map(str, used_networks), network_pal))
    
    # Convert the palette to vectors that will be drawn on the side of the matrix
    networks = df.columns.get_level_values("network")
    network_colors = pd.Series(networks, index=df.columns).map(network_lut)
    
    # Draw the full plot
    g = sns.clustermap(df.corr(), center=0, cmap="vlag",
                       row_colors=network_colors, col_colors=network_colors,
                       dendrogram_ratio=(.1, .2),
                       cbar_pos=(.02, .32, .03, .2),
                       linewidths=.75, figsize=(12, 13))
    
    g.ax_row_dendrogram.remove()
    
    image
    image
    • 结构化多绘图

    以子图的形式绘制成对变量之间的关系。

    函数 作用
    FacetGrid 结构化多绘图
    PairGrid 结构化多绘图

    Ending

    相关文章

      网友评论

        本文标题:功能强大的python包(三):Seaborn

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