seaborn数据处理:数据可视化-Seaborn
seaborn数据处理:数据可视化-Seaborn(total_bill:消费总金额,tip:小费金额,sex:性别,smoker:是否吸烟,day:消费日期,time:消费时段,size:聚餐人数)tips数据集前两条数据如下:可以毫不夸张的说,你想象力能及的图表,Seaborn都能绘制!2. 样例数据本文所有的可视乎图表都是基于Seaborn自带的餐厅顾客消费数据集tips而绘制的。
1. Seaborn简介

Seaborn是一个基于matplotlib且数据结构与Pandas统一的统计图制作库。
Seaborn库旨在以数据可视化为中心来挖掘并理解数据。
Seaborn提供的面向数据集制图函数主要是对行列索引和数组的操作,包含对整个数据集进行内部的语义映射与统计整合。
可以毫不夸张的说,你想象力能及的图表,Seaborn都能绘制!
2. 样例数据
本文所有的可视乎图表都是基于Seaborn自带的餐厅顾客消费数据集tips而绘制的。
tips数据集前两条数据如下:

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

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

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);
    


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

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)
    







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

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)
    



- 分布图
用于检查单变量或双变量分布的图表。 

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)
    




- 矩阵图
以矩阵的形式呈现可视化的数据集。 

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()
    


- 结构化多绘图
 
以子图的形式绘制成对变量之间的关系。

你的点赞和关注是我持续创作的最大动力!




