【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}")
相关推荐
HPC_fac1305206781628 分钟前
以科学计算为切入点:剖析英伟达服务器过热难题
服务器·人工智能·深度学习·机器学习·计算机视觉·数据挖掘·gpu算力
网易独家音乐人Mike Zhou3 小时前
【卡尔曼滤波】数据预测Prediction观测器的理论推导及应用 C语言、Python实现(Kalman Filter)
c语言·python·单片机·物联网·算法·嵌入式·iot
安静读书3 小时前
Python解析视频FPS(帧率)、分辨率信息
python·opencv·音视频
小陈phd3 小时前
OpenCV从入门到精通实战(九)——基于dlib的疲劳监测 ear计算
人工智能·opencv·计算机视觉
Guofu_Liao4 小时前
大语言模型---LoRA简介;LoRA的优势;LoRA训练步骤;总结
人工智能·语言模型·自然语言处理·矩阵·llama
小二·5 小时前
java基础面试题笔记(基础篇)
java·笔记·python
小喵要摸鱼6 小时前
Python 神经网络项目常用语法
python
一念之坤7 小时前
零基础学Python之数据结构 -- 01篇
数据结构·python
wxl7812278 小时前
如何使用本地大模型做数据分析
python·数据挖掘·数据分析·代码解释器
NoneCoder8 小时前
Python入门(12)--数据处理
开发语言·python