Seaborn----绘制统计图形
一、概述
Seaborn基于 Matplotlib核⼼库进⾏了更⾼级的API封装,可以轻松地画出更漂亮的
图形,⽽Seaborn的漂亮主要体现在配⾊更加舒服,以及图形元素的样式更加细
腻。
二、绘制单变量分布
使用Seaborn之前需要导包
再黑框中输入 pip install seaborn -i https://pypi.tuna.tsinghua.edu.cn/simple
import seaborn as sns
import numpy as np
import random
# 获取默认绘图
sns.set()
# 确定随机数生成器的种子,保证每次生成的随机数是一样的
np.random.seed(0)
# 生成随机数
data = np.random.randn(100)
# 绘制直方图,kde高斯核密度估计曲线、rug轴方向上绘制rugplot
sns.distplot(data,bins=10,hist=True,kde=True,rug=True)
三、绘制双变量分布
3.1绘制散点图
import numpy as np
import pandas as pd
import seaborn as sns
x = np.random.randn(500)
y = np.random.randn(500)
dataform_obj = pd.DataFrame({
'x':x,'y':y})
#绘制散点图
sns.jointplot(x='x',y='y',data=dataform_obj,marginal_kws=dict(kde=True))
3.2绘制二维直方图
二维直方图类似于"六边形"图,主要是因为它显示了落在六⻆形区域内的观察值的
计数,适⽤于较⼤的数据集。
import numpy as np
import pandas as pd
import seaborn as sns
x = np.random.randn(500)
y = np.random.randn(500)
dataform_obj = pd.DataFrame({
'x':x,'y':y})
#绘制二维直方图
sns.jointplot(x='x',y='y',data=dataform_obj,kind='hex')
从六边形颜色的深浅,可以观察到数据密集的程度
3.3绘制核密度估计图形
x = np.random.randn(500)
y = np.random.randn(500)
dataform_obj = pd.DataFrame({
'x':x,'y':y})
#绘制核密度估计图
sns.jointplot(x='x',y='y',data=dataform_obj,kind='kde')
3.4绘制成对的双变量分布
import seaborn as sns
# 加载 iris 数据集
dataset = pd.read_csv("iris_data.csv")
dataset.head()
#绘制多个的iris双变量分布图
sns.pairplot(dataset.iloc[:,:5])
3.5用分类数据绘图
- 类别散点图
data = pd.read_csv('IMDB-Movie-Data.csv')
data.head()
movie_data = data.iloc[100:500,]
#绘制类别散点图
sns.stripplot(x='Year',y='Rating',data=movie_data)
从上图中可以看出,⼀些数据点会互相重叠,不易于观察。可以在调⽤stripplot()函数时传⼊jitter参数, jitter:表示抖动的程度,当很多数据点重叠时,可以指定抖动的数量或者设为True使⽤默认值。
# 绘制类别散点图,所有的数据点都不会重叠
sns.swarmplot(x='Year',y='Rating',data=movie_data)
- 类别内的数据分布
箱形图是⼀种用作显示⼀组数据分散情况资料的统计图。
# 绘制箱型图
sns.boxplot(x='Year',y='Rating',data=movie_data)
⼩提琴图 用于显示数据分布及其概率密度
# 绘制提琴图
sns.violinplot(x='Year',y='Rating',data=movie_data)
- 类别内的统计估计
barplot函数会在整个数据集上使⽤均值进⾏估计
#绘制条形图
sns.barplot(x='Year',y='Rating',data=movie_data)
pointplot()函数会⽤⾼度低计值对数据进⾏描述,⽽不是显示完整的条形,它只会绘制点估计和置信区间。
#绘制点图
sns.pointplot(x='Year',y='Rating',data=movie_data)