【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}")
相关推荐
拓端研究室11 分钟前
【专题】2024年悦己生活消费洞察报告汇总PDF洞察(附原数据表)
人工智能
月眠老师13 分钟前
拓展AI超级智能后的人类生活场景
人工智能·生活
cwj&xyp38 分钟前
Python(二)str、list、tuple、dict、set
前端·python·算法
是十一月末42 分钟前
Opencv实现图片的边界填充和阈值处理
人工智能·python·opencv·计算机视觉
机智的叉烧1 小时前
前沿重器[57] | sigir24:大模型推荐系统的文本ID对齐学习
人工智能·学习·机器学习
凳子花❀1 小时前
强化学习与深度学习以及相关芯片之间的区别
人工智能·深度学习·神经网络·ai·强化学习
泰迪智能科技013 小时前
高校深度学习视觉应用平台产品介绍
人工智能·深度学习
盛派网络小助手4 小时前
微信 SDK 更新 Sample,NCF 文档和模板更新,更多更新日志,欢迎解锁
开发语言·人工智能·后端·架构·c#
算法小白(真小白)4 小时前
低代码软件搭建自学第二天——构建拖拽功能
python·低代码·pyqt
唐小旭4 小时前
服务器建立-错误:pyenv环境建立后python版本不对
运维·服务器·python