2016-04-12 9 views
0

Ich habe einen Pandas Datenrahmen, die etwa wie folgt aussieht:Wie wandelt man einen Pandas-Datenrahmen in einen Heatmap-kompatiblen Datenrahmen um?

x_specie y_species   r_value  irrelevant 
0 name1 name2 0.46042854769889 1.08625581318480 
1 name3 name4 0.08520026289205 0.31828185948920 
2 name5 name6 0.59751876928376 0.03611201620948 
3 name7 name8 0.21827455728522 1.28464913995526 
4 name9 name10 0.03241820474363 0.69957843027741 

Etwas Ähnliches mit erzeugt werden kann:

Index= ['aaa', 'bbb', 'ccc', 'ddd', 'eee'] 
Cols = ['A', 'B', 'C', 'D'] 
df = DataFrame(abs(np.random.randn(5, 4)), index=Index, columns=Cols) 

Wesentlichen mit matplotlibs ax.pcolor() Ich möchte eine Heatmap der r_value Säule machen aber Ich muss diese Daten zuerst in ein geeignetes Format bringen, das meiner Meinung nach ungefähr so ​​aussieht:

mit den r_values ​​füllen die Tabelle an den richtigen Stellen (beachten Sie, dass, obwohl die Dummy-Daten oben nicht alle möglichen Kombinationen meiner tatsächlichen Daten umfasst).

Was ist der einfachste Weg, dies zu tun? Vielen Dank im Voraus

+3

Leider sind Sie nach 'df.pivot (Index = 'x_specie', Säulen = 'y_species', Werte = 'r_value')'? – EdChum

+0

genau das, wonach ich bin. Es scheint, als hätten Pandas an alles gedacht ... Danke! – CiaranWelsh

Antwort

3

Sie können pivot_table und fillna verwenden, um alle Kombinationen von x- und y-Spezies zu erhalten (NaN mit 0 zu füllen).

import matplotlib.pyplot as plt 
import pandas as pd 

pivoted_table = df.pivot(index='x_specie', columns='y_species', values='r_value') 
pivoted_table.fillna(0, inplace=True) 
plt.pcolor(pivoted_table.values, cmap=plt.cm.Reds) 
plt.show()