IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> Seaborn数据可视化——一篇详细的学习记录 -> 正文阅读

[Python知识库]Seaborn数据可视化——一篇详细的学习记录

系列文章目录

第一章 探索性数据分析之Seaborn数据可视化



前言

??本文详细简介的记录了利用Seaborn进行可视化操作,数据可视化是数据分析中重要的一步,在前期数据的探索性分析,以及后期结果的呈现中都有着重要地位。更加全面的教学可进入Kaggle Seaborn教学进行学习。


一、Seaborn简介

??Python有很多非常优秀易用的数据可视化的库,其中最著名的要数matplotlib了,它有着十几年的历史,至今仍然是Python使用者最常用的画图库。 Seaborn跟matplotlib最大的区别就是它的默认绘图风格和色彩搭配都具有现代美感,其实是在matplotlib的基础上进行了更高级的API封装,让我们能用更少的代码去调用 matplotlib的方法,从而使得作图更加容易,在大多数情况下使用seaborn就能做出很具有吸引力的图,而使用matplotlib就能制作具有更多特色的图。应该把Seaborn视为matplotlib的补充,而不是替代物。

二、准备阶段

1.导入依赖包

??该博客可视化均以iris数据集为基础,现导入需要的包及数据集。

import pandas as pd
pd.plotting.register_matplotlib_converters()
import matplotlib.pyplot as plt
import seaborn as sns

from sklearn.datasets import load_iris 

其中,第二行代码是为了消除matplotlib与seaborn的冲突警告,详细说明可查看我的博客pd.plotting.register_matplotlib_converters() 的作用

2.读入数据

??将bunch结构的iris数据集导入,并转换为DataFrame结构方便之后操作。

def bunch2datafram(load_bunchdata):
    df_data = pd.DataFrame(data = load_bunchdata().data,columns = load_bunchdata().feature_names)
    df_data['target'] = load_bunchdata().target
    return df_data
df_data = bunch2datafram(load_iris)

详细的转换讲解可参考博客Bunch转化为DataFrame的一般方法

3.设置样式

??该步骤设置一款自己喜欢的调试板,作为后期作图的基础样式,这里运用的是“mako”,个人觉得还不错,喜欢其他的可去官网找找。

sns.set_theme(palette='mako')   # 设置样式
plt.rcParams['font.sans-serif']=['SimHei'] # 设置适应模式的字体
plt.rcParams['axes.unicode_minus']=False # 解决坐标负数无法显示的问题

这一步也可以不进行,默认的调色板也不错。

三、绘图操作

1.线性图

# Line Charts

plt.figure(figsize=(10,4),dpi=150) # figsize设置长宽比,dpi设置像素
sns.lineplot(data=df_data.iloc[:,0:4])
plt.xlabel("标签序号")
plt.ylabel("值(cm)")
plt.title("Line Chart")

## 下列代码没有实际意义,仅拓展操作思路
# sns.lineplot(data=df_data.iloc[:,0], label=df_data.columns[0])
# sns.lineplot(x=df_data.iloc[:,0],y = df_data.iloc[:,1],hue=df_data["target"])  

示图样例:
请添加图片描述
设置hue值可分别对各target作线性图,示图样例如下:

plt.figure(figsize=(10,4),dpi=130)
sns.lineplot(x=df_data.iloc[:,0],y = df_data.iloc[:,1],hue=df_data["target"]) 
plt.savefig('F:/test/素材库/seaborn简介教程/图片素材/LineChart2')

请添加图片描述

2.条形图、热力图

??条形图可观察各属性的平均值,代码如下:

# Bar Charts

plt.figure(figsize=(10,5),dpi=130)
sns.barplot(data=df_data.iloc[:,0:4],width=0.4)
plt.ylabel("value")
plt.title("Bar Chart各属性的平均值")

示图样例:

??热力图可直观的反映各数据大小,代码如下:

# heatmaps
plt.figure(figsize=(10,5),dpi=130)

sns.heatmap(data=df_data.iloc[40:50,0:4],annot=True) # annot:取True显示值;

# 添加图像说明
plt.ylabel("标签序号")
plt.xlabel("属性")
plt.title("HeatMap")

其中设置annot为True即显示图像各小块上面的数值,示图样例如下:

3.散点图

??基础散点图,可直观观察不同属性之间的分布关系。

# Scatter Plot
plt.figure(figsize=(9,4),dpi=130)
sns.scatterplot(x=df_data.iloc[:,0],y= df_data.iloc[:,2])
plt.title("Scatter Plot")

示图样例如下:
请添加图片描述
??带有线性回归的散点图,在体现不同属性间分布关系的基础上,做出一条回归直线,可直观观测是否存在线性相关,代码如下:

