Pandas 和Seaborn中的多个箱线图绘制

Pandas 和Seaborn中的多个箱线图绘制

在本文中,我们将介绍如何使用Pandas和Seaborn在数据集中绘制多个箱线图。箱线图是一个常用的可视化工具,用于表示数据的分布情况和离群值情况。

阅读更多:Pandas 教程

准备数据

首先,我们需要导入所需的库和数据。本文中使用的是Seaborn中的内置数据集:tips

import seaborn as sns
import pandas as pd

tips = sns.load_dataset('tips')

我们可以通过调用数据集的head()方法来查看数据集的前几行。

tips.head()

输出:

   total_bill   tip     sex smoker  day    time  size
0       16.99  1.01  Female     No  Sun  Dinner     2
1       10.34  1.66    Male     No  Sun  Dinner     3
2       21.01  3.50    Male     No  Sun  Dinner     3
3       23.68  3.31    Male     No  Sun  Dinner     2
4       24.59  3.61  Female     No  Sun  Dinner     4

接下来,我们需要将数据按照不同的分组方式进行分组,并计算出每个组的统计数据。本文中,我们将使用餐厅顾客总账单金额(total_bill)和顾客人数(size)进行分组。

grouped = tips.groupby(['total_bill', 'size'])['tip'].median().reset_index()
grouped.head()

输出:

   total_bill  size   tip
0        3.07     1  1.00
1        5.75     2  1.00
2        7.25     1  1.00
3        7.51     2  2.00
4        7.56     2  1.44

单个箱线图

在进行多个箱线图绘制之前,我们先来了解如何绘制单个箱线图。我们可以使用Seaborn中的boxplot()函数来绘制箱线图。

sns.boxplot(x = "size", y = "tip", data = grouped)

可以看出,顾客人数(size)对给出小费(tip)的中位数有一定影响,人数越多,中位数也越高。

多个箱线图

接下来,我们将介绍如何在同一图中绘制多个箱线图,在这里,我们选择将绘制不同人数下给出小费数额(tip)的箱线图。

我们可以使用Pandas中的pivot()方法将数据转换为正确的格式。具体而言,我们将使用total_billsize作为行和列索引,tip作为值。

pivoted = grouped.pivot(index='total_bill', columns='size', values='tip')
pivoted.head()

输出:

size         1     2    3     4
total_bill                     
3.07       1.0   NaN  NaN   NaN
5.75       NaN  1.00  NaN   NaN
7.25       1.0   NaN  NaN   NaN
7.51       NaN  2.00  NaN   NaN
7.56       NaN  1.44  NaN  1.51

接下来,我们可以使用Seaborn中的heatmap()函数来绘制热力图。

sns.heatmap(pivoted, cmap='coolwarm', annot=True, fmt='.2f')

可以看出,给出小费的中位数在不同的人数下有很大的差异,例如两个人用餐时中位数明显低于四人和六人用餐时。

接下来,我们使用Seaborn中的boxplot()函数来绘制多个箱线图。

sns.boxplot(data=grouped, x="size", y="tip", hue="total_bill")

可以看出,不同账单金额(total_bill)下给出小费的中位数也有很大的差异,可以看作是另一维度的分组。

总结

本文介绍了如何使用Pandas和Seaborn在数据集中绘制多个箱线图。通过观察和比较不同分组下的中位数,我们可以更好地理解数据分布情况和离群值情况。同时,我们还演示了如何在同一图中绘制多个箱线图,以探索另一维度上的分组关系。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程