【Python-AI篇】seaborn

1. 介绍

  1. Seaborn基于matplotlib核心库进行了更高级别的API封装,可以轻松的绘制图形,主要体现在配色更加舒服,以及图形元素更加细腻

2. 绘制单变量分布

python 复制代码
# 语法格式
seabron.distplot(a, bins=None, hist=True, kde=True, rug=False, fit=None, color=None)

参数含义:

  1. a: 表示要观察的数据,可以是Series,一维数组,列表
  2. bins: 用于控制条形的数量
  3. hist: 接收布尔类型,表示是否绘制(标注)直方图
  4. kde: 接收布尔类型,表示是否绘制高斯核密度曲线
  5. rug: 接收布尔类型,表示是否在支持的轴方向上绘制rugplot
python 复制代码
import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt

# 确定随机数生成器的种子
np.random.seed(0)

# 生成随机数组
arr = np.random.randn(100)

# 创建一个图形
plt.figure(figsize=(10, 8), dpi=100)

# 绘制直方图,添加 KDE 和 rug
sns.histplot(arr, bins=10, kde=True, stat="density", color='skyblue', alpha=0.7)
sns.rugplot(arr, color='green')

# 设置标题和标签
plt.title("Histogram with KDE and Rug Plot")
plt.xlabel("Value")
plt.ylabel("Density")

# 显示图形
plt.show()

3. 绘制双变量分布

3.1 介绍

两个变量的二元分布可视化。使用joinplot函数,可以创建一个多面板图形,比如散点图、二维直方图、核密度估计等,以显示两个变量之间的双变量关系及每个变量在单坐标轴上的单变量分布

python 复制代码
# 语法格式
seaborn.joinplot(x, y, data=None, kind='scatter', stat_func=None, color=None, ratio=5, space=0.2, dropna=True)

参数含义:

  1. kind: 表示绘制图形的类型
  2. stat_func: 用于计算有关关系的统计量并标注图
  3. color: 表示绘图元素的颜色
  4. size: 用于设置图的大小(正方形)
  5. ratio: 表示中心图与侧边图的比例,该参数的值越大,则中心图占比越大
  6. space: 用于设置中心图与侧边图的间隔大小
python 复制代码
import numpy as np
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt

# 创建DataFrame对象
data = pd.DataFrame({'x': np.random.randn(500), 'y': np.random.randn(500)})

# 绘制散布图
sns.jointplot(x='x', y='y', data=data)

plt.show()
python 复制代码
import numpy as np
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt

# 创建DataFrame对象
data = pd.DataFrame({'x': np.random.randn(500), 'y': np.random.randn(500)})

# 绘制二维直方图
sns.jointplot(x='x', y='y', data=data, kind='hex')

plt.show()

3.3 绘制成对双变量分布图

4. 用分类数据绘图

4.1 分类

  1. 分类数据散点图:swarmplot()与stripplot()
  2. 类数据的分布图:boxplot()与violinplot()
  3. 分类数据的统计估算图:barplot()与pointplot()

4.2 绘制散点图

python 复制代码
seaborn.stripplot(x=None, y=None, hue=None, data=None, order=None, hue_order=None, jitter=None)

参数含义:

  1. x,y,hue: 用于绘制长格式数据的输入
  2. data: 用于绘制数据集,如果x,y不存在,则它作为宽格式,否则作为长格式
  3. jitter: 表示抖动程度(仅沿类别轴),当很多数据点重叠时,可以指定抖动数量或者默认为True
python 复制代码
import seaborn as sns
import pandas as pd
import matplotlib.pyplot as plt

try:
    tips = pd.read_csv('./data1101.csv', encoding='gbk')
    print(tips.head())
    sns.stripplot(x=tips['day'], y=tips['tip']+1, data=tips)
    plt.savefig('stripplot.png', dpi=100)
    plt.show()
except Exception as e:
    print(f"An error occurred: {e}")

如果jitter为False,画出图像为

使用swarmplot画图得出更加清晰的点图

python 复制代码
import seaborn as sns
import pandas as pd
import matplotlib.pyplot as plt


try:
    tips = pd.read_csv('./data1101.csv', encoding='gbk')
    print(tips.head())
    sns.swarmplot(x=tips['day'], y=tips['tip'], data=tips)
    plt.savefig('stripplot.png', dpi=100)
    plt.show()
