【Python】【数据分析】深入探索 Python 数据可视化:Seaborn 可视化库详解

目录

  • 引言
  • 一、Seaborn 简介
  • 二、安装 Seaborn
  • 三、Seaborn 的基本图形
    • 3.1 散点图(Scatter Plot)
    • 3.2 线图(Line Plot)
    • 3.3 条形图(Bar Plot)
    • 3.4 箱型图(Box Plot)
    • 3.5 小提琴图(Violin Plot)
    • 3.6 热力图(Heatmap)
  • 四、Seaborn 的主题和颜色
  • 五、Seaborn 与 Matplotlib 结合使用
  • 六、Seaborn 绘图流程图
  • 七、Seaborn 中的高级功能
    • 7.1 使用 FacetGrid 进行多图绘制
    • 7.2 Pairplot:探索多个变量之间的关系
    • 7.3 调整子图大小与布局
  • 八、Seaborn 与 Pandas 的结合
    • 8.1 使用 Pandas 数据进行绘图
    • 8.2 使用 Pandas 进行数据汇总
  • 九、Seaborn 中的统计功能
    • 9.1 线性回归绘图
    • 9.2 绘制带置信区间的回归图
  • 总结
  • 参考文献

引言

Seaborn 是基于 Matplotlib 库的一个高级数据可视化库,它为数据分析提供了更方便、更美观的绘图功能。Seaborn 使得数据可视化更简洁、更直观,适合用于统计图表的快速绘制。它能够自动计算数据的某些统计特征,帮助分析人员快速绘制出漂亮且有意义的图表。在这篇文章中,我们将深入介绍 Seaborn 的各个方面,帮助你更好地掌握如何在数据分析中使用 Seaborn。

一、Seaborn 简介

Seaborn 是 Python 中一个强大的数据可视化库,它建立在 Matplotlib 之上并补充了更多高级功能,旨在使统计图形的创建更加简便。Seaborn 专注于数据的统计分布、数据之间的关系、时间序列分析等,它能够帮助分析人员快速从数据中提取有意义的模式和趋势。

Seaborn 的核心特点包括:

  • 自动化计算统计量:Seaborn 会自动计算数据的统计特性(如均值、方差、分位数等),并将其图形化。
  • 美观的默认样式:与 Matplotlib 相比,Seaborn 的默认样式更具现代感和美观。
  • 简洁的语法:Seaborn 提供了简洁的 API,可以通过少量代码完成复杂的绘图任务。

Seaborn 常常用于探索性数据分析(EDA),帮助我们理解数据的结构、趋势、分布等。

二、安装 Seaborn

在使用 Seaborn 之前,你需要安装它。你可以通过 Python 的包管理工具 pip 安装 Seaborn:

pip install seaborn

安装后,你就可以在 Python 环境中导入 Seaborn,开始使用其丰富的可视化功能。

在使用 Seaborn 时,我们可以通过以下方式导入库:

import seaborn as sns

seaborn 是用于数据可视化的高级接口,它基于 Matplotlib,通常使用 sns 作为别名来调用几乎所有的绘图命令。

三、Seaborn 的基本图形

Seaborn 提供了多种常见的统计图形,包括散点图、线图、条形图、箱型图、热力图等。每种图形都能够帮助我们从不同角度理解数据的特征和关系。为了能够顺利地绘制这些图形,我们需要进行一些前期准备,包括导入库、加载数据集等。为了演示,我们将使用Seaborn自带的 “tips” 数据集。这个数据集包含餐厅账单和小费的相关信息,如账单总额、小费金额、就餐时间、性别、吸烟情况等。通过加载这些数据,我们可以为接下来的可视化步骤准备好数据。

示例代码

# 导入必要的库
import seaborn as sns
import matplotlib.pyplot as plt# 加载Seaborn自带的"tips"数据集
tips = sns.load_dataset("tips")# 查看数据的前五行,理解数据结构
print(tips.head())

代码说明

  • import seaborn as sns:导入Seaborn库,并将其简称为 sns
  • import matplotlib.pyplot as plt:导入Matplotlib的pyplot模块,简称为 plt,用于显示图形。
  • tips = sns.load_dataset("tips"):加载Seaborn内置的 “tips” 数据集。

