第五章. 可视化数据分析图
5.7 Seaborn图表
Seaborn是一个基于Matplotlib的高级可视化效果库,偏向于统计图表,主要针对的是数据挖掘和机器学习中的变量特征选取,相比Matplotlib,他的语法相对简单,但是具有一定的局限性,本节主要介绍线性回归模型,箱型图,核密度图,提琴图。
1.线性回归模型 (seaborn.lmplot)
Seaborn可以直接绘制线性回归模型,用于描述线性关系。
1).语法:
seaborn.lmplot(x=None, y=None, data=None, hue=None, col=None, row=None,palette=None, col_wrap=3, size=5, markers="o")
参数说明:
x, y:x,y轴数据
data:数据集
hue:散点图中的分类字段
col:列分类变量,构成子集
row:行分类变量
col_wrap:控制每行子图的数量
size:控制子图的高度
markers:点的形状
2).示例:
Excel中的数据:
代码:
import matplotlib.pyplot as plt
import pandas as pd
import seaborn as sns
pd.set_option('display.unicode.east_asian_width', True)
df = pd.read_excel('F:\\Note\\清单.xlsx', sheet_name='Sheet9')
print(df)
sns.set_style('darkgrid')
plt.rcParams['font.sans-serif'] = ['SimHei'] # 解决中文乱码
plt.rcParams['axes.unicode_minus'] = False # 解决负号不显示的问题
# 绘制线性回归模型
sns.lmplot(x='总收入(千元)', y='利润(千元)', data=df)
# 显示图像
plt.show()
结果展示:
2.箱型图 (seaborn.boxplot)
1).语法:
seaborn.boxplot(x=None, y=None,data=None, hue=None,order=None,hue_order=None,orient=None, color=None, palette=None, saturation=.75, width=.8,notch=False)
参数说明:
x,y:x,y轴数据
data:数据集
hue:分类字段
width:箱形图的宽度
notch:中间箱体是否显示缺口,默认值False
2).示例:
Excel中的数据:
代码:
import matplotlib.pyplot as plt
import pandas as pd
import seaborn as sns
pd.set_option('display.unicode.east_asian_width', True)
df = pd.read_excel('F:\\Note\\清单.xlsx', sheet_name='Sheet9')
print(df)
sns.set_style('darkgrid')
plt.rcParams['font.sans-serif'] = ['SimHei'] # 解决中文乱码
plt.rcParams['axes.unicode_minus'] = False # 解决负号不显示的问题
#绘制箱型图
sns.boxplot(x='是否为工作日', y='总收入(千元)',hue='是否为工作日', data=df)
# 显示图像
plt.show()
结果展示:
从上图得知,数据存在 异常值(上图中的红色框框)。箱型图实际上就是利用数据的分位数来识别数据的异常点,这一特点使得箱型图在学术界和工业界的应用非常广泛
3.核密度图 (seaborn.kdeplot)
核密度在概率论中用来估计未知的密度函数,属于非参数检验的方法之一,通过核密度图可以比较直观的看出数据本身的分布数据。
1).语法:
seaborn.kdeplot(x=None, y=None, data=None,hue=None,shade=True )
参数说明:
x,y:x,y轴数据
data:数据集
hue:分类字段
shade:是否带阴影,默认值为True
2).示例1:
代码:
import matplotlib.pyplot as plt
import seaborn as sns
sns.set_style('darkgrid')
plt.rcParams['font.sans-serif'] = ['SimHei'] # 解决中文乱码
plt.rcParams['axes.unicode_minus'] = False # 解决负号不显示的问题
# 调用seaborn自带的数据集
df = sns.load_dataset('iris')
# 绘制多个变量的核密度图
p1 = sns.kdeplot(df['sepal_width'], shade=True, color='r')
p1 = sns.kdeplot(df['sepal_length'], shade=True, color='b')
# 显示图像
plt.show()
结果展示:
3).示例2:边际核密度图
代码:
import matplotlib.pyplot as plt
import seaborn as sns
# sns.set_style('darkgrid')
plt.rcParams['font.sans-serif'] = ['SimHei'] # 解决中文乱码
plt.rcParams['axes.unicode_minus'] = False # 解决负号不显示的问题
# 调用seaborn自带的数据集
df = sns.load_dataset('iris')
# 绘制多个变量的核密度图
sns.jointplot(x=df['sepal_length'], y=df['sepal_width'], shade=True, kind='kde', space=0)
# 显示图像
plt.show()
结果展示:
4.提琴图 (seaborn.violinplot)
提琴图结合了箱型图和核密度图的特性,用于展示数据的分布情况,粗黑线表示四分数范围,延长的细线表示95%的置信区间,白点为中位数。提琴图弥补了箱型图的不足,可是展示数据分布是双模还是多模
1).语法:
seaborn.violinplot(x=None, y=None,data=None,hue=None, order=None, hue_order=None)
参数说明:
x,y:x,y轴数据
data:数据集
hue:分类字段
2).示例:
Excel中的数据:
代码:
import matplotlib.pyplot as plt
import pandas as pd
import seaborn as sns
pd.set_option('display.unicode.east_asian_width', True)
df = pd.read_excel('F:\\Note\\清单.xlsx', sheet_name='Sheet9')
print(df)
sns.set_style('darkgrid')
plt.rcParams['font.sans-serif'] = ['SimHei'] # 解决中文乱码
plt.rcParams['axes.unicode_minus'] = False # 解决负号不显示的问题
# 绘制提琴图
sns.violinplot(x='是否为工作日', y='总收入(千元)',hue='是否为工作日', data=df)
# 显示图像
plt.show()
结果展示: