微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Seaborn FacetGrid包括用于删除级别的空列/行

如何解决Seaborn FacetGrid包括用于删除级别的空列/行

我正在使用内置的Seaborn数据集钻石基于'cut'和'color'建立FacetGrid。但是,我首先要删除颜色“ D”和“ E”以及剪切的“公平”,以期产生5x5的网格。

我的代码是:

diamonds = sns.load_dataset("diamonds")
diamonds = diamonds[(~diamonds.color.isin(["D","E"])) & (diamonds.cut!="Fair")]
p2 = sns.FacetGrid(diamonds,row="cut",col="color")
p2 = p2.map(plt.scatter,"price","carat")

当我在Jupyter笔记本中运行此程序时,仍然在网格上有两列分别表示“ D”和“ E”,而另一列表示“ Fair”,但是与这两列和一行关联的所有构面都是空的。 See image

我的问题是,如何删除这些空面?我不了解FacetGrid如何知道这些级别仍然存在,因为在调用FacetGrid()方法之前已将它们删除

谢谢!

解决方法

之所以以空面作为结束,是因为“颜色”和“切割”是分类序列。要完全删除这些类别,您可以按需分配数据的子集,然后用.cat.remove_unused_categories()覆盖这些类别的列以删除这些值的任何痕迹。

import seaborn as sns
import matplotlib.pyplot as plt

diamonds = sns.load_dataset("diamonds")

diamonds = diamonds[(~diamonds.color.isin(["D","E"])) & (diamonds.cut!="Fair")]
diamonds["color"] = diamonds["color"].cat.remove_unused_categories()
diamonds["cut"] = diamonds["cut"].cat.remove_unused_categories()

p2 = sns.FacetGrid(diamonds,row="cut",col="color")
p2.map_dataframe(plt.scatter,"price","carat")

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。