加载数据集后,您可以通过 tips.head() 查看数据的前几行,了解其结构。例如:

   total_bill   tip     sex smoker   day    time  size
0      16.99  1.01    Female     No  Sun  Dinner     2
1      10.34  1.66      Male     No  Sun  Dinner     3
2      21.01  3.50      Male     No  Sun  Dinner     3
3      23.68  3.31    Female     No  Sun  Dinner     2
4      24.59  3.61      Male     No  Sun  Dinner     4

完成这些准备工作后,我们就可以开始使用Seaborn绘制各种类型的统计图形,帮助我们更好地理解数据。

3.1 散点图(Scatter Plot)

散点图用于展示两个变量之间的关系,适用于连续型数据,常用于观察两个变量是否存在某种关联或趋势。

示例代码:

sns.scatterplot(x="total_bill", y="tip", data=tips)
plt.title('Total Bill vs Tip')
plt.show()

代码说明:

  • x="total_bill":指定散点图的横坐标是账单金额。
  • y="tip":指定纵坐标是小费金额。

效果图:

在这里插入图片描述

3.2 线图(Line Plot)

线图通常用于展示数据随时间的变化趋势,或者两个连续变量之间的关系。Seaborn 的 lineplot() 函数支持绘制带有误差条的线图,以便于更好地理解数据的波动性。

示例代码:

sns.lineplot(x="day", y="total_bill", data=tips, hue="sex")
plt.title('Line Plot Example')
plt.show()

代码说明:

  • hue="sex":通过不同颜色区分性别。

效果图:
在这里插入图片描述

3.3 条形图(Bar Plot)

条形图用于比较不同类别之间的数值大小,适用于分类数据。Seaborn 的 barplot() 函数会自动计算每个类别的均值,并绘制出相应的条形图。

示例代码:

sns.barplot(x="day", y="total_bill", data=tips)
plt.title('Bar Plot Example')
plt.show()

代码说明:

  • x="day":横坐标为星期几。
  • y="total_bill":纵坐标为账单金额。

效果图:

在这里插入图片描述

3.4 箱型图(Box Plot)

箱型图用于显示数据的分布情况,包括数据的中位数、四分位数、极值和异常值。它能够帮助我们快速了解数据的集中趋势和离散程度。

示例代码:

sns.boxplot(x="day", y="total_bill", data=tips)
plt.title('Box Plot Example')
plt.show()

代码说明:

  • x="day":横坐标为星期几。
  • y="total_bill":纵坐标为账单金额。

效果图:
在这里插入图片描述

3.5 小提琴图(Violin Plot)

小提琴图结合了箱型图和密度图,展示了数据的分布情况,同时显示了每个类别数据的密度,能够帮助我们更好地理解数据的形态。

示例代码:

sns.violinplot(x="day", y="total_bill", data=tips)
plt.title('Violin Plot Example')
plt.show()

代码说明:

  • x="day":横坐标为星期几。
  • y="total_bill":纵坐标为账单金额。

效果图:

在这里插入图片描述

3.6 热力图(Heatmap)

热力图通常用于表示矩阵数据,其中每个单元格的数值通过颜色深浅来表示。Seaborn 的 heatmap() 函数非常适合用于展示相关性矩阵、数据表格等。

示例代码:

# 加载Seaborn自带的"flights"数据集
flights = sns.load_dataset("flights")# 透视数据:根据月份和年份对乘客数进行聚合
flights_pivot = flights.pivot_table(index="month", columns="year", values="passengers")sns.heatmap(flights_pivot, cmap="YlGnBu", annot=True, fmt=".0f")
plt.title('Heatmap Example')
plt.show()