plt.figure(figsize=(7,4),dpi=130)
sns.regplot(x=df_data.iloc[:,0],y= df_data.iloc[:,2])

示图样例如下:
请添加图片描述
??带标签信息的散点图,可直观体现不同属性不同target间的分布关系,代码如下:

plt.figure(figsize=(9,4),dpi=130)
sns.scatterplot(x=df_data.iloc[:,0],y= df_data.iloc[:,2],hue = df_data["target"])
plt.title("scatter_hue")

示图样例如下:请添加图片描述
??带不同标签回归信息的散点图,可直观观测不同属性在不同标签下,是否呈现线性相关,代码如下:

plt.figure(dpi=150)
sns.lmplot(x=df_data.columns[0],y= df_data.columns[2],hue = "target",data=df_data)
plt.title("Scatterplot of regression")

示图样例如下:

??标签箱型散点图,直观呈现各属性值在不同target下的分布情况,同时可作为异常点初步分析的依据。代码如下:

plt.figure(figsize=(7,4),dpi=130)
sns.swarmplot(x=df_data["target"],y=df_data.iloc[:,0])
plt.title("标签箱型散点图")

示图样例如下:请添加图片描述

4.分布图

??直方图,频数直方图可反映出属性的集中情况与大致分布,其代码如下:

plt.figure(figsize=(9,4),dpi=130)
sns.histplot(df_data['petal length (cm)'])
plt.title("直方图")

示图样例如下:

??概率密度图(KDE),直观呈现该属性的分布情况,可初步检验是否满足正态分布,代码如下:

#KDE plot 
plt.figure(figsize=(9,4),dpi=130)
sns.kdeplot(data=df_data['petal length (cm)'], fill=True) # fill:取True,填充图形下方。
plt.title("概率密度图")

示图样例如下: 请添加图片描述
??2维概率密度图(2D KDE),直观呈现两种属性间的整体分布情况,可理解为等高线图,代码如下:

#2D KDE plot
plt.figure(figsize=(9,4),dpi=130)
sns.jointplot(x=df_data['petal length (cm)'], y=df_data['sepal width (cm)'], kind="kde")

示图样例如下:

??带标签信息的直方图,可直观的观测不同target在该属性下的分布情况,可后面类比特征的提取做准备,代码如下:

plt.figure(figsize=(7,4),dpi=130)
sns.histplot(data=df_data,x='petal length (cm)',hue = 'target')
plt.title("带标签的直方图")

示图样例如下:
请添加图片描述
??带标签信息的概率密度图,可直观的观测该属性下各target的分布情况,代码如下:

plt.figure(figsize=(9,4),dpi=130)
#KDE plots for each species
sns.kdeplot(data=df_data, x='petal length (cm)', hue= 'target', fill=True)

#Add title
plt.title("Distribution of Petal Lengths, by Species")

示图样例如下:
请添加图片描述

总结

以上就是今天要讲的内容,本文详细的介绍了Seaborn的一般操作,上述记录的方法能较好地满足可视化分析及结果呈现的需求。现对于各种图形的选择,作如下总结:

  • Trends - A trend is defined as a pattern of change.
    • sns.lineplot - Line charts are best to show trends over a period of time, and multiple lines can be used to show trends in more than one group.
  • Relationship - There are many different chart types that you can use to understand relationships between variables in your data.
    • sns.barplot - Bar charts are useful for comparing quantities corresponding to different groups.
    • sns.heatmap - Heatmaps can be used to find color-coded patterns in tables of numbers.
    • sns.scatterplot - Scatter plots show the relationship between two continuous variables; if color-coded, we can also show the relationship with a third categorical variable.
    • sns.regplot - Including a regression line in the scatter plot makes it easier to see any linear relationship between two variables.
    • sns.lmplot - This command is useful for drawing multiple regression lines, if the scatter plot contains multiple, color-coded groups.
    • sns.swarmplot - Categorical scatter plots show the relationship between a continuous variable and a categorical variable.
  • Distribution - We visualize distributions to show the possible values that we can expect to see in a variable, along with how likely they are.
    • sns.histplot - Histograms show the distribution of a single numerical variable.
    • sns.kdeplot - KDE plots (or 2D KDE plots) show an estimated, smooth distribution of a single numerical variable (or two numerical variables).
    • sns.jointplot - This command is useful for simultaneously displaying a 2D KDE plot with the corresponding KDE plots for each individual variable.

https://www.kaggle.com/code/alexisbcook/choosing-plot-types-and-custom-styles

  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2022-11-05 00:24:53  更:2022-11-05 00:25:44 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 6:46:27-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码