2016-04-12 2 views
0

У меня есть панд dataframe, который выглядит примерно так:Как преобразовать рамку данных pandas в совместимый с Heatmap фрейм?

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 

Нечто подобное может быть сгенерирован с:

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

По сути я хочу сделать карту тепла колонны r_value использованием matplotlibs ax.pcolor() но Мне нужно сначала получить эти данные в соответствующем формате, который, я считаю, примерно такой:

 name2  name4  name6 name8 name10 
name1 r_value1 ...  ...    ... 
name3 ...  ... 
name5     ... 
name7        ... 
name9 ...         ... 

с r_значениями, заполняющими таблицу в правильных местах (обратите внимание, что хотя приведенные выше фиктивные данные не охватывают все возможные комбинации моих фактических данных).

Что такое самый простой способ сделать это? Заранее спасибо

+3

Извините, вы после 'df.pivot (index = 'x_specie', columns = 'y_species', values ​​= 'r_value')'? – EdChum

+0

точно, что мне нужно. Похоже, панды задумались обо всем ... Спасибо! – CiaranWelsh

ответ

3

Вы можете использовать pivot_table и fillna, чтобы получить все комбо видов x и y (заполнение NaNs 0).

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() 
Смежные вопросы