代码说明:

  • flights = sns.load_dataset("flights"):加载Seaborn的内置数据集"flights"。该数据集包含了每个月的航班乘客数量信息。
  • flights.pivot_table(index="month", columns="year", values="passengers"):通过 pivot_table() 方法将数据重塑为一个透视表,其中:
    • index="month":行表示月份。
    • columns="year":列表示年份。
    • values="passengers":单元格中的值为每月的乘客数量。
  • sns.heatmap(flights_pivot, cmap="YlGnBu", annot=True):绘制热力图。
    • cmap="YlGnBu":指定热力图的颜色调色板,“YlGnBu” 表示黄色到绿色到蓝色的渐变色。
    • annot=True:在每个单元格内显示数值(乘客数量)。

效果图:
在这里插入图片描述

四、Seaborn 的主题和颜色

Seaborn 提供了几种内置的主题,允许你快速调整图形的外观。你可以通过 sns.set_theme() 设置不同的主题,例如:

  • darkgrid:(默认):带有网格的深色背景。
  • whitegrid:带有网格的白色背景。
  • dark:无网格的深色背景。
  • white:无网格的白色背景。
  • ticks:带有坐标轴刻度线的简单背景。

示例代码:

sns.set_theme(style="darkgrid")
sns.scatterplot(x="total_bill", y="tip", data=tips)
plt.title('Scatter Plot with Dark Grid Theme')
plt.show()

效果图:
在这里插入图片描述

五、Seaborn 与 Matplotlib 结合使用

Seaborn 是建立在 Matplotlib 之上的,意味着你可以在 Seaborn 绘图基础上使用 Matplotlib 来进一步定制图形。比如,你可以使用 Matplotlib 修改图形的标题、坐标轴标签、字体等。

示例代码:

sns.scatterplot(x="total_bill", y="tip", data=tips)
plt.title('Custom Title using Matplotlib')
plt.xlabel('Total Bill')
plt.ylabel('Tip Amount')
plt.show()

效果图:

六、Seaborn 绘图流程图

绘制 Seaborn 图形的流程通常包括以下几个步骤:准备数据、选择合适的图形类型、绘制图形、自定义图形以及展示图形。了解并遵循这些步骤可以帮助你创建出清晰、富有信息的图形。以下是详细的 Seaborn 绘图流程图:

CSDN @ 2136
准备数据
选择合适的图形类型
绘制图形
自定义图形
展示图形
CSDN @ 2136

流程图说明:

  1. 准备数据:首先加载需要绘图的数据集,或整理好数据。
  2. 选择合适的图形类型:根据数据的特点(如连续性、离散性等)选择合适的图形类型,如散点图、箱型图、热图等。
  3. 绘制图形:调用 Seaborn 的绘图函数(例如 sns.scatterplot()sns.boxplot())。
  4. 自定义图形:可以设置图形的标题、轴标签、颜色、字体等以增强图形的可读性。
  5. 展示图形:最后使用 plt.show() 展示图形。

七、Seaborn 中的高级功能

Seaborn 不仅能够绘制简单的图形,还提供了许多高级功能,使得数据可视化变得更加精细和多样。接下来,我们将探讨一些高级功能和技巧。

7.1 使用 FacetGrid 进行多图绘制

Seaborn 提供了 FacetGrid 类,可以帮助我们根据某些类别变量将数据拆分并绘制多个子图。这非常适合用于探索数据的不同子集或者对不同类别的可视化。

示例代码:

g = sns.FacetGrid(tips, col="sex", row="time")
g.map(sns.scatterplot, "total_bill", "tip")
plt.show()

代码说明:

  • col="sex":根据性别变量划分列子图。
  • row="time":根据时间变量划分行子图。
  • g.map(sns.scatterplot, "total_bill", "tip"):在每个子图上绘制散点图。

效果图:

在这里插入图片描述

7.2 Pairplot:探索多个变量之间的关系

Seaborn 提供的 pairplot() 函数非常适合用于查看数据集中多个变量之间的关系,并且它能自动绘制每对变量之间的散点图以及每个变量的分布图。

示例代码:

sns.pairplot(tips)
plt.show()

代码说明:

  • pairplot() 会自动计算并绘制数据集中每对数值变量之间的关系图。

效果图:
在这里插入图片描述

7.3 调整子图大小与布局

Seaborn 的图形布局非常灵活,你可以通过 plt.subplots() 配合 Seaborn 来创建自定义的图形布局。例如,绘制多个条形图或散点图时,你可能希望将它们放在一个网格中。

