【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}")
相关推荐
北冥有羽Victoria2 分钟前
OpenCLI 操作网页 从0到1完整实操指南
vscode·爬虫·python·github·api·ai编程·opencli
蕤葳-2 分钟前
非编程背景学习AI的方法
人工智能
handsomestWei4 分钟前
scikit-learn数据预处理模块
python·机器学习·scikit-learn
北京耐用通信5 分钟前
不换设备、不重写程序:耐达讯自动化网关如何实现CC-Link IE转Modbus TCP的高效互通?
人工智能·科技·物联网·网络协议·自动化·信息与通信
计算机毕业设计指导6 分钟前
基于机器学习和深度学习的恶意WebURL检测系统实战详解
人工智能·深度学习·机器学习·网络安全
珂朵莉MM7 分钟前
第七届全球校园人工智能算法精英大赛-算法巅峰赛产业命题赛第3赛季优化题--多策略混合算法
人工智能·算法
w_t_y_y8 分钟前
机器学习常用的python包(二)工具箱scikit-learn
python·机器学习·scikit-learn
GlobalInfo9 分钟前
2026-2032全球AI服务器连接器市场洞察:规模、竞争与趋势深度解析
人工智能
Elastic 中国社区官方博客13 分钟前
使用 Jina-VLM 小型多语言视觉语言模型来和图片对话
大数据·人工智能·elasticsearch·语言模型·自然语言处理·jina
罗西的思考14 分钟前
【OpenClaw】通过 Nanobot 源码学习架构---(6)Skills
人工智能·深度学习·算法