我有一个这样的数据框:
Platform Genre Score
PC Action 9
PS Adventure 8.5
Xbox Action 9.5....
数据框很大。我想想象一个热图,它显示x轴上的平台,y上的类型和得分作为值。
所以我试过这个:
abc=games.groupby(['platform','genre'])['score'].mean().reset_index()
abc=abc.pivot('platform','genre','score')
sns.heatmap(abc)
现在的问题是,由于并非所有平台都拥有所有类型的游戏,因此生成的数据帧具有大量 NaN 值。如果我使用 abc.dropna(),则会删除所有行。
那么我该怎么办才能只存在非NaN的相关值?
答案 0 :(得分:0)
正如JoeCondron所说,枢轴是以这种方式给你的,因为它正在创建一个网格。但是,我怀疑你希望它在你的热图中非常清楚,因为如果你创建一个平台X类型网格,那么这些点将会存在 - 只有那个空值。
sns.heatmap已经为你做了,但是默认的值会给你一个蓝盒子,这可能是你不在乎的。查看seaborn docs,然后在底部显示如何屏蔽不需要的数据。
在您的情况下,这应该为您提供"空白"只要你的背景是白色的盒子。这适用于我使用Jupyter Notebook。
mask = abc.isnull()
with sns.axes_style("white"):
sns.heatmap(abc, mask=mask)
plt.show()
据说,如果你有一个更柔和的灰色背景和颜色,它可能更容易在眼睛上。但是,我认为这可以达到你最终想要的效果。