示例代码:

fig, axes = plt.subplots(2, 2, figsize=(10, 8))
sns.barplot(x="day", y="total_bill", data=tips, ax=axes[0, 0])
sns.lineplot(x="day", y="total_bill", data=tips, ax=axes[0, 1])
sns.boxplot(x="day", y="total_bill", data=tips, ax=axes[1, 0])
sns.heatmap(flights_pivot, ax=axes[1, 1], cmap="YlGnBu", annot=True, fmt=".0f")
plt.tight_layout()
plt.show()

代码说明:

  • fig, axes = plt.subplots(2, 2):创建一个 2x2 的子图网格。
  • ax=axes[0, 0]:指定每个图形放置的子图位置。

效果图:
在这里插入图片描述

八、Seaborn 与 Pandas 的结合

Seaborn 和 Pandas 紧密集成,许多 Seaborn 函数都支持直接操作 Pandas DataFrame。你可以轻松地使用 Pandas 数据框架进行数据清洗和处理后,再将结果传递给 Seaborn 进行可视化。

8.1 使用 Pandas 数据进行绘图

Seaborn 可以直接接收 Pandas DataFrame 对象作为输入,并根据数据列自动生成图表。例如,如果你有一个包含日期和销售数据的 DataFrame,可以用 Seaborn 绘制时间序列图。

示例代码:

import pandas as pd
import numpy as np# 创建一个示例 DataFrame
data = {"Date": pd.date_range("2021-01-01", periods=100, freq="D"),"Sales": np.random.rand(100) * 1000
}
df = pd.DataFrame(data)# 使用 Seaborn 绘制时间序列图
sns.lineplot(x="Date", y="Sales", data=df)
plt.title("Sales Over Time")
plt.show()

代码说明:

  • pd.date_range():创建一个从 2021 年 1 月 1 日开始的日期序列。
  • np.random.rand(100):生成 100 个随机数,用于模拟销售数据。

效果图:
在这里插入图片描述

8.2 使用 Pandas 进行数据汇总

Seaborn 和 Pandas 的结合使得在可视化之前对数据进行聚合和分组变得非常简单。例如,可以通过 groupby() 对数据进行分组并计算统计量,之后将这些数据传递给 Seaborn 绘图。

示例代码:

# 按“day”分组,并计算每组的总账单均值
grouped_data = tips.groupby("day")["total_bill"].mean().reset_index()# 绘制条形图
sns.barplot(x="day", y="total_bill", data=grouped_data)
plt.title("Average Total Bill by Day")
plt.show()

代码说明:

  • tips.groupby("day")["total_bill"].mean():按“day”列分组,并计算每个组的总账单均值。

效果图:
在这里插入图片描述

九、Seaborn 中的统计功能

Seaborn 提供了许多与统计学相关的功能,使得统计图形的绘制变得更加简单。Seaborn 会自动执行一些常见的统计分析,帮助我们快速进行数据分析。

9.1 线性回归绘图

Seaborn 提供了 regplot() 函数,可以通过最小二乘法绘制数据的回归线。它不仅绘制数据点,还会计算并绘制拟合的回归线,适用于展示两个变量之间的线性关系。

示例代码:

sns.regplot(x="total_bill", y="tip", data=tips)
plt.title("Regression Plot")
plt.show()

代码说明:

  • sns.regplot() 会自动绘制散点图和回归线。

效果图:
在这里插入图片描述

9.2 绘制带置信区间的回归图

Seaborn 还支持为回归线添加置信区间(Confidence Interval, CI),通常通过填充回归线附近的阴影区域来表示。

示例代码:

sns.regplot(x="total_bill", y="tip", data=tips, ci=95)
plt.title("Regression Plot with Confidence Interval")
plt.show()

代码说明:

  • ci=95:表示回归线的 95% 置信区间。

效果图:
在这里插入图片描述

总结

