常用Seaborn绘图

该文介绍了使用Python的matplotlib和seaborn库进行数据可视化的几种常见图表,包括折线图、直方图、箱型图(处理离群点)和热力图,以及如何展示数据的相关性。此外,还展示了散点图的不同呈现方式。
摘要由CSDN通过智能技术生成


基础配置如下:

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns

# 针对图片中的中文乱码问题
from matplotlib import rcParams
rcParams['font.family'] = 'SimHei'
rcParams['axes.unicode_minus'] = False

读取数据

file_path = r""
data = pd.read_excel(file_path)
normal = data[data['label'] == 0].iloc[:, :-1] # 根据自己需求处理数据
abnormal = data[data['label'] == 1]

一、折线图

sns.lineplot(x="col-1", y="col-2", data=normal[:10])
plt.show()

在这里插入图片描述

二、直方图

sns.displot(data['col-1'], kde=True)
plt.show()

在这里插入图片描述

三、箱型图

用来查看数据中的:中位数、上下四分位数、离群点等,可以通过下面程序处理离群点

def outliers_proc(data, col_name, scale=1.5):
    """
            data:接收pandas数据格式
            col_name: pandas列名
            scale: 尺度
    """
    data_col = data[col_name]
    Q1 = data_col.quantile(0.25) # 0.25分位数
    Q3 = data_col.quantile(0.75)  # 0,75分位数
    IQR = Q3 - Q1
    data_col[data_col < Q1 - (scale * IQR)] = Q1 - (scale * IQR)
    data_col[data_col > Q3 + (scale * IQR)] = Q3 + (scale * IQR)
    return data[col_name]

绘图如下:

rows, cols = 2, 1
fig, ax = plt.subplots(rows, cols, figsize=(10, 4), sharex=True, sharey=True)
fig.suptitle('离群点处理')
sns.boxplot(data=normal, ax=ax[0])

data_new = pd.DataFrame()
for i in range(normal.shape[1]):
  column_name = f'col-{i}'
  data_new[column_name] = outliers_proc(normal, column_name)
sns.boxplot(data=data_new, ax=ax[1])
ax[0].set_title('(a) 清理前')
ax[1].set_title('(b) 清理后')
plt.show()

在这里插入图片描述

四、热力图

corr_ = data.iloc[:, :-1].corr() # 移除标签部分并计算相关系数

plt.suptitle('特征相关性') # 设置图片题目
"""
data: 数据 这里为相关系数
cmap: 控制图形的颜色
linewidths: 控制数值之间的间隙
annot: 是否显示数值
"""
sns.heatmap(data=corr_, cmap="RdBu_r", linewidths=0.3, annot=True)
plt.show()

在这里插入图片描述
数据部分显示,利用mask属性

corr_ = data.iloc[:, :-1].corr()
mask = np.zeros_like(corr_)

# # 将mask的对角线及以上设置为True
# # 这部分就是对应要被遮掉的部分
mask[np.triu_indices_from(mask)] = True

# # 4. 热力图
plt.suptitle('特征相关性')
sns.heatmap(data=corr_, cmap="RdBu_r", linewidths=0.3, annot=True, mask=mask)
plt.show()

在这里插入图片描述

五、散点图

sns.jointplot(x="col-1", y="col-3", data=data[:10])
plt.show()

在这里插入图片描述
可以通过kind属性改变呈现模型,例如

sns.jointplot(x="col-1", y="col-3", data=data[:10], kind="kde")
plt.show()

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值