如何解决一次使用 Seaborn 为数据集中的所有变量绘制箱线图
我看了很多视频,阅读了 Seaborn 文档,浏览了很多网站,但我仍然没有找到问题的答案。
这是来自 Seaborn 的文档:
iris = sns.load_dataset("iris")
ax = sns.Boxplot(data=iris,orient="h",palette="Set2")
此代码为单个图形中的每个数值变量创建箱线图。
当我尝试添加 Hue="species" 时,ValueError: 不能在没有 hue
和 x
的情况下使用 y
。有没有办法用 Seaborn 做到这一点?我想查看所有数值变量的箱线图并探索一个分类变量。因此该图将显示每个物种的所有数值变量。由于有 3 个物种,因此箱线图的总数将为 12 个(3 个物种乘以 4 个数值变量)。
我正在学习 EDA(探索性数据分析)。我认为上图可以帮助我同时探索许多变量。
感谢您花时间阅读我的问题!
解决方法
要应用“色调”,seaborn 需要 "long" form 中的数据框。 df.melt()
是一个可以在这里提供帮助的 Pandas 函数。它将数字列转换为 2 个新列:一个称为“变量”,带有列的旧名称,另一个称为“值”,带有值。生成的数据帧的长度将是 x=
的 4 倍,y=
可以使用“value”,import seaborn as sns
from matplotlib import pyplot as plt
iris = sns.load_dataset("iris")
iris_long = iris.melt(id_vars=['species'])
ax = sns.boxplot(data=iris_long,x="value",y="variable",orient="h",palette="Set2",hue="species")
plt.tight_layout()
plt.show()
可以使用“variable”。
长格式如下:
物种 | 变量 | 价值 | |
---|---|---|---|
0 | setosa | sepal_length | 5.1 |
1 | setosa | sepal_length | 4.9 |
2 | setosa | sepal_length | 4.7 |
3 | setosa | sepal_length | 4.6 |
4 | setosa | sepal_length | 5.0 |
... | ... | ... |
ajv-formats
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。