Этот вопрос происходит от этого вопроса.По сути, я пытаюсь создать тепловую карту, используя matplotlib с координатами в виде осей x и y, и значением, таким как частота в этой позиции, в качестве тепла.У меня есть редкие словарные данные [x, y] = value_on_that_position для хранения информации, что означает, что метки xy не являются непрерывными.
Поэтому я попытался решить этот вопрос с кодом
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)
выполнит эту работу.Но я не хочу слишком много работать со словарем, так как он уже достаточно большой (поэтому я храню данные в разреженном словаре, а не в плотном).Есть ли лучший способ сделать это?Есть ли какая-нибудь функция, предоставляемая pandas dataframe, может сделать это легко?