Я хотел бы сохранить графики блоков 6h из кадра данных, содержащего данные за несколько дней (с 01.05.2018 по 18.05.2018).
Мой фрейм данных "EperDtPanda" имеет такую форму:
ldr
timestamp
2018-05-01T00:00:03.454+02:00 972
2018-05-01T00:00:08.532+02:00 972
2018-05-01T00:00:13.462+02:00 973
2018-05-01T00:00:18.467+02:00 973
2018-05-01T00:00:23.472+02:00 968
2018-05-01T00:00:28.480+02:00 972
2018-05-01T00:00:33.487+02:00 973
2018-05-01T00:00:38.484+02:00 970
Мой индекс имеет тип: "метка времени"
Я строю весь период данных, используя этот код:
indicies = map(lambda t: np.datetime64(t), EperEtPanda.index)
newIndextValues = map(lambda v: v[0], EperEtPanda.values)
ts = pd.Series(newIndextValues, index=indicies)
series2 = ts.resample('H').mean()
plt.plot(series2.index, series2.values)
plt.xticks(rotation='vertical');
И я прилагаю сюжет, из 18 дней данных.![plot of whole period of 18 days](https://i.stack.imgur.com/5S5Hy.png)
Теперь я хочу нарезать этот график на графики по 6 ч и сохранить цифры.Вот код, который я использовал для нарезки графика на блоки по 6 часов:
startDate = '2018-05-01T00:00:00+02:00'
endDate = '2018-05-18T00:00:00+02:00'
blockLength = 6
i = 0
while (str_to_ts(startDate) < str_to_ts(endDate)):
mask = (EperEtPanda.index >= str_to_ts(startDate)) & (EperEtPanda.index <= (str_to_ts(startDate) + timedelta(hours=blockLength)))
EperDtPanda6h = EperDtPanda.loc[mask]
slice6h = EperDtPanda6h.plot()
slice6h.get_figure().savefig('figure6h' + i + '.png')
startDate = str_to_ts(startDate) + timedelta(hours=blockLength)
i += 1
str_to_ts - это функция, которая преобразует строки в метку времени:
str_to_ts = udf (lambda d: datetime.strptime(d, "%Y-%m-%dT%H:%M:%S.%f+02:00"), TimestampType())
Но это не работает ..
У кого-нибудь есть идеи, как это сделать?