创建两个分类变量的热力图。

4
我有以下三个变量的数据集:
  1. df['Score']是一个浮点数的虚拟值(1或0)
  2. df['Province']是一个对象列,每行表示一个地区
  3. df['Product type']是一个指示所属行业的对象
我想创建一个联合图,其中 x 轴为不同的行业,y 轴为不同的省份,并将成绩的相对频率作为联合图的颜色。参考链接如下: https://seaborn.pydata.org/examples/hexbin_marginals.html 目前,我只能做到这样:
mean = df.groupby(['Province', 'Product type'])['score'].mean()

但我不确定如何绘制它。

谢谢!


1
可能是 从 pandas DataFrame 制作热图 的重复内容。 - perl
1个回答

10
如果您正在寻找热力图,可以使用 seaborn 的 heatmap 函数。但是首先需要将表格进行透视处理。
只需创建一个小例子:
import numpy as np 
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt

score = [1, 1, 1, 0, 1, 0, 0, 0]
provinces = ['Place1' ,'Place2' ,'Place2', 'Place3','Place1', 'Place2','Place3','Place1']
products = ['Product1' ,'Product3' ,'Product2', 'Product2','Product1', 'Product2','Product1','Product1']
df = pd.DataFrame({'Province': provinces,
                   'Product type': products,
                   'score': score
                  })

我的df长这样:

   'Province''Product type''score'
0   Place1    Product1      1
1   Place2    Product3      1
2   Place2    Product2      1
3   Place3    Product2      0
4   Place1    Product1      1
5   Place2    Product2      0
6   Place3    Product1      0
7   Place1    Product1      0

那么:

df_heatmap = df.pivot_table(values='score',index='Province',columns='Product type',aggfunc=np.mean)
sns.heatmap(df_heatmap,annot=True)
plt.show()
结果是:


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接