跳转至

Seaborn 教程

Seaborn 教程详解

Seaborn 是一个基于 Matplotlib 的 Python 可视化库,专注于使数据可视化更简单和美观。它内置了丰富的图表类型,并且与 PandasNumPy 数据结构兼容,适用于统计数据的探索性分析。

1. 安装 Seaborn

在开始使用 Seaborn 之前,你需要先安装它:

pip install seaborn

2. Seaborn 的基本使用

要开始使用 Seaborn,首先需要导入库,并加载示例数据集。Seaborn 提供了一些内置的数据集,方便你练习和测试。

import seaborn as sns
import matplotlib.pyplot as plt

# 加载示例数据集
tips = sns.load_dataset("tips")

# 显示数据集的前几行
print(tips.head())

3. 常见图表类型

3.1 直方图(Histogram)

直方图用于展示数据分布情况。

sns.histplot(tips['total_bill'], kde=True)
plt.show()

在这个例子中,kde=True 表示在直方图上叠加一个核密度估计曲线,用于平滑显示数据分布。

3.2 散点图(Scatter Plot)

散点图用于显示两个变量之间的关系。

sns.scatterplot(x='total_bill', y='tip', data=tips)
plt.show()

你还可以通过添加色彩维度来展示第三个变量:

sns.scatterplot(x='total_bill', y='tip', hue='time', data=tips)
plt.show()
3.3 箱线图(Box Plot)

箱线图用于展示数据的分布情况,包括中位数、四分位数和异常值。

sns.boxplot(x='day', y='total_bill', data=tips)
plt.show()
3.4 小提琴图(Violin Plot)

小提琴图结合了箱线图和密度图,适用于展示数据分布的形态。

sns.violinplot(x='day', y='total_bill', hue='sex', data=tips, split=True)
plt.show()
3.5 热力图(Heatmap)

热力图用于显示矩阵数据或变量之间的相关性。

# 计算相关性矩阵
corr = tips.corr()

# 显示热力图
sns.heatmap(corr, annot=True, cmap='coolwarm')
plt.show()
3.6 成对关系图(Pair Plot)

成对关系图用于显示数据集中所有变量之间的两两关系。

sns.pairplot(tips, hue='sex')
plt.show()

4. Seaborn 高级功能

4.1 FacetGrid

FacetGrid 是 Seaborn 的一个强大功能,允许你根据不同类别将数据分成多个子集,并在每个子集上绘制相同的图表。

g = sns.FacetGrid(tips, col='sex', row='time')
g.map(sns.histplot, 'total_bill')
plt.show()
4.2 条形图(Bar Plot)

条形图用于展示分类变量的汇总信息(如均值、总和等)。

sns.barplot(x='day', y='total_bill', hue='sex', data=tips)
plt.show()
4.3 回归图(Regression Plot)

回归图用于显示两个变量之间的线性关系。

sns.lmplot(x='total_bill', y='tip', data=tips)
plt.show()

5. 自定义 Seaborn 图表

你可以通过设置主题、调色板等方式自定义 Seaborn 图表的样式。

5.1 设置主题

Seaborn 提供了几种不同的主题,你可以通过 set_theme 来更改主题。

sns.set_theme(style="darkgrid")
sns.histplot(tips['total_bill'])
plt.show()
5.2 调色板

你可以使用 color_palette 来设置图表的调色板。

sns.set_palette("Set2")
sns.boxplot(x='day', y='total_bill', data=tips)
plt.show()
5.3 自定义图表尺寸

通过 matplotlibfigure 函数可以自定义图表的尺寸。

plt.figure(figsize=(10, 6))
sns.violinplot(x='day', y='total_bill', data=tips)
plt.show()

6. 与 Pandas 的结合

SeabornPandas 无缝集成,允许你直接在 PandasDataFrame 上使用 Seaborn 的功能。

# 使用 Pandas 直接绘图
tips.groupby('day')['total_bill'].sum().plot(kind='bar')
plt.show()

你还可以将 Seaborn 图表嵌入到 PandasDataFrame 中:

sns.set_theme(style="whitegrid")
ax = sns.boxplot(x='day', y='total_bill', data=tips)
ax.set(title="Total Bill Distribution by Day")
plt.show()

7. 总结

Seaborn 是一个强大的数据可视化工具,适合进行统计数据分析。它提供了丰富的图表类型、简洁的语法和强大的定制功能,使得数据可视化变得更加容易和高效。在掌握 Seaborn 后,你可以轻松创建各种复杂的图表,深入探索和展示数据。