Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/313.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何仅根据存在的值执行分组?_Python_Pandas_Dataframe - Fatal编程技术网

Python 如何仅根据存在的值执行分组?

Python 如何仅根据存在的值执行分组?,python,pandas,dataframe,Python,Pandas,Dataframe,我有这样一个数据帧: 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()

我有这样一个数据帧:

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的相关值???

正如所说,pivot以这种方式提供给您,因为它正在创建网格。然而,我怀疑您希望热图中的值是空的,因为如果您创建一个平台X类型网格,这些点将存在——只有空值

sns.heatmap已经为你做了,但是默认值会给你一个蓝色框,这可能是你不喜欢的。查看,在底部,它向您展示了如何屏蔽不需要的数据

在您的情况下,只要您的背景为白色,就应该为您提供“空白”框。这对我使用Jupyter笔记本很有效

mask = abc.isnull()
with sns.axes_style("white"):
    sns.heatmap(abc, mask=mask)
plt.show()

也就是说,如果你有一个柔和的灰色背景和颜色,可能对眼睛更容易。然而,我认为这达到了你最终想要的。

给我们一个例子,如果你以这种方式旋转,那么空值是不可避免的。如果索引中有平台,列中有流派,则除非每个流派平台对都在数据集中,否则将有空值。我不知道
sns.heatmap
是如何工作的,但是您可以尝试用
0
填充空值。