Seaborn-5 多变量分析绘图

导入需要的模块和数据集。

 1 %matplotlib inline
 2 import numpy as np
 3 import pandas as pd
 4 import matplotlib as mpl
 5 import matplotlib.pyplot as plt
 6 import seaborn as sns
 7 sns.set(style="whitegrid", color_codes=True)
 8 np.random.seed(sum(map(ord, "categorical")))
9 titanic = sns.load_dataset("titanic")
10 tips = sns.load_dataset("tips") 11 iris = sns.load_dataset("iris")

 分类数据散点图

在分类数据的基础上展示定量数据的最简单函数就是 stripplot()。

1 sns.stripplot(x="day", y="total_bill", data=tips);

 加入jitter参数,调整横坐标位置。

1 sns.stripplot(x="day", y="total_bill", data=tips, jitter=True);

swarmplot() 函数:所有的点都不会重叠,这样可以很清晰的观察到数据的分布。

1 sns.swarmplot(x="day", y="total_bill", data=tips);

 

通过 hue 参数加入另一个嵌套的分类变量,而且嵌套的分类变量可以以不同的颜色区别。

1 sns.swarmplot(x="day", y="total_bill", hue="sex", data=tips);

有时候将分类变量放在垂直轴上是非常有用的(当类别名称相对较长或有很多类别时,这一点特别有用)。 可以使用 orient 关键字强制定向,但通常可以互换x和y的变量的数据类型来完成。

1 sns.swarmplot(x="total_bill", y="day", hue="time", data=tips);

分类数据分布图

箱型图

通过箱型图可以很直观的观察到数据的四分位分布(1/4分位,中位数,3/4分位,以及四分位距)。

N = 1.5IQR如果一个值>Q3+N或 < Q1-N,则为离群点。

1 sns.boxplot(x="day", y="total_bill", hue="time", data=tips);

提琴图

它结合了箱体图和分布教程中描述的核心密度估计过程。

1 sns.violinplot(x="total_bill", y="day", hue="time", data=tips);

当 hue 的嵌套类型只有两类的时候,也可以使用split 参数将小提琴分割。

1 sns.violinplot(x="day", y="total_bill", hue="sex", data=tips, split=True);

1 sns.violinplot(x="day", y="total_bill", data=tips, inner=None);
2 sns.swarmplot(x="day", y="total_bill", data=tips, color="w", alpha=.5);

分类数据统计估计图

条形图

在Seaborn中barplot()函数会在整个数据集上显示估计,默认情况下使用均值进行估计。 当在每个类别中有多个类别时(使用了 hue),它可以使用引导来计算估计的置信区间,并使用误差条来表示置信区间。显示值的集中趋势可以用条形图。

1 sns.barplot(x="sex", y="survived", hue="class", data=titanic);

条形图的特殊情况是当您想要显示每个类别的数量,而不是计算统计量。

1 sns.countplot(x="deck", data=titanic, palette="Greens_d");

如果将要计数的变量移动到y轴上,那么条形就会横过来显示。

1 sns.countplot(y="deck", hue="class", data=titanic, palette="Greens_d");

 

点图

pointplot()函数提供了估计可视化的另一种风格。该函数会用高度估计值对数据进行描述,而不是显示一个完整的条形,它只绘制点估计和置信区间。另外,点图连接相同hue类别的点,比如male中的蓝色会连接female中的蓝色。这使得很容易看出主要关系如何随着第二个变量的变化而变化。点图可以更好的描述变化差异。

1 sns.pointplot(x="sex", y="survived", hue="class", data=titanic);

 

为了使能够更好的显示,可以使用不同的标记和线条样式来展示不同hue类别的层次。

1 sns.pointplot(x="class", y="survived", hue="sex", data=titanic,
2               palette={"male": "g", "female": "m"},
3               markers=["^", "o"], linestyles=["-", "--"]);

宽型数据

1 sns.boxplot(data=iris, orient="h");

 

多层面板分类图

1 sns.factorplot(x="day", y="total_bill", hue="smoker", data=tips, kind="bar");

 

使用factorplot()的主要优点是可以很容易使用"facet"绘制多面图,展示更多其他分类变量。

1 sns.factorplot(x="day", y="total_bill", hue="smoker", col="time", data=tips, kind="swarm");

 任何一种图形都可以画出来。由于FacetGrid的工作原理,要更改图形的大小和形状,需要指定适用于每个图的size和aspect参数。

1 sns.factorplot(x="time", y="total_bill", hue="smoker", col="day", data=tips, kind="box", size=4, aspect=.5);

 

factorplot里面可能传进来的参数。

参数对应的中文解释

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

posted on 2018-07-30 20:52  炸鸡配啤酒  阅读(206)  评论(0)    收藏  举报