pandas - Seaborn FacetGrid 包括已删除级别的空列/行
问题描述
我正在使用内置的 Seaborn 数据集菱形基于“切割”和“颜色”建立 FacetGrid。但是,我首先删除了颜色“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_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")
推荐阅读
- c - 无法连接到 Twitch IRC 服务器,IP 地址问题,C 语言
- python - 具有自定义持续时间的计时器/倒计时?
- c# - OpenXmlSDK 无法读取手动创建的 xlsx 文件:'指定的包无效。主要部分不见了。
- typescript - 我如何从一个安静且统一的 API 中消费?
- excel - 基于两个标准执行重复
- php - Laravel 查询结果第 1 页正确,但第 2 页不正确,因为第 2 页显示的记录不是期望记录
- design-patterns - Kotlin 中具有泛型类型参数的简单服务定位器
- c# - 实体框架映射到人员对象
- python - 将一个变量分成 3 个变量,然后删除部分文本
- linux - 用于比较不同主机中相同目录的 shell 脚本