Python 数据可视化:Seaborn 库使用指南
简介
Seaborn 是基于 Matplotlib 的 Python 数据可视化库。它在 Matplotlib 的基础上进行了更高级的 API 封装,使得用户可以更加简便地创建具有吸引力的统计图表。Seaborn 高度兼容 NumPy 和 Pandas 数据结构,并支持 SciPy 与 Statsmodels 等统计模式,是数据分析中不可或缺的工具。
安装与环境配置
使用 pip 安装 Seaborn:
pip install seaborn
或者使用 conda:
conda install seaborn
在代码中导入必要的库并设置显示环境:
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
# 设置主题样式
sns.set_theme(style="whitegrid")
# 设置中文字体以防乱码
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
API 基本形式
Seaborn 的绘图函数主要针对 Pandas 的 DataFrame 或 NumPy 数组,常见调用形式如下:
sns.图名 (x='X 轴列名', y='Y 轴列名', data=df)sns.图名 (x='X 轴列名', y='Y 轴列名', hue='分组参数', data=df)sns.图名 (x=np.array, y=np.array)
常用图表绘制详解
1. 散点图 (Scatter Plot)
散点图用于表现两个变量之间的关系。每个点代表数据集中的一个观察值。使用 relplot() 生成。
# 示例:员工人均薪酬 vs 高管平均薪酬
g = sns.relplot(
x='员工人均薪酬',
y='高管平均薪酬',
hue='申万一级行业',
data=df,
kind='scatter'
)
参数说明:
x,y: 坐标轴数据列名。hue: 通过颜色区分不同类别(如行业)。data: 数据源 DataFrame。
2. 箱线图 (Box Plot)
箱线图展示数据的分布情况,包括上边缘、下边缘、中位数和四分位数,便于观察离群点。使用 catplot(kind='box') 生成。
sns.catplot(
x='申万一级行业',
y='员工人均薪酬',
kind='box',
data=df
)
参数说明:
kind: 指定图表类型,此处为 'box'。orient: 控制方向,'h' 为横向,'v' 为纵向。
3. 小提琴图 (Violin Plot)
结合箱形图和密度图特征,显示数据分布形状。中间的粗条表示四分位数范围,白点为中位数。
sns.catplot(
x='申万一级行业',
y='员工人均薪酬',
kind='violin',
data=df,
split=True,
hue='上市年份'
)
参数说明:
split: 若为 True,可将同一类别的数据按另一维度拆分到两侧。hue: 进一步细分颜色。
4. 双变量密度估计图 (Joint Plot)
展现单个变量的分布及双变量之间的关系。使用 jointplot()。
sns.jointplot(
x='员工人均薪酬',
y='高管人均薪酬',
data=df,
kind='hex' # 也可选 'scatter', 'kde'
)
参数说明:
kind: 外围单变量分布表现形式,如直方图 ('hist') 或核密度估计 ('kde')。
5. 热力图 (Heatmap)
展现多变量之间的相关系数矩阵。使用 heatmap()。
corr = df.corr()
sns.heatmap(
corr,
annot=True,
cmap='coolwarm',
vmin=-1,
vmax=1,
square=True
)
参数说明:
annot: 是否显示数值。cmap: 颜色映射方案。square: 单元格是否为正方形。
6. 矩阵散点图 (Pair Plot)
展现多个变量两两之间的散点图及自身分布规律。使用 pairplot()。
sns.pairplot(
df,
diag_kind='kde',
markers=['o', 's', 'D'],
plot_kws={'alpha': 0.6}
)
参数说明:
diag_kind: 对角线分布类型,如直方图 ('hist') 或密度图 ('kde')。markers: 散点形状。
7. 单变量密度估计图 (KDE Plot)
反映变量自身的分布规律。使用 kdeplot()。
sns.kdeplot(
data=df,
x='员工人均薪酬',
shade=True,
alpha=0.5,
color='blue'
)
参数说明:
shade: 是否填充阴影。alpha: 透明度。
进阶技巧:样式定制与保存
Seaborn 允许用户自定义全局样式,以便保持报告的一致性。
# 设置调色板
sns.set_palette("husl")
# 保存图像
plt.savefig('output.png', dpi=300, bbox_inches='tight')
此外,可以通过 color_palette 获取特定颜色的列表,用于手动指定颜色。对于复杂的布局,可以使用 FacetGrid 进行分面绘图,将数据按多个维度切分展示。
总结
Seaborn 提供了丰富的统计图表接口,能够极大地简化数据可视化的流程。通过合理组合上述图表,可以深入分析数据特征、发现异常值及变量间的相关性。在实际项目中,建议结合业务背景选择合适的图表类型,并利用 set_theme 统一视觉风格,确保报告的专业性与可读性。


