使用 seaborn 的单个箱线图中的多列

Posted

技术标签:

【中文标题】使用 seaborn 的单个箱线图中的多列【英文标题】:Multiple column in a single boxplot using seaborn 【发布时间】:2022-01-14 06:45:30 【问题描述】:

关于这个Group by Certain Age Group in Pandas

我正在尝试将它们分组到这样的单个箱线图中。

但我在使用此代码时遇到了问题。

cn = ['AgeUnder18', 'Age19to25', 'Age26to29']
sns.boxplot(x=cn, y='AveMonthSpend', data=df)

错误:

Series 的真值是模棱两可的。使用 a.empty、a.bool()、 a.item()、a.any() 或 a.all()。

【问题讨论】:

【参考方案1】:

您需要将数据框转换为"long form":

import matplotlib.pyplot as plt
import seaborn as sns
import pandas as pd
import numpy as np

cn = ['AgeUnder18', 'Age19to25', 'Age26to29']
df = pd.DataFrame(age_group: np.random.uniform(45, 65, 7) for age_group in cn)
df_melted = df.melt(value_vars=cn, value_name='AveMonthSpend', var_name='Age Bin')
sns.boxplot(y='Age Bin', x='AveMonthSpend', data=df_melted, palette='Greys')
plt.tight_layout()
plt.show()

这假设原始数据框如下所示:

Out[10]: 
   AgeUnder18  Age19to25  Age26to29
0   64.980248  64.673755  56.489776
1   59.858895  48.921889  62.877826
2   62.357871  51.599347  55.651448
3   47.206124  45.817266  52.893839
4   57.627501  51.820863  59.616511
5   61.999523  63.443241  45.919390
6   56.616062  48.353018  46.282314

【讨论】:

以上是关于使用 seaborn 的单个箱线图中的多列的主要内容,如果未能解决你的问题,请参考以下文章

使用 seaborn 或 matplotlib 分组箱线图的数据格式

更改 seaborn 箱线图中的 X 轴标签

当输入是 DataFrame 时在 seaborn 中对箱线图进行分组

基于 DataFrame 列名的颜色 seaborn 箱线图

在seaborn中绘制多个箱线图?

使用色调和不同比例轴的 Seaborn(时间序列)箱线图