Seaborn 是一个非常强大且灵活的 Python 可视化库,特别适合用于数据科学和统计分析领域。它的优点在于:

  • 提供了高层次的API,能够简化复杂的可视化任务,减少代码量。
  • 与 Pandas 紧密集成,支持直接从 DataFrame 中绘制图表。
  • 提供了丰富的图表类型,如散点图、条形图、热力图等,支持多种统计功能,如回归分析和分布估计。
  • 支持灵活的主题和样式定制,使得图形能够轻松适应不同的可视化需求。

Seaborn 是一个功能强大的数据可视化工具,适合用于快速、精美的图表绘制,特别是在进行数据探索和分析时,它的高级功能可以大大提升工作效率。通过实践这些技巧和功能,你将能够熟练掌握数据可视化的技巧,并更好地理解数据中的潜在模式和关系。

参考文献

  • Seaborn 官方文档
  • Seaborn 入门教程 - 数据可视化
  • Python Data Science Handbook(在线版)
  • Seaborn 示例图库
  • Kaggle Seaborn 入门教程
  • Python 数据可视化教程(YouTube)
  • Medium Seaborn 相关文章
  • Real Python Seaborn 教程

希望这些内容能够帮助你在数据科学和可视化领域取得更好的进展!


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/491387.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

某药业数据中心与重工集团灾备中心SAP监测实战应用

在当今数字化转型的浪潮中,企业的IT系统承载着前所未有的业务压力。作为业务运营的核心支撑,SAP系统的稳定性和性能优化成为运维团队关注的重点。本文将结合两个实际案例——某药业集团数据中心(以下简称“药业数据中心”)与某重工…

Qt编译MySQL数据库驱动

目录 Qt编译MySQL数据库驱动 测试程序 Qt编译MySQL数据库驱动 (1)先找到MySQL安装路径以及Qt安装路径 C:\Program Files\MySQL\MySQL Server 8.0 D:\qt\5.12.12 (2)在D:\qt\5.12.12\Src\qtbase\src\plugins\sqldrivers\mysql下…

开发布局总结

线性布局 (Row/Column) 概述: 线性容器Row和Column构建。线性布局是其他布局的基础,其子元素在线性方向上(水平方向和垂直方向)依次排列。线性布局的排列方向由所选容器组件决定,Column容器内子元素按照垂直方向排列…

网络数据包分析

Target 实践内容:使用 Wireshark 捕获和分析网络流量。 涉及知识点:Wireshark 基本使用、数据包结构、理解网络协议分析、网络流量分析。 Trial Wireshark使用WinPCAP作为接口,直接与网卡进行数据报文交换。 Wireshark基本使用 勾选 WLA…

游戏引擎学习第45天

仓库: https://gitee.com/mrxiao_com/2d_game 回顾 我们刚刚开始研究运动方程,展示了如何处理当人物遇到障碍物时的情况。有一种版本是角色会从障碍物上反弹,而另一版本是角色会完全停下来。这种方式感觉不太自然,因为在游戏中,…