except Exception as e:
    print(f"An error occurred: {e}")

4.3 类别内的数据分布

4.3.1 箱型图

4.3.1.1 介绍
  1. 用作显示一组数据分散情况资料的统计图
  2. 显示一组数据的最大值,最小值,中位数,上下四分位数
4.3.1.2 绘制箱型图
python 复制代码
# 代码示例
seaborn.boxplot(x=None, y=None, hue=None, data=None, orient=None, color=None, saturation=0.75, width=0.8)

参数含义:

  1. palette: 用于设置不同级别的颜色变量 ---- pattle=['r', 'g', 'b', 'y']
  2. saturation: 用于设置数据显示的颜色饱和度 ---- 使用小数表示
python 复制代码
import seaborn as sns
import pandas as pd
import matplotlib.pyplot as plt

try:
    tips = pd.read_csv('./data1101.csv', encoding='gbk')
    print(tips.head())
    sns.boxplot(x=tips['day'], y=tips['tip'], data=tips)
    plt.savefig('stripplot.png', dpi=100)
    plt.show()
except Exception as e:
    print(f"An error occurred: {e}")

4.3.2 小提琴图

4.3.2.1 介绍
  1. 显示数据分布及其概率密度
  2. 显示数据分布形状
  3. 中间的黑色粗条表示四分位数的范围,从前延伸的幼细黑线代表95%的置信区间,而白点则代表中位数
4.3.2.2 绘制小提琴图
python 复制代码
import seaborn as sns
import pandas as pd
import matplotlib.pyplot as plt

try:
    tips = pd.read_csv('./data1101.csv', encoding='gbk')
    print(tips.head())
    sns.violinplot(x=tips['day'], y=tips['tip'], data=tips)
    plt.savefig('stripplot.png', dpi=100)
    plt.show()
except Exception as e:
    print(f"An error occurred: {e}")

4.4 类别内的统计估计

4.4.1 绘制条形图

若每个类别中有多个类别时,则条形图可以使用引导计算估计的置信区间(是指样本统计量所构造的总体参数的估计区间),并使用误差条件来表示置信区间

python 复制代码
import seaborn as sns
import pandas as pd
import matplotlib.pyplot as plt

try:
    tips = pd.read_csv('./data1101.csv', encoding='gbk')
    print(tips.head())
    sns.barplot(x=tips['day'], y=tips['tip'], data=tips)
    plt.savefig('stripplot.png', dpi=100)
    plt.show()
except Exception as e:
    print(f"An error occurred: {e}")

4.4.2 绘制点图

python 复制代码
import seaborn as sns
import pandas as pd
import matplotlib.pyplot as plt

try:
    tips = pd.read_csv('./data1101.csv', encoding='gbk')
    print(tips.head())
    sns.pointplot(x=tips['day'], y=tips['tip'], data=tips)
    plt.savefig('stripplot.png', dpi=100)
    plt.show()
except Exception as e:
    print(f"An error occurred: {e}")
相关推荐
dundunmm10 分钟前
【每天一个知识点】训推一体机
人工智能·大模型·硬件·软件·训练·推理
johnny2331 小时前
OCR、文档解析工具合集(下)
人工智能
hui函数3 小时前
Flask电影投票系统全解析
后端·python·flask
Moshow郑锴3 小时前
实践题:智能客服机器人设计
人工智能·机器人·智能客服
2501_924889554 小时前
商超高峰客流统计误差↓75%!陌讯多模态融合算法在智慧零售的实战解析
大数据·人工智能·算法·计算机视觉·零售
维基框架4 小时前
维基框架 (Wiki Framework) 1.1.0 版本发布 提供多模型AI辅助开发
人工智能
西猫雷婶5 小时前
神经网络|(十二)概率论基础知识-先验/后验/似然概率基本概念
人工智能·神经网络·机器学习·回归·概率论
闲人编程5 小时前
Python第三方库IPFS-API使用详解:构建去中心化应用的完整指南
开发语言·python·去中心化·内存·寻址·存储·ipfs
计算机编程小咖5 小时前
《基于大数据的农产品交易数据分析与可视化系统》选题不当,毕业答辩可能直接挂科
java·大数据·hadoop·python·数据挖掘·数据分析·spark
居7然6 小时前
大模型微调面试题全解析:从概念到实战
人工智能·微调