Seaborn 入门指南:让统计数据可视化更优雅

Seaborn 入门指南:让统计数据可视化更优雅

做数据分析时,Matplotlib 能画图,但默认样式偏"朴素",画统计图表还得手写大量样式代码。Seaborn 正是建立在 Matplotlib 之上的统计可视化库,用更少的代码画出更美观、信息更丰富的图。本文带你从安装到实战,快速上手 Seaborn。

一、环境准备

Seaborn 依赖 NumPy、Pandas 和 Matplotlib,建议用虚拟环境安装:

bash 复制代码
pip install seaborn
# 验证
python -c "import seaborn as sns; print(sns.__version__)"

要求 Python 3.8+。若只需画图不显示,建议在脚本开头加 import matplotlib; matplotlib.use("Agg")。

二、最小可运行示例

先画一张最基础的柱状图,感受 Seaborn 的简洁:

python 复制代码
import seaborn as sns
import matplotlib.pyplot as plt

# 内置示例数据集
tips = sns.load_dataset("tips")

# 按星期统计总消费
sns.barplot(data=tips, x="day", y="total_bill", estimator=sum)
plt.title("各星期总消费")
plt.show()

几行代码就得到带配色、坐标网格的统计柱图,比纯 Matplotlib 省心很多。

三、核心概念

Seaborn 有三个最常用的"图级函数"(figure-level),它们会返回 FacetGrid,方便后续分面:

  • sns.relplot:关系图(散点 / 折线),看变量间关系。
  • sns.displot:分布图(直方图 / 核密度),看数据分布。
  • sns.catplot:分类图(柱图 / 箱线 / 小提琴),看分类维度对比。

统一传入 data= + x=/y=,并可用 hue= 按某列上色、col= 分面成多子图。

四、进阶用法

用 hue 上色、col 分面,一张图看清多个维度:

python 复制代码
sns.relplot(
    data=tips,
    x="total_bill", y="tip",
    hue="smoker",          # 按是否吸烟上色
    col="time",            # 按午/晚分两列
    kind="scatter"
)
plt.show()

样式主题一键切换:sns.set_theme(style="whitegrid", palette="muted"),常用 style 有 darkgrid/whitegrid/ticks。

五、实战场景:分析小费分布

用箱线图 + 小提琴图对比不同用餐时间的小费分布:

python 复制代码
import seaborn as sns
import matplotlib.pyplot as plt

tips = sns.load_dataset("tips")

fig, ax = plt.subplots(1, 2, figsize=(12, 5))
sns.boxplot(data=tips, x="day", y="tip", ax=ax[0])
sns.violinplot(data=tips, x="day", y="tip", ax=ax[1])
ax[0].set_title("箱线图"); ax[1].set_title("小提琴图")
plt.tight_layout(); plt.show()

小提琴图能同时看出分布密度与四分位,比纯箱线图信息量更大,适合写进分析报告。

六、常见坑 / 报错

1. ModuleNotFoundError: No module named 'scipy' 部分统计函数(如 sns.kdeplot)依赖 scipy。解决:pip install scipy。

2. FutureWarning: use_inf / estimator 参数变更 新版本 Seaborn 默认 estimator="mean",老教程写 estimator=sum 会警告。明确传入目标聚合函数即可,或用 sns.barplot(..., errorbar="sd") 替代旧 ci= 参数。

3. 中文乱码 Matplotlib 默认不含中文字体。解决:

python 复制代码
plt.rcParams["font.sans-serif"] = ["SimHei"]   # Windows
plt.rcParams["axes.unicode_minus"] = False

七、总结与下一步

Seaborn 用"图级函数 + hue/col"的范式,把统计可视化的代码量降到最低。建议下一步:

  • 用 sns.pairplot 做多变量两两关系探索;
  • 结合 sns.heatmap 画相关系数矩阵;
  • 学习 sns.lmplot 做回归拟合可视化。

掌握这些,你的数据分析报告将又快又好看。

相关推荐
小小张说故事1 小时前
Transformers 入门指南:用 Python 调用预训练大模型
python·机器学习
小小张说故事1 小时前
FastAPI 入门指南:用 Python 极速构建 API
python·机器学习
小小张说故事1 小时前
pytest 入门指南:Python 自动化测试的标配工具
python·机器学习
用户8356290780511 小时前
使用 Python 在 Excel 中添加和管理图片
后端·python
用户3169353811831 小时前
SQLAlchemy 的两套 API
python
伞伞悦读1 小时前
【第45期】一行 eval 做计算器的代价:Python 输入校验和可测试的猜数字
python
用户8356290780511 小时前
Python 设置 Excel 单元格边框与样式
后端·python
10年前端老司机1 小时前
LLM降本提速三档对比:无缓存、普通缓存、语义缓存(LangChain生产落地)
人工智能·python·langchain
用户298698530141 小时前
Python 文档格式转换实战:RTF 转 PDF 与 HTML
python·html·api