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
>>>
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()
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)
où %matplotlib
est une fonction magique D'IPython pour ceux qui ne sont pas familiers.
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)
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')
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.