Pandas Seaborn FaceGrid,包括删除标高的空列/行

Pandas Seaborn FaceGrid,包括删除标高的空列/行,pandas,seaborn,facet-grid,Pandas,Seaborn,Facet Grid,我正在使用内置的Seaborn数据集钻石,基于“切割”和“颜色”建立FaceGrid。然而,我首先删除了颜色“D”和“E”以及剪切“Fair”,希望得到一个5x5网格 我的密码是: diamonds = sns.load_dataset("diamonds") diamonds = diamonds[(~diamonds.color.isin(["D","E"])) & (diamonds.cut!="Fair&quo

我正在使用内置的Seaborn数据集钻石,基于“切割”和“颜色”建立FaceGrid。然而,我首先删除了颜色“D”和“E”以及剪切“Fair”,希望得到一个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”,仍然在网格上,但是与这两列和一行关联的所有面都是空的。

我的问题是,如何删除这些空的方面?我不明白FacetGrid是如何意识到这些级别仍然存在的,因为我在调用FacetGrid()方法之前删除了它们


谢谢

之所以会出现空的镶嵌面,是因为“颜色”和“切割”是分类系列。要完全删除这些类别,您可以将数据子集,然后用
.cat.remove\u unused\u 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")