Python Pandas – 使用 Seaborn 按分类变量分组绘制垂直箱线图
在数据分析和可视化领域,Pandas 是一个非常流行的 Python 库,它可以帮助我们轻松地处理和分析数据。而 Seaborn 是一个基于 Matplotlib 的高层封装库,它提供了一种更简单的方法来绘制各种统计图表。在这篇文章中,我们将一起探讨如何使用 Seaborn 来按分类变量分组绘制垂直箱线图。
目录
- 准备工作
- 生成数据
- 绘制垂直箱线图
- 添加标签和标题
- 参考文献
- 结论
准备工作
在这篇文章中,我们将使用 Pandas 和 Seaborn 来处理和可视化数据。因此,我们首先需要导入这两个库。
import pandas as pd
import seaborn as sns
生成数据
为了更好地说明如何按分类变量分组绘制垂直箱线图,我们需要生成一些示例数据。假设我们正在研究男女生在数学和科学中的平均分数。我们可以使用以下代码生成一个包含两个分类变量和两个连续变量的 Pandas 数据框。
import numpy as np
# 随机生成数据
np.random.seed(123)
n = 50
gender = np.random.choice(["男", "女"], n)
course = np.random.choice(["数学", "科学"], n)
score = np.round(np.random.normal(70, 10, n), decimals=1)
# 数据框
df = pd.DataFrame({"gender": gender, "course": course, "score": score})
生成的数据框如下所示:
| gender | course | score |
|:------:|:------:|:-----:|
| 女 | 数学 | 77.5 |
| 男 | 数学 | 70.2 |
| 女 | 科学 | 70.1 |
| 女 | 科学 | 78.4 |
| 男 | 科学 | 55.4 |
| 女 | 数学 | 68.1 |
| 女 | 科学 | 72.2 |
| 男 | 科学 | 56.6 |
| 女 | 数学 | 79.1 |
| 男 | 数学 | 68.8 |
| ... | ... | ... |
绘制垂直箱线图
现在,我们已经有了一个包含所需数据的 Pandas 数据框,接下来将数据框传入 Seaborn 的 boxplot()
函数中,即可绘制垂直箱线图。
sns.boxplot(x="course", y="score", hue="gender", data=df)
上述代码中的 x
参数表示分类变量在 x 轴上的位置,y
参数表示连续变量在 y 轴上的位置,hue
参数表示分类变量中的子类别,我们希望它们的颜色不一样。最后,我们需要将 Pandas 数据框传递给 data
参数。
运行上述代码,将生成如下图所示的垂直箱线图。其中,每个箱子表示一个分类变量,箱子的高度和宽度分别表示这个分类变量的中位数和四分位范围,箱子中的线表示中位数,箱子上下的线条表示上下四分位数,开口朝上的短线表示数据中最大的非异常值,开口朝下的短线表示数据中最小的非异常值,而圆圈表示异常值。通过这样的可视化方式,我们可以直观地了解不同分类变量的分布情况,以及是否存在异常值。
添加标签和标题
为了让图表更具可读性,我们可以添加标签和标题。在 Seaborn 中,可以使用 xlabel()
、ylabel()
和 title()
函数来添加 X 轴标签、Y 轴标签和图表标题。
import matplotlib.pyplot as plt
# 添加标签和标题
plt.xlabel("课程")
plt.ylabel("分数")
plt.title("男女生的数学和科学成绩分布情况")
参考文献
结论
在本文中,我们学习了如何使用 Seaborn 和 Pandas 来按分类变量分组绘制垂直箱线图。通过生成和可视化一个示例数据集,我们展示了如何使用 Seaborn 中的 boxplot()
函数来生成垂直箱线图。我们还探讨了如何添加标签和标题以提高图表的可读性。这些技术是数据科学中的关键知识点,可以帮助我们更好地理解数据并做出更准确的结论。