微知-C语言如何指定弱符号?(#define WEAK __attribute__((weak)); WEAK int foo(void))

背景 在C语言中,弱符号是一种特殊的符号,它可以被重定义,但在链接时,只会使用被重定义的符号。 在某些情况下,我们需要在多个文件中定义相同的函数,但只使用其中一个函数。本文将介绍如何在C语言中实现弱符…

windos系统安装-mysql 5.7 zip压缩包教程

一, 安装包下载 在mysql官网上下载mysql5.7版本的压缩包 官方网址: https://dev.mysql.com/downloads/mysql/5.7.html#downloads选择历史版本 选择系统和数据库版本下载 下载完成后解压到安装的目录 二, 新增数据目录,配置文件, 配置环境变量 新建data文件夹用于存放数据库…

Tengine 搭建手册

简介 官网: tengine.taobao.org/ Tengine是由[淘宝](http://en.wikipedia.org/wiki/Taobao)发起的Web服务器项目。它在[Nginx](https://nginx.org/)的基础上,针对大访问量网站的需求,添加了很多高级功能和特性。Tengine的性能和稳定性已经在…

MybatisPlus-配置加密

配置加密 目前配置文件中的很多参数都是明文,如果开发人员发生流动,很容易导致敏感信息的泄露。所以MybatisPlus支持配置文件的加密和解密功能。 我们以数据库的用户名和密码为例。 生成秘钥 首先,我们利用AES工具生成一个随机秘钥&#…

【机器学习(五)】分类和回归任务-AdaBoost算法-Sentosa_DSML社区版 (2)11

文章目录 一、算法概念11一、算法原理(一)分类算法基本思路1、训练集和权重初始化2、弱分类器的加权误差3、弱分类器的权重4、Adaboost 分类损失函数5、样本权重更新6、AdaBoost 的强分类器 (二)回归算法基本思路1、最大误差的计算…

前端入门之VUE--ajax、vuex、router,最后的前端总结

前言 VUE是前端用的最多的框架;这篇文章是本人大一上学习前端的笔记;欢迎点赞 收藏 关注,本人将会持续更新。本人不是学前端的,这个是大一的时候上学的和做的笔记,那个时候学的也蒙,故这里对前端做一个总…

GB28181系列三:GB28181流媒体服务器ZLMediaKit

我的音视频/流媒体开源项目(github) GB28181系列目录 目录 一、ZLMediaKit介绍 二、 ZLMediaKit安装、运行(Ubuntu) 1、安装 2、运行 3、配置 三、ZLMediaKit使用 一、ZLMediaKit介绍 ZLMediaKit是一个基于C11的高性能运营级流媒体服务框架,项目地址&#xf…

人工智能增强的音频和聊天协作服务

论文标题:AI-enabled Audio and Chat Collaboration Services 中文标题:人工智能增强的音频和聊天协作服务 作者信息: Emil P. Andersen, Norwegian Defence Research Establishment (FFI), Kjeller, NorwayJesper R. Goksr, Sindre E. Ha…

构建树莓派温湿度监测系统:从硬件到软件的完整指南

✅作者简介:2022年博客新星 第八。热爱国学的Java后端开发者,修心和技术同步精进。 🍎个人主页:Java Fans的博客 🍊个人信条:不迁怒,不贰过。小知识,大智慧。 💞当前专栏…

企业内训|阅读行业产品运营实战训练营-某运营商数字娱乐公司

近日,TsingtaoAI公司为某运营商旗下数字娱乐公司组织的“阅读行业产品运营实战训练营”在杭州落下帷幕。此次训练营由TsingtaoAI资深互联网产品专家程靖主持。该公司的业务骨干——来自内容、市场、业务、产品与技术等跨部门核心岗位、拥有8-10年实战经验的中坚力量…

vue+node+mysql8.0,详细步骤及报错解决方案

1.下载需要安装的插件 下载express npm install express下载cors,用于处理接口跨域问题 npm install cors下载mysql npm install mysql 2.配置服务器 可以在vue项目的src同级创建server文件夹(这里的位置可随意选择) 然后依次创建&#…

C语言刷题(2)

5. 题目描述 KIKG今年5岁了,已经能够认识100以内的非负整数,并且并目能够 进行 100 以内的非负整数的加法计算,不过,老师发现KIK在进行大于等于100的正整数的计算时,规则如下: 1.只保留该数的最后两位,例…

360智脑张向征:共建可信可控AI生态 应对大模型安全挑战

发布 | 大力财经 人工智能的加速发展,有力推动了社会的数智化转型;与此同时,带来的相关安全风险也日益凸显。近日,在北京市举办的通明湖人工智能开发与应用大会上,360智脑总裁张向征以“大模型安全研究与实践”为主题&…

相机标定中的相机模型

一、相机标定基本原理 在图像测量过程以及机器视觉应用中,为确定空间物体表面某点的三维几何位置与其在图像中对应点之间的相互关系,必须建立摄像机成像的几何模型,这些几何模型参数就是摄像机参数。在大多数条件下这些参数必须通过实验与计算才能得到&…

【大模型微调学习6】-实战Hugging Face Transformers工具库

【大模型微调学习6】-实战Hugging Face Transformers工具库 实战Hugging Face Transformers工具库1.Hugging Face Transformers 库是什么?2.HF Transformers 核心模块学习:Pipelines(1)如何下载hugging face的数据集和模型权重&am…