У меня есть набор данных с выборкой по времени с по существу индексом с двумя столбцами (временная метка, идентификатор). Однако некоторые временные метки не имеют точки выборки для данного индекса.Как создать стек Matplotlib с разреженными данными?
Как сделать стек с Matplotlib для данных такого типа?
import pandas as pd
import numpy as np
import io
import matplotlib.pyplot as plt
df = pd.read_csv(io.StringIO('''
A,B,C
1,1,0
1,2,0
1,3,0
1,4,0
2,1,.5
2,2,.2
2,4,.15
3,1,.7
3,3,.1
3,4,.2
'''.strip()))
b = np.unique(df.B)
plt.stackplot(np.unique(df.A),
[df[df.B==_b].C for _b in b],
labels=['B:{0}'.format(_b) for _b in b],
)
plt.xlabel('A')
plt.ylabel('C')
plt.legend(loc='upper left')
plt.show()
Когда я попробовать эту программу, Python отвечает:
TypeError: ufunc 'isfinite' not supported for the input types, and the inputs could not be safely coerced to any supported types according to the casting rule ''safe''
Когда я вручную заполнить недостающие точки данных (см пустые строки в строковый литерал), сюжет отлично работает.
Есть простой способ «вставить» нулевые записи недостающих данных выборки (как this question, но у меня есть две колонки функционируют как индексы, и я не знаю, как адаптировать решение к моему проблема) или иметь график Matplotlib с отверстиями?