Création de heatmap à partir de la base de données pandas

j'ai une dataframe générée à partir du paquet Pandas de Python. Comment puis-je générer heatmap en utilisant DataFrame à partir du paquet pandas.

import numpy as np 
from pandas import *

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

>>> df
          A         B         C         D
aaa  2.431645  1.248688  0.267648  0.613826
bbb  0.809296  1.671020  1.564420  0.347662
ccc  1.501939  1.126518  0.702019  1.596048
ddd  0.137160  0.147368  1.504663  0.202822
eee  0.134540  3.708104  0.309097  1.641090
>>> 
69
demandé sur joelostblom 2012-09-05 21:18:21

4 réponses

Vous voulez matplotlib.pcolor :

import numpy as np 
from pandas import DataFrame
import matplotlib.pyplot as plt

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

plt.pcolor(df)
plt.yticks(np.arange(0.5, len(df.index), 1), df.index)
plt.xticks(np.arange(0.5, len(df.columns), 1), df.columns)
plt.show()
53
répondu chthonicdaemon 2014-05-29 13:12:24

pour ceux qui regardent cela aujourd'hui, je recommande le Seaborn heatmap() comme documenté ici .

L'exemple ci-dessus serait fait comme suit:

import numpy as np 
from pandas import DataFrame
import seaborn as sns
%matplotlib inline

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

sns.heatmap(df, annot=True)

%matplotlib est une fonction magique D'IPython pour ceux qui ne sont pas familiers.

108
répondu Brideau 2017-08-27 19:53:53

Utile sns.heatmap api ici . Vérifiez les paramètres, il y en a un bon nombre. Exemple:

import seaborn as sns
%matplotlib inline

idx= ['aaa','bbb','ccc','ddd','eee']
cols = list('ABCD')
df = DataFrame(abs(np.random.randn(5,4)), index=idx, columns=cols)

# _r reverses the normal order of the color map 'RdYlGn'
sns.heatmap(df, cmap='RdYlGn_r', linewidths=0.5, annot=True)

enter image description here

11
répondu Brad Solomon 2017-05-17 20:13:47

si vous n'avez pas besoin d'un tracé par exemple, et que vous êtes simplement intéressé à ajouter de la couleur pour représenter les valeurs dans un format de tableau, vous pouvez utiliser la méthode style.background_gradient() de la base de données pandas. Cette méthode colorise la table HTML qui est affichée lors de la visualisation des cadres de données pandas dans par exemple le carnet de notes de JupyterLab et le résultat est similaire à l'utilisation de "formatage conditionnel" dans le logiciel de tableur:

import numpy as np 
import pandas as pd


index= ['aaa', 'bbb', 'ccc', 'ddd', 'eee']
cols = ['A', 'B', 'C', 'D']
df = pd.DataFrame(abs(np.random.randn(5, 4)), index=index, columns=cols)
df.style.background_gradient(cmap='summer')

enter image description here

Il ya quelques plus de détails dans cette réponse liée , et le section de style de la documentation pandas passe par de nombreuses options en profondeur.

9
répondu joelostblom 2018-07-13 13:31:39