查找网站后台入口,建立全国统一大市场,网站建设转正申请报告,男女做的那个视频网站Seaborn 简介
Seaborn 是一个基于 Matplotlib 的图形可视化 Python 库#xff0c;提供了高度交互式的接口#xff0c;使用户能够轻松绘制各种吸引人的统计图表。Seaborn 可以直接使用 Pandas 的 DataFrame 和 Series 数据进行绘图。
1. Seaborn 绘制单变量图
(1) 直方图 h…Seaborn 简介
Seaborn 是一个基于 Matplotlib 的图形可视化 Python 库提供了高度交互式的接口使用户能够轻松绘制各种吸引人的统计图表。Seaborn 可以直接使用 Pandas 的 DataFrame 和 Series 数据进行绘图。
1. Seaborn 绘制单变量图
(1) 直方图 histplot hue: 根据另一个分类变量对数据进行分组并显示不同颜色的直方图。 kde: 是否绘制核密度估计曲线。 其他常用参数: bins: 控制直方图的条数。stat: 选择统计方式如 density 或 count。 示例代码:
import seaborn as sns
import matplotlib.pyplot as plt# fig 画布对象, ax坐标轴对象
fig, ax plt.subplots(figsize(10, 5))
# todo data: 要操作的 df或Series对象
# todo x, y: x轴 和 y轴 数据
# todo bins: 直方图, 划分区间的个数
# todo hue: 分组字段, 默认为None, 会按照该字段分组, 把相同分组数据画到一张图上
# todo kde: 绘制 核密度预估曲线
sns.histplot(datatips, xtotal_bill, bins10, huesex, kdeTrue)
ax.set_title(直方图-总消费金额分布情况)
plt.show()(2) 密度图 kdeplot
X 轴: 样本数据。Y 轴: 密度值。fill: 是否填充曲线下方区域。其他常用参数: bw_adjust: 调整带宽以控制平滑度。
示例代码:
# todo 密度图是连续的 - 概率分布 直方图是离散的 - 样本数据
# todo 应用场景: 基于少量的样本数据, 去推理 总体数据的概率分布情况fig, ax plt.subplots(figsize(10, 5))
sns.kdeplot(datatips, xtotal_bill)
ax.set_title(密度图-总消费金额分布情况)
plt.show()(3) 计数图 countplot
color: 仅支持单一颜色。hue: 可用来在每个条形中分组显示不同的类别。其他常用参数: order: 控制条形图中类别的顺序。
示例代码:
# todo 计数图 按照某个字段分组, 统计每个分组的数量, 然后绘制成 条形图(柱状图)
# 按照 星期分组, 统计每个星期的 消费次数
# 方式一
fig, ax plt.subplots(figsize(10, 5))
sns.countplot(datatips, xday, colorb)
ax.set_title(消费次数分布情况)
plt.show()# 方式二: 手动分组 聚合计算
tips.day.value_counts().plot.bar(figsize(10, 5), color[red, blue, yellow])
ax.set_title(消费次数分布情况)
plt.show()2. Seaborn 双变量数据可视化
(1) 散点图 scatterplot hue: 根据另一变量划分颜色。(分组字段) size: 根据另一变量划分点的大小。 其他常用参数: style: 根据另一变量改变点的形状。
示例代码:
# hue: 分组字段
fig, ax plt.subplots(figsize(10, 5))
# 2. 绘制散点图, 分析: 总消费金额, 小费 之间的关系.
# sns.scatterplot(datatips, xtotal_bill, ytip)
sns.scatterplot(datatips, xtotal_bill, ytip, huesex)
ax.set_title(散点图-总消费金额和消费之间的关系)
plt.show()(2) 回归图 regplot fit_reg: 默认绘制线性拟合回归线设为 False 可禁用。 其他常用参数: ci: 置信区间的大小。
示例代码:
fig, ax plt.subplots(figsize(10, 5))
# todo fit_reg: 是否绘制回归线, 默认为 True
# todo 拟合回归线: 基于数据点(散点), 拟合出一条直线, 底层运行: 线性回归
sns.regplot(datatips, xtotal_bill, ytip, fit_regTrue)
# sns.regplot(datatips, xtotal_bill, ytip, fit_regFalse)
ax.set_title(散点图-总消费金额和消费之间的关系)
plt.show()(3) 联合图 jointplot
一些函数在绘图的时候, 是直接绘制的, 无需指定画板, 也没有 figsize属性设置(图形宽高), 但一般有 height属性, 设置图形宽高: 如 jointplot, 可以把 jointplot()理解为: 散点图 直方图(每行每列都会绘制直方图)kind: 绘制的图的类型如 scatter, kde(密度图), hex(蜂巢图)。 height: 图的高度。 其他常用参数: hue: 分组显示不同的类别。
示例代码:
sns.jointplot(datatips, xtotal_bill, ytip, kindscatter, height8)
plt.title(Jointplot of Total Bill and Tip)
plt.show()(4) 2D 密度图 kdeplot fill: 填充密度图。 cbar: 显示颜色区间图例。 其他常用参数: levels: 指定绘制的等高线的数量。
示例代码:
# 1. 获取 画布, 坐标轴对象
fig, ax plt.subplots(figsize(10, 5))
# 2. 设置2D密度图
# todo cbar: 是否绘制颜色条 fill: 是否填充颜色
sns.kdeplot(datatips, xtotal_bill, ytip, fillTrue, cbarTrue)
ax.set_title(2D Ked TotalBill Tip)
plt.show()(5) 箱线图 boxplot 定义: 显示数据的分位数及异常值。 组成部分: 包括上边缘、上四分位数、中位数、下四分位数、下边缘、异常值。 其他常用参数: hue: 根据分类变量分组显示箱线。 箱子的中间有一条线代表了数据的中位数 箱子的上下底分别是数据的上四分位数Q3和下四分位数Q1 箱体包含了50%的数据。因此箱子的高度在一定程度上反映了数据的波动程度 上下边缘则代表了该组数据的最大值和最小值 IQR 上四分位数Q3) - 下四分位数Q1 四分位距interquartile range, IQR又称四分差 判断异常值时最大值 上四分位数Q3) 1.5 IQR 大于这个值的就是异常值 判断异常值时最小值 下四分位数Q1- 1.5 IQR 小于这个值的就是异常值 有时候箱子外部会有一些点可以理解为数据中的“异常值”
示例代码:
# 需求: 通过 箱线图(盒须图, 箱子图), 分析: 总消费金额, 时间 之间的关系.
# todo IQR Q3 - Q1 : InterquantileRange四分位距表示法
fig, ax plt.subplots(figsize(10, 5))
sns.boxplot(datatips, xtime, ytotal_bill)
ax.set_title(箱线图-分析就餐时间和消费总金额之间的关系0)
plt.show()(6) 小提琴图 violinplot
小提琴图, 它是经典的可视化方法但可能会掩盖数据的分布 小提琴图能显示与箱线图相同的值, 小提琴图把箱线绘成核密度估计 有助于保留数据的更多可视化信息 优势 小提琴图同时展示了数据的统计分布和概率密度能够更好地揭示数据的形态和特征。小提琴图可以通过分组变量进行比较分析方便观察不同类别间的差异。小提琴图能够显示数据的离散程度通过观察图形的宽度可以了解数据的散布情况。 定义: 在箱线图基础上添加了核密度估计有助于显示数据分布。 hue: 支持分组显示。 split: 分割不同类别的小提琴图。 其他常用参数: inner: 指定内部显示的内容如 box, quartile。
示例代码:
fig, ax plt.subplots(figsize(12, 6))
# split True 默认是False 当使用hue的时候会生效, 会在一个violin中切开 一半显示一个类别
sns.violinplot(datatips, xday, ytotal_bill, huesex, splitTrue)
plt.title(Violinplot of Total Bill by Day and Sex)
plt.show()3. 多变量数据
绘制多变量数据没有固定的套路可以使用颜色、大小和形状来区分数据
通过颜色区分: 使用 hue 参数来区分不同类别。通过大小区分: 使用 size 参数调整点的大小以表示数量。 4. Seaborn 主题和样式
使用 sns.set_style() 来设置主题风格Seaborn 中有五种样式
white: 白色背景无网格。whitegrid: 白色网格。dark: 黑色背景无网格。darkgrid: 黑色网格默认。ticks: 带刻度线的样式。 5. 数据可视化选择
Seaborn 和 Pandas: 适合快速绘制和探索性分析但不适合精细化调整。Matplotlib: 更适合需要精细化控制的绘图需求。
6. 其他知识
1. 数据准备和清洗
在绘图之前确保数据的质量是非常重要的。以下是一些常用的数据准备和清洗步骤
处理缺失值
import pandas as pd# 读取数据
df pd.read_csv(data.csv)# 检查缺失值
print(df.isnull().sum())# 删除缺失值
df.dropna(inplaceTrue)# 或用填充方式处理缺失值
df.fillna(df.mean(), inplaceTrue)处理异常值
# 使用 Z-score 方法识别异常值
from scipy import statsdf df[(np.abs(stats.zscore(df[column_name])) 3)]Z-score标准分数是衡量一个数据点与数据集均值的偏离程度的一种统计量。它表示该数据点与均值的距离以标准差为单位。具体定义如下 Z ( X − μ ) / σ Z(X−μ)/σ Z(X−μ)/σ Z Z − s c o r e ZZ-score ZZ−score X 数据点的值 X数据点的值 X数据点的值 μ 数据集的均值 μ数据集的均值 μ数据集的均值 σ 数据集的标准差 σ数据集的标准差 σ数据集的标准差
解释:
如果 Z-score 为 0表示数据点等于均值。如果 Z-score 为正表示数据点高于均值如果为负表示数据点低于均值。一般情况下Z-score 大于 3 或小于 -3 的数据点通常被认为是异常值outliers。
2. 图形美化
Seaborn 提供了多种美化图形的方式。可以使用调色板和样式参数。
调色板
import seaborn as sns# 设置调色板
sns.set_palette(pastel) # 可选 deep, muted, bright, pastel, dark, colorblind美化图形
sns.scatterplot(xx_column, yy_column, datadf)
plt.title(Title, fontsize16)
plt.xlabel(X Axis Label, fontsize14)
plt.ylabel(Y Axis Label, fontsize14)3. 保存图形
使用 plt.savefig() 可以将绘制的图形保存到文件中。
import matplotlib.pyplot as plt# 绘图
sns.histplot(df[column_name])
plt.title(Histogram)# 保存图形
plt.savefig(histogram.png, dpi300, bbox_inchestight)4. 调试和错误处理
在使用 Seaborn 时可能会遇到一些常见的错误。以下是一些解决方案
KeyError 当尝试使用不存在的列名时会抛出 KeyError。确保你使用的列名在 DataFrame 中确实存在。ValueError 如果数据类型不正确例如尝试在数值列上使用分类图可能会抛出 ValueError。检查数据类型并进行转换
df[column_name] df[column_name].astype(float)AttributeError 使用不支持的方法或属性时可能会抛出此错误。确保你在正确的对象上调用方法。 7. 绘制 线性回归模型
在 seaborn 中lmplot 是用于绘制线性回归模型的绘图函数。它结合了回归线和散点图帮助用户直观地分析两个变量之间的关系并通过回归线展示趋势。以下是 lmplot 的一些常用参数和基本用法
语法
seaborn.lmplot(x, y, data, **kwargs)参数
x: 字符串指定数据集中作为 x 轴的变量名称。y: 字符串指定数据集中作为 y 轴的变量名称。data: 数据集通常是 Pandas 的 DataFrame指定要绘制的原始数据。hue: 可选字符串指定分类变量用于在不同类别间绘制不同的回归线和散点。col: 可选字符串指定列变量根据该变量将数据分为多个小图。row: 可选字符串指定行变量与 col 类似但是按行排列。fit_reg: 布尔值控制是否绘制回归线默认为 True。markers: 用于指定散点的标记类型。palette: 调色板用于控制不同类别的颜色。
示例用法 简单线性回归图 import seaborn as sns
import matplotlib.pyplot as plt# 加载示例数据集
tips sns.load_dataset(tips)# 绘制总账单与小费之间的线性回归图
sns.lmplot(xtotal_bill, ytip, datatips)
plt.show()使用分类变量的线性回归 sns.lmplot(xtotal_bill, ytip, huesmoker, datatips)
plt.show()上面的例子中huesmoker 会基于是否吸烟绘制不同的回归线。 多图绘制基于行和列分类 sns.lmplot(xtotal_bill, ytip, colsex, rowsmoker, datatips)
plt.show()这样可以根据 sex 和 smoker 分类生成多个子图。