热图 Seaborn fmt='d' 错误

Heat Map Seaborn fmt='d' error

扩展我之前的

我可以很好地使用 Seaborn 绘制热图,并且建议可以获得注释。但我现在看到一个新问题。

输入文件

Nos,Place,Way,Name,00:00:00,12:00:00
123,London,Air,Apollo,342,972
123,London,Rail,Beta,2352,342
123,Paris,Bus,Beta,545,353
345,Paris,Bus,Rava,652,974
345,Rome,Bus,Rava,2325,56
345,London,Air,Rava,2532,9853
567,Paris,Air,Apollo,545,544
567,Rome,Rail,Apollo,5454,5
876,Japan,Rail,Apollo,644,54
876,Japan,Bus,Beta,45,57
876,Japan,Bus,Beta,40,57
876,Japan,Bus,Beta,40,57

节目:

import pandas as pd
import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt
sns.set()

df = pd.read_csv('heat_map_data.csv')

df3 = df.copy()
for c in ['Place','Name']:
    df3[c] = df3[c].astype('category')

sns.heatmap(df3.pivot_table(index='Place', columns='Name', values='00:00:00' ),annot=True, fmt='.1f' )

plt.show() 
  1. 如果我采用 fmt='d' 然后我得到浮点值错误并更改为 fmt='f' 我得到所需列的计数。

但是当相同的轴值重复时,它不会添加所需列的计数。请问有什么解决办法吗?

正如在输入文件中看到的那样

876,Japan,Bus,Beta,45,57
876,Japan,Bus,Beta,40,57
876,Japan,Bus,Beta,40,57

它有3行重复,它们的值应该显示为总和 表示 JapanBeta 的单元格应将值注释为 125 而不是显示 41.7。我该如何实现?也可以给出两个值作为注释吗?

  1. 现在的第二个疑问是,在 pivot 中,我给出了 value='00:00:00',但我需要它来动态读取文件的最后一列。

您可以使用 aggfunc 关键字传入字典:

aggfunc :

function, default numpy.mean, or list of functions If list of functions passed, the resulting pivot table will have hierarchical columns whose top level are the function names (inferred from the function objects themselves)

sns.heatmap(df3.pivot_table(index='Place', columns='Name', 
values='00:00:00',aggfunc={'00:00:00':np.sum}), annot=True, fmt='.1f')

输出: