使用熊猫数据框的Matplotlib热图

时间:2020-06-23 15:30:58

标签: python pandas dataframe matplotlib

我想使用matplolib和此pandas数据框生成一个热图:

          class  time  day
0         URxvt     2    6
1         Emacs     3    6
2       Firefox    90    6
3     KeePassXC     5    6
4         URxvt    91    6
..          ...   ...  ...
144  Matplotlib     1    1
145  Matplotlib     1    1
146  Matplotlib     2    1
147  Matplotlib     5    1
148  Matplotlib    93    1

[149 rows x 3 columns]

我想生成一个热图,在x轴上显示日期(从0到6(但现在是0、1和6)),在y轴上显示类别,值是根据类别和日期的总和。 我尝试groupby这两列产生:

                          time
class               day       
Emacs               0     1149
                    1      130
                    6      634
Eog                 1       83
                    6       66
Evince              0      775
                    6       60
File-roller         0       40
Firefox             0    32109
                    1     6344
                    6     9887
GParted             1       25
Gedit               0       77
                    1        7
Gimp-2.10           6       25
Gmpc                1       73
Gnome-disks         1       21
Gtk-recordmydesktop 0       57
Gufw.py             6      100
KeePassXC           0       44
                    1       17
                    6      126
Matplotlib          1      151
Org.gnome.Nautilus  0      141
                    1      559
                    6       68
Scangearmp2         6       28
Totem               0       12
URxvt               0      346
                    1      488
                    6     3364
vlc                 0       22

但是我无法获得正确的热图(带有X:day Y:class和value:time)

1 个答案:

答案 0 :(得分:1)

您可以尝试:

sns.heatmap(df.groupby(['class','day'])['time'].sum()
              .unstack('day',fill_value=0)
           )

输出:

enter image description here