美文网首页
seaborn快速入门(3)——变量分析常用图

seaborn快速入门(3)——变量分析常用图

作者: 大锅烩菜 | 来源:发表于2018-09-09 11:00 被阅读0次

首先,准备环境:

%matplotlib inline
import numpy as np
import pandas as pd
from scipy import stats,integrate
import matplotlib.pyplot as plt

import seaborn as sns
sns.set(color_codes=True)

1. 直方图

常用直方图来观察某一特征(变量)的数据分布情况:

# 从高斯分布随中,机产生100个样本数据
x = np.random.normal(size=100)
# 绘制直方图.kde即kernel density estimate,用于控制是否绘制核密度估计
sns.distplot(x,kde=True)

2. 散点图

观察两个变量之间的关系

mean,cov =[0,3],[(1,.5),(.5,1)]
# mean是多维分布的均值;cov是协方差矩阵。注意:协方差矩阵必须是对称的且需为半正定矩阵;
data = np.random.multivariate_normal(mean,cov,200)
df = pd.DataFrame(data,columns=["x","y"])
# 创建密度图
sns.jointplot(x="x",y="y",data=df)

当样本特别多的时候,可以用散点密度图:

x,y =  np.random.multivariate_normal(mean,cov,1000).T
with sns.axes_style("white"):
    sns.jointplot(x=x,y=y,kind="hex",color="k")

3. 多变量特征对比图

pairplot可以展示特征的二元关系,将两个变量之间关系以散点图形式展示出来

iris = sns.load_dataset("iris")
sns.pairplot(iris)

4. stripplot

%matplotlib inline
import numpy as np
import pandas as pd
import matplotlib as mpl
import matplotlib.pyplot as plt

import seaborn as sns
sns.set(color_codes=True)

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

当样本比较多时,图形变为直线,看不出分布频率,可以添加抖动

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

5. swarmplot

swarmplot在展示数据时,会将值重叠的数据向两边展开。

%matplotlib inline
import numpy as np
import pandas as pd
import matplotlib as mpl
import matplotlib.pyplot as plt

import seaborn as sns
sns.set(color_codes=True)

tips = sns.load_dataset("tips")
# hue表示按照性别区分样本颜色
sns.swarmplot(x="day",y="total_bill",data=tips,hue="sex")

5. 盒图

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

6. 手风琴图

# split将会按hue中定义的变量值区分颜色
sns.violinplot(x="day",y="total_bill",data=tips,hue="sex",split=True)

7. 条形图

显示值的集中趋势,可以用条形图:

%matplotlib inline
import numpy as np
import pandas as pd
import matplotlib as mpl
import matplotlib.pyplot as plt

import seaborn as sns
sns.set(color_codes=True)

titanic = sns.load_dataset("titanic")
# hue表示按照性别区分样本颜色
sns.barplot(x="sex",y="survived",data=titannic,hue="class")

8. 点图

点图可以更好的描述变化差异

sns.pointplot(x="sex",y="survived",data=titannic,hue="class")

参数控制:

sns.pointplot(x="class",y="survived",data=titannic,hue="sex",palete={"male":"g","female":"m"},markers=["^","o"],linestyles=["-","--"])

9. factorplot

factorplot封装了各种图形,根据kind参数不同可以实现不同图形。例如:

sns.factorplot(x="sex",y="survived",data=titannic,hue="class",kind="bar")
sns.factorplot(x="day",y="total_bill",data=tips,hue="smoker",kind="swarm")

10. facetgrid

facetgrid可以为不同的参数值分布绘制不同的图形

# 为time列的每一个值分类绘制图形
g = sns.FacetGrid(tips,col="time",hue="smoker")
g.map(plt.scatter,"total_bill","tip",alpha=.5)
g.add_legend()
g = sns.FacetGrid(tips,col="day",size=4,aspect=.5)
g.map(plt.bar,"sex","total_bill")

11. 热度图

# 乘机统计
flights = sns.load_dataset("flights")
flights  = flights.pivot("month","year","passengers")
ax = sns.heatmap(flights)

相关文章

网友评论

      本文标题:seaborn快速入门(3)——变量分析常用图

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