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

打印 上一主题 下一主题

主题 1000|帖子 1000|积分 3010

引言

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

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


  • 自动化计算统计量:Seaborn 会自动计算数据的统计特性(如均值、方差、分位数等),并将其图形化。
  • 美观的默认样式:与 Matplotlib 相比,Seaborn 的默认样式更具现代感和美观。
  • 简洁的语法:Seaborn 提供了简洁的 API,可以通过少量代码完成复杂的绘图使命。
Seaborn 常常用于探索性数据分析(EDA),资助我们理解数据的结构、趋势、分布等。
二、安装 Seaborn

在利用 Seaborn 之前,你需要安装它。你可以通过 Python 的包管理工具 pip 安装 Seaborn:
  1. pip install seaborn
复制代码
安装后,你就可以在 Python 环境中导入 Seaborn,开始利用其丰富的可视化功能。
在利用 Seaborn 时,我们可以通过以下方式导入库:
  1. import seaborn as sns
复制代码
seaborn 是用于数据可视化的高级接口,它基于 Matplotlib,通常利用 sns 作为别名来调用险些全部的绘图下令。
三、Seaborn 的根本图形

Seaborn 提供了多种常见的统计图形,包罗散点图、线图、条形图、箱型图、热力图等。每种图形都能够资助我们从不同角度理解数据的特性和关系。为了能够顺利地绘制这些图形,我们需要进行一些前期预备,包罗导入库、加载数据集等。为了演示,我们将利用Seaborn自带的 “tips” 数据集。这个数据集包含餐厅账单和小费的相关信息,如账单总额、小费金额、就餐时间、性别、吸烟环境等。通过加载这些数据,我们可以为接下来的可视化步调预备好数据。
示例代码
  1. # 导入必要的库import seaborn as sns
  2. 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() 查看数据的前几行,了解其结构。比方:
  1.    total_bill   tip     sex smoker   day    time  size
  2. 0      16.99  1.01    Female     No  Sun  Dinner     2
  3. 1      10.34  1.66      Male     No  Sun  Dinner     3
  4. 2      21.01  3.50      Male     No  Sun  Dinner     3
  5. 3      23.68  3.31    Female     No  Sun  Dinner     2
  6. 4      24.59  3.61      Male     No  Sun  Dinner     4
复制代码
完成这些预备工作后,我们就可以开始利用Seaborn绘制各种类型的统计图形,资助我们更好地理解数据。
3.1 散点图(Scatter Plot)

散点图用于展示两个变量之间的关系,适用于一连型数据,常用于观察两个变量是否存在某种关联或趋势。
示例代码:
  1. sns.scatterplot(x="total_bill", y="tip", data=tips)
  2. plt.title('Total Bill vs Tip')
  3. plt.show()
复制代码
代码阐明:


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

3.2 线图(Line Plot)

线图通常用于展示数据随时间的变化趋势,或者两个一连变量之间的关系。Seaborn 的 lineplot() 函数支持绘制带有误差条的线图,以便于更好地理解数据的波动性。
示例代码:
  1. sns.lineplot(x="day", y="total_bill", data=tips, hue="sex")
  2. plt.title('Line Plot Example')
  3. plt.show()
复制代码
代码阐明:


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

3.3 条形图(Bar Plot)

条形图用于比较不同类别之间的数值巨细,适用于分类数据。Seaborn 的 barplot() 函数会自动计算每个类别的均值,并绘制出相应的条形图。
示例代码:
  1. sns.barplot(x="day", y="total_bill", data=tips)
  2. plt.title('Bar Plot Example')
  3. plt.show()
复制代码
代码阐明:


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

3.4 箱型图(Box Plot)

箱型图用于表现数据的分布环境,包罗数据的中位数、四分位数、极值和异常值。它能够资助我们快速了解数据的集中趋势和离散程度。
示例代码:
  1. sns.boxplot(x="day", y="total_bill", data=tips)
  2. plt.title('Box Plot Example')
  3. plt.show()
复制代码
代码阐明:


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

3.5 小提琴图(Violin Plot)

小提琴图联合了箱型图和密度图,展示了数据的分布环境,同时表现了每个类别数据的密度,能够资助我们更好地理解数据的形态。
示例代码:
  1. sns.violinplot(x="day", y="total_bill", data=tips)
  2. plt.title('Violin Plot Example')
  3. plt.show()
复制代码
代码阐明:


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

3.6 热力图(Heatmap)

热力图通常用于表示矩阵数据,其中每个单元格的数值通过颜色深浅来表示。Seaborn 的 heatmap() 函数非常适适用于展示相关性矩阵、数据表格等。
示例代码:
  1. # 加载Seaborn自带的"flights"数据集
  2. flights = sns.load_dataset("flights")
  3. # 透视数据:根据月份和年份对乘客数进行聚合
  4. flights_pivot = flights.pivot_table(index="month", columns="year", values="passengers")
  5. sns.heatmap(flights_pivot, cmap="YlGnBu", annot=True, fmt=".0f")
  6. plt.title('Heatmap Example')
  7. 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:带有坐标轴刻度线的简单背景。
