seaborn学习笔记二

使用单变量分析画图

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

import seaborn as sns 
sns.set(color_codes=True)
np.random.seed(sum(map(ord, "distributions")))
直方图绘制
x=np.random.normal(size=100)
sns.distplot(x, kde=False)
sns.distplot(x, bins=20,kde=False)#其中bins代表着将每个直方图切分成20个小块

若想要绘制出直方图的轮廓,使用fit

x=np.random.gamma(6,size=200)
sns.distplot(x, kde=False,fit=stats.gamma)

以下的数据都是由以下代码生成的

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)
  • 如果数据量比较大的话,可以用kind= hex出现的效果更好
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")
  • pairplot两两之间的关系,对角线是单个变量的情况,非对角线是两两之间的关系
iris = sns.load_dataset("iris")
sns.pairplot(iris)
回归分析

使用内置数据集tips分析

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

np.random.seed(sum(map(ord, "regression")))
tips = sns.load_dataset("tips")

tips.head()
  • regplot()和lmplot()都可以绘制回归关系,推荐regplot()
sns.regplot(x="total_bill", y="tip", data=tips)

sns.lmplot(x="total_bill", y="tip", data=tips)
多变量的分析
np.random.seed(sum(map(ord, "categorical")))
titanic = sns.load_dataset("titanic")
tips = sns.load_dataset("tips")
iris = sns.load_dataset("iris")

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

重叠是很正常的情况,但是重叠过后影响观测和分析值,在这里可以加上jitter,左右移动值,让重叠部分变少

sns.stripplot(x="day", y="total_bill", data=tips, jitter=True)
sns.swarmplot(x="day", y="total_bill", hue="sex", data=tips)#l类似于圣诞树的图
盒图
  • IQR即是统计学概念四分位距,第1/4分位和第3/4分位之间的距离
  • N=1.5IQR如果一个值>Q3+N 或者
sns.boxplot(x="day", y="total_bill",hue="time", data=tips)
  • 小提琴图和圣诞树图两者合并在同一张图上,alpha表示的是透明度
sns.violinplot(x="day", y="total_bill", data=tips, inner =None)
sns.swarmplot(x="day", y="total_bill",data=tips, color ="w",alpha=.5)
分类属性画图
  • 显示值的集中趋势可以用条形图
sns.barplot(x="sex", y="survived", hue="class", data=titanic)
  • 点图可以更好的描述变化差异
sns.pointplot(x="sex", y="survived", hue="class", data=titanic)
FacetGrid
  • 先画好框架,FacetGrid,再用map函数映射,它的数据格式基本都是pandas的格式,其他数据格式可能会出错
  • 多维数据需要将数据分为子集依次画图,这种绘图称为lattice(或者trellis)绘图。Seaborn基于matplotlib提供绘制多维数据的函数。Seaborn的接口要求使用Pandas的DataFrame作为数据参数,并且必须是结构化的数据(tidy data),每一行为一个观测,每一列为一个变量。

  • FacetGrid类能够方便的绘制这类图像。FacetGrid对象有三个维度:row,col和hue。

tips = sns.load_dataset("tips")
tips.head()
g = sns.FacetGrid(tips,col="time")
g.map(plt.hist, "tip")#不知道为什么执行不出来

g = sns.FacetGrid(tips,col="sex",hue="smoker")
g.map(plt.scatter, "total_bill","tip",alpha=.7)#scatters是散点图
g.add_legend()
热力图
uniform_data = np.random.rand(3,3)
print(uniform_data)
heatmap = sns.heatmap(uniform_data)
ax=sns.heatmap(uniform_data,center= 0)

你可能感兴趣的:(seaborn学习笔记二)