2017-06-10 3 views
0

Ich habe ein Datenrahmen wie folgt aus:Wie führe ich groupby nur die vorhandenen Werte aus?

Platform  Genre  Score 
PC   Action  9 
PS   Adventure 8.5 
Xbox   Action  9.5.... 

die Datenrahmen riesig. Ich möchte eine Heatmap visualisieren, die die Plattform auf der x-Achse, das Genre auf y und den Score als Wert zeigt.

Also habe ich versucht, dies:

abc=games.groupby(['platform','genre'])['score'].mean().reset_index() 
abc=abc.pivot('platform','genre','score') 
sns.heatmap(abc) 

Das Problem ist jetzt, da nicht alle die Plattform haben Spiele in allen Genres, die sich ergebende Datenrahmen NaN Werte viel ist zu müssen. Wenn ich abc.dropna() verwende, werden alle Zeilen gelöscht.

Also was soll ich tun, dass nur die relevanten Werte existieren, die nicht NaN sind ??

+0

Zeigen Sie uns ein Beispiel – piRSquared

+0

Ich schwenken Sie auf diese Weise dann sind die Nullwerte unvermeidlich. Wenn Sie die Plattform im Index und Genre in den Spalten haben, dann haben Sie Null-Werte, es sei denn, jedes Genre-Plattform-Paar befindet sich im Datensatz. Ich weiß nicht, wie 'sns.heatmap' funktioniert, aber Sie könnten versuchen, die Nullwerte mit' 0' zu füllen. – JoeCondron

Antwort

0

Wie JoeCondron sagt, gibt der Pivot es Ihnen auf diese Weise, weil es ein Raster erstellt. Ich vermute jedoch, dass es in Ihrer Heatmap super klar sein soll, dass die Werte null sind, denn wenn Sie ein X-Genre-Gitter der Plattform erstellen, werden diese Punkte existieren - nur mit diesem Nullwert.

Die sns.heatmap macht das schon für Sie, aber die Werte wie voreingestellt geben Ihnen eine blaue Box, die Sie vielleicht nicht interessieren. Schauen Sie sich die seaborn docs an und unten sehen Sie, wie Sie unerwünschte Daten ausblenden können.

In Ihrem Fall sollte dies Ihnen "leere" Felder zur Verfügung stellen, solange Ihr Hintergrund weiß ist. Dies funktioniert für mich mit Jupyter Notebook.

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

Mit dieser sagte, es angenehmer für die Augen sein kann, wenn Sie einen weichere Grau Art Hintergrund und Farbe haben. Ich denke jedoch, dass das erreicht, was Sie letztendlich wollen.

Verwandte Themen