示例代码:
  1. sns.set_theme(style="darkgrid")
  2. sns.scatterplot(x="total_bill", y="tip", data=tips)
  3. plt.title('Scatter Plot with Dark Grid Theme')
  4. plt.show()
复制代码
效果图:

五、Seaborn 与 Matplotlib 联合利用

Seaborn 是创建在 Matplotlib 之上的,意味着你可以在 Seaborn 绘图底子上利用 Matplotlib 来进一步定制图形。比如,你可以利用 Matplotlib 修改图形的标题、坐标轴标签、字体等。
示例代码:
  1. sns.scatterplot(x="total_bill", y="tip", data=tips)
  2. plt.title('Custom Title using Matplotlib')
  3. plt.xlabel('Total Bill')
  4. plt.ylabel('Tip Amount')
  5. plt.show()
复制代码
效果图:
六、Seaborn 绘图流程图

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

  • 预备数据:起首加载需要绘图的数据集,或整理好数据。
  • 选择合适的图形类型:根据数据的特点(如一连性、离散性等)选择合适的图形类型,如散点图、箱型图、热图等。
  • 绘制图形:调用 Seaborn 的绘图函数(比方 sns.scatterplot()、sns.boxplot())。
  • 自定义图形:可以设置图形的标题、轴标签、颜色、字体等以加强图形的可读性。
  • 展示图形:末了利用 plt.show() 展示图形。
七、Seaborn 中的高级功能

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

Seaborn 提供了 FacetGrid 类,可以资助我们根据某些类别变量将数据拆分并绘制多个子图。这非常适适用于探索数据的不同子集或者对不同类别的可视化。
示例代码:
  1. g = sns.FacetGrid(tips, col="sex", row="time")
  2. g.map(sns.scatterplot, "total_bill", "tip")
  3. plt.show()
复制代码
代码阐明:


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

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

Seaborn 提供的 pairplot() 函数非常适适用于查看数据集中多个变量之间的关系,并且它能自动绘制每对变量之间的散点图以及每个变量的分布图。
示例代码:
  1. sns.pairplot(tips)
  2. plt.show()
复制代码
代码阐明:


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

7.3 调整子图巨细与布局

Seaborn 的图形布局非常机动,你可以通过 plt.subplots() 共同 Seaborn 来创建自定义的图形布局。比方,绘制多个条形图或散点图时,你可能渴望将它们放在一个网格中。
示例代码:
  1. fig, axes = plt.subplots(2, 2, figsize=(10, 8))
  2. sns.barplot(x="day", y="total_bill", data=tips, ax=axes[0, 0])
  3. sns.lineplot(x="day", y="total_bill", data=tips, ax=axes[0, 1])
  4. sns.boxplot(x="day", y="total_bill", data=tips, ax=axes[1, 0])
  5. sns.heatmap(flights_pivot, ax=axes[1, 1], cmap="YlGnBu", annot=True, fmt=".0f")
  6. plt.tight_layout()
  7. 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 绘制时间序列图。
示例代码:
  1. import pandas as pd
  2. import numpy as np
  3. # 创建一个示例 DataFrame
  4. data = {
  5.     "Date": pd.date_range("2021-01-01", periods=100, freq="D"),
  6.     "Sales": np.random.rand(100) * 1000
  7. }
  8. df = pd.DataFrame(data)
  9. # 使用 Seaborn 绘制时间序列图
  10. sns.lineplot(x="Date", y="Sales", data=df)
  11. plt.title("Sales Over Time")
  12. plt.show()
复制代码
代码阐明:


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

8.2 利用 Pandas 进行数据汇总

Seaborn 和 Pandas 的联合使得在可视化之前对数据进行聚合和分组变得非常简单。比方,可以通过 groupby() 对数据进行分组并计算统计量,之后将这些数据传递给 Seaborn 绘图。
示例代码:
  1. # 按“day”分组,并计算每组的总账单均值
  2. grouped_data = tips.groupby("day")["total_bill"].mean().reset_index()
  3. # 绘制条形图
  4. sns.barplot(x="day", y="total_bill", data=grouped_data)
  5. plt.title("Average Total Bill by Day")
  6. plt.show()
复制代码
代码阐明:


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

九、Seaborn 中的统计功能

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

Seaborn 提供了 regplot() 函数,可以通过最小二乘法绘制数据的回归线。它不仅绘制数据点,还管帐算并绘制拟合的回归线,适用于展示两个变量之间的线性关系。
示例代码:
  1. sns.regplot(x="total_bill", y="tip", data=tips)
  2. plt.title("Regression Plot")
  3. plt.show()
复制代码
代码阐明:


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

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

Seaborn 还支持为回归线添加置信区间(Confidence Interval, CI),通常通过填充回归线附近的阴影区域来表示。
示例代码:
  1. sns.regplot(x="total_bill", y="tip", data=tips, ci=95)
  2. plt.title("Regression Plot with Confidence Interval")
  3. 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 教程
渴望这些内容能够资助你在数据科学和可视化范畴取得更好的进展!


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

泉缘泉

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表