此问题源于this问题。基本上,我尝试使用matplotlib以坐标为x和y轴以及值(例如该位置的频率)作为热量来创建热图。我有一个稀疏的字典data [x,y] = value_on_that_position来存储信息,这意味着x-y标签不是连续的。
所以我尝试了用代码解决该问题的方法
import pandas as pd
ser = pd.Series(list(data.values()), index=pd.MultiIndex.from_tuples(data.keys()))
df = ser.unstack().fillna(0)
df.shape
它很好用,除非缺少标签。例如,它可能会绘制如下内容:
1 3 4 5
6 50 51 34 76
7 12 10 23 23
9 23 0 70 75
10 10 12 13 40
由于问题中的x和y标签代表坐标,我需要它们是完整且连续的,我希望x标签和y标签可以像[1 2 3 4 5]和[6 7 8 9 10],则在这些不存在的坐标中自动填充值为0。
我知道我可以通过简单地在数据集中添加一些点来实现此目标,例如,在这种情况下添加data [2,8] = 0,ser.unstack().fillna(0)
就可以完成任务。但是我不想过多地使用字典,因为它已经足够大了(这就是为什么我将数据存储在稀疏字典中而不是密集字典中的原因)。有什么更好的方法吗?熊猫数据框提供的功能可以轻松实现吗?