python中seaborn安装⽅法-Seaborn安装⼊门及常⽤⽅法Seaborn是基于matplotlib产⽣的⼀个模块,专攻于统计可视化,可以和pandas进⾏⽆缝链接,使初学者更容易上⼿。相对于matplotlib,Seaborn语法更简洁,两者关系类似于numpy和pandas之间的关系。
2.1安装:
1)linux系统
sudo pip install seaborn
2)window系统
pip install seaborn
2.2快速⼊门
import  as sns
sns.set()
from matplotlib import pyplot
# 加载数据集
tips = sns.load_dataset("tips")
# 绘图
sns.boxplot(x="day", y="total_bill", hue="sex", data=tips, palette="PRGn")
sns.despine(offset=10, trim=True)
#图⽚展⽰与保存
pyplot.savefig("GroupedBoxplots.png")
pyplot.show()
2.3seaborn常⽤⽅法
1、单变量分析绘图
1)分布的集中趋势,反映数据向其中⼼值靠拢或聚集的程度
x = al(size=100)
sns.distplot(x, kde=True)# kde=False关闭核密度分布, rug表⽰在x轴上每个观测上⽣成的⼩细条(边际⽑毯)
2、观测两个变量之间的分布关系最好⽤散点图
1)直接拟合概率密度函数
sns.jointplot(x="x", y="y", data=df, kind="kde")
2)能够更加直观反映点的分布情况
hex图 (数据量⼤的时候)¶
linspace函数python最好⿊⽩相间
数据量⼤时候,⽤hex图,分辨出哪块更多(颜⾊深浅)
mean, cov = [0, 1], [(1, .5), (.5, 1)]
data = np.random.multivariate_normal(mean, cov, 200)
df = pd.DataFrame(data, columns=["x", "y"])
x, y = np.random.multivariate_normal(mean, cov, 1000).T
with sns.axes_style("ticks"):
sns.jointplot(x=x, y=y, kind="hex")
3、多变量两两显⽰
# 鹃尾花数据iris = sns.load_dataset("iris")
sns.pairplot(iris)
4、Seaborn可视化各种绘图操作
1、盒图 box graph
import matplotlib.pyplot as plt
import numpy as np
盒图关⼼中位数Q2、四分之⼀位Q1、四分之三位Q3和离点¶
IQR = Q3 - Q1
如果Q1-1.5IQR或者Q3+1.5IQR就是离点
tang_data = [al(0, std, 100) for std in range(1,4)]
fig = plt.figure(figsize=(8,6))
plt.boxplot(tang_data, vert=True, notch=True)
plt.xlabel("x")
plt.title("box plot")
import seaborn as sns
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
2、单特征绘制直⽅图
1)distplot
x = al(size=100)
sns.distplot(x, kde=False, bins=20)
2)countplot 计数图
countplot 故名思意,计数图,可将它认为⼀种应⽤到分类变量的直⽅图,也可认为它是⽤以⽐较类别间计数差,调⽤ count 函数的barplot。
x, y, hue: names of variables in data or vector data, optional
data: DataFrame, array, or list of arrays, optional
order, hue_order: lists of strings, optional #设置顺序
orient: “v” | “h”, optional #设置⽔平或者垂直显⽰
ax: matplotlib Axes, optional #设置⼦图位置,将在下节介绍绘图基础
3、分析两个特征之间的关系,利⽤散点图来表达
mean, cov = [0,1], [(1, .5), (.5,1)]
data = np.random.multivariate_normal(mean, cov, 200)
df = pd.DataFrame(data, columns=["X1", "X2"])
sns.jointplot(x="X1", y="X2", data=df)
# kind = "hex"  # 六边形
data = np.random.multivariate_normal(mean, cov, 2000).T
with sns.axes_style("white"):
sns.jointplot(x=data[0], y=data[1], kind="hex", color="k")
4、看两两之间变量的关系
iris = sns.load_dataset("iris")
sns.pairplot(iris)
5、条形图
sns.barplot(x="sex", y="survived", data=titanic, hue="class")
点图,不看集中趋势,就看各⾃的变化
sns.pointplot(x="sex", y="survived", data=titanic, hue="class")
sns.pointplot(x="class", y="survived", data=titanic, hue="sex", palette={"male":"g","female":"m"}, markers=["^", "o"], linestyles= ["-","--"])
tips = sns.load_dataset("tips", data_home=".")
# jitter 震动
sns.stripplot(x="day", y="total_bill", data=tips, jitter=True)
sns.swarmplot(x="day", y="total_bill", data=tips)
sns.swarmplot(x="day", y="total_bill", data=tips, hue="sex")
sns.swarmplot(x="day", y="total_bill", data=tips, hue="time")
6、盒图
sns.boxplot(x="day", y="total_bill", data=tips, hue="time")
7、⼩提琴图
sns.violinplot(x="day", y="total_bill", data=tips, hue="sex", split=True)
sns.violinplot(x="day", y="total_bill", data=tips, inner=None, split=True)
sns.swarmplot(x="day", y="total_bill", data=tips, color="k", alpha=1.0)
8、热⼒图通过颜⾊⼀⽬了然的指定值的⼤⼩,以及变化的趋势
uniform_data = np.random.rand(3,3)
sns.heatmap(uniform_data)
sns.heatmap(uniform_data, vmin=0.2, vmax=0.5)
normal_data = np.random.randn(3,3)
sns.heatmap(normal_data, center=0)
flights = sns.load_dataset("flights")
data = flights.pivot("month", "year", "passengers")
sns.heatmap(data)
sns.heatmap(data, annot=True, fmt="d", linewidths=.5, cbar=False, cmap="YlGnBu")
9、设置画图的整体风格
def sin_plot(flip=1):
x = np.linspace(0, 14, 100)
for i in range(1,7):
plt.plot(x, np.sin(x+i*.5)*(7-i)*flip)
sin_plot()
10、有五种主题风格,darkgrid whitegrid dark white ticks
sns.set_style("darkgrid")
data = al(size=(20,6)) + np.arange(6) / 2
sns.boxplot(data=data)
11、每⼀个⼦图的风格都可以不⼀样,with⾥⾯⼀个风格,外⾯⼀个风格
with sns.axes_style("whitegrid"):
plt.subplot(211)
sin_plot()
plt.subplot(212)
sin_plot(-1)
12、布局的风格
sns.set_context("paper")
plt.figure(figsize=(8,6))
sin_plot()
sns.set_context("talk")
plt.figure(figsize=(8,6))
sin_plot()
sns.set_context("poster")
plt.figure(figsize=(8,6))
sin_plot()
sns.set_context("notebook", font_scale=3.5, rc={"lines.linewidth": 4.5}) plt.figure(figsize=(8,6))
sin_plot()