如何从两个culomns加上这两个在python中的值创建热图

时间:2019-07-11 18:57:31

标签: python heatmap

感谢您的帮助!

我想用df数据在python中生成一个热图。
(我在项目中使用的是熊猫,seaborn,numpy和matplotlib)

数据帧df如下:

index | a | b | c | year | month
0     |   |   |   | 2013 |   1
1     |   |   |   | 2015 |   4
2     |   |   |   | 2016 |   10 
3     |   |   |   | 2017 |   1

在数据集中,各行均为工单。 数据集很大(51个列和100k +行),
所以a,b,c只是显示一些随机列。 (对于月份=> 1 = 1月,2 = 2月...)

热图:
x轴=年,
y轴=月,
值:并且在热图中,我希望两个轴之间的值是行数的计数,在该行中已在当年和月份给出了工单。

我想象的结果应该类似于seaborn文档中的: https://seaborn.pydata.org/_images/seaborn-heatmap-4.png

我是编码的新手,尝试了很多我在互联网上发现的随机内容,但无法使其正常工作。

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

这应该做(使用生成的数据):

import pandas as pd
import seaborn as sns
import random

y = [random.randint(2013,2017) for n in range(2000)]
m = [random.randint(1,12) for n in range(2000)]


df = pd.DataFrame([y,m]).T
df.columns=['y','m']
df['count'] = 1
df2 = df.groupby(['y','m'], as_index=False).count()
df_p = pd.pivot_table(df2,'count','m','y')


sns.heatmap(df_p)

您可能不需要count列,但我添加了它,因为我需要一个额外的列来使groupby工作。