Seaborn
python 中的制图工具库,可以制作出吸引人的,信息量大的统计图
在Matplotlib上构建,支持numpy和pandas的数据结构可视化,甚至是scipy和statsmodels的统计模型可视化
主要用于比较数据集中各变量的分布情况
数据集分布可视化------>单变量分布sns.displot()
sns.displot() 参数(rug:密度小柱状体;kde密度曲线)
import numpy as np
import pandas as pd
from scipy import stats
import matplotlib.pyplot as plt
import seaborn as sns
x1 = np.random.normal(size=100)
sns.distplot(x1, bins=20, kde=True, rug=True,
rug_kws = {'color':'y'},
#设置数据频率分布颜色
kde_kws = {'color':'k', 'lw':1, 'label':'KDE', 'linestyle':'--'},
#设置密度曲线颜色、线宽、标注、 线形
hist_kws = {'histtype':'stepfilled', 'linewidth':1, 'alpha':1, 'color':'g'})
# 设置箱子的风格、线宽、透明度、颜色
# 风格包括:'bar'、'barstacked'、'step'、'stepfilled')
x2 = np.random.randint(0, 100, 500)
sns.distplot(x2, hist=False, rug=True)
sns.kdeplot(x2, shade=True)
sns.rugplot(x2)
拟合参数分布
sns.distplot(x2, kde=True, fit=stats.gamma)
双变量分布
# 双变量分布
df_obj1 = pd.DataFrame({"x": np.random.randn(500),
"y": np.random.randn(500)})
df_obj2 = pd.DataFrame({"x": np.random.randn(500),
"y": np.random.randint(0, 100, 500)})
散点分布图
sns.jointplot(x="x", y="y", data=df_obj1)
sns.jointplot(x="x", y="y", data=df_obj1, kind="hex");
核密度估计
sns.jointplot(x="x", y="y", data=df_obj1, kind="kde");
数据集中变量间关系可视化
dataset = sns.load_dataset("tips")
#dataset = sns.load_dataset("iris")
sns.pairplot(dataset)
类别数据可视化(sns.stripplot sns.swarmplot )
1.类别内散布图
exercise = sns.load_dataset('exercise')
sns.stripplot(x="diet", y="pulse", data=exercise)
sns.swarmplot(x="diet", y="pulse", data=exercise, hue='kind')
2.类别内数据分布
盒子图(sns.boxplot)
sns.boxplot(x="diet", y="pulse", data=exercise)
sns.boxplot(x="diet", y="pulse", data=exercise, hue='kind')
小提琴图
#sns.violinplot(x="diet", y="pulse", data=exercise)
sns.violinplot(x="diet", y="pulse", data=exercise, hue='kind')
3.类别内统计图
柱状图
sns.barplot(x="diet", y="pulse", data=exercise, hue='kind')
点图
sns.pointplot(x="diet", y="pulse", data=exercise, hue='kind')