создать график на основе значения времени-дельты - PullRequest
1 голос
/ 03 июня 2019

У меня есть фрейм данных, который захватывает данные, отправленные с сервера. данные сервера не реже одного раза в 5 минут. если сервер не отправляет данные более 5 минут, то время до повторной отправки данных считается отключенным. Я хочу визуализировать эти отключения в графике. Фрейм данных выглядит как

timestamp                   temperature
2019-06-03 14:16:31.149132  27.17
2019-06-03 14:21:34.732911  27.13
2019-06-03 14:37:20.437143  27.16
2019-06-03 14:42:15.516416  27.13
2019-06-03 14:51:26.167553  27.19
2019-06-03 14:56:31.244862  27.02
2019-06-03 15:07:30.519727  27.1
2019-06-03 15:12:57.319953  27.12
2019-06-03 15:17:56.256638  27.12

Я рассчитал разницу во времени между двумя метками времени и, пометил затемнение и рассчитал время отключения. код:

df['TimeDelta'] = df['timestamp'] - df['timestamp'].shift()
df['blackout'] = np.where(df['TimeDelta'] > datetime.timedelta(minutes = 5) , 1 , 0)
df['blackoutTime'] =  np.where(df['blackout'] > 0, df['TimeDelta'] - datetime.timedelta(minutes = 5), 0)
df['blackoutMins'] = df['blackoutTime'] / np.timedelta64(1,'m')

, что дает 4 дополнительных столбца

TimeDelta               blackout  blackoutIime           blackoutMins
0 days 00:04:57.310512000   0   0 days 00:00:00.000000000   0.0
0 days 00:05:03.583779000   1   0 days 00:00:03.583779000   0.05972965
0 days 00:15:45.704232000   1   0 days 00:10:45.704232000   10.7617372
0 days 00:04:55.079273000   0   0 days 00:00:00.000000000   0.0
0 days 00:09:10.651137000   1   0 days 00:04:10.651137000   4.17751895
0 days 00:05:05.077309000   1   0 days 00:00:05.077309000   0.08462181666666667
0 days 00:10:59.274865000   1   0 days 00:05:59.274865000   5.9879144166666665
0 days 00:05:26.800226000   1   0 days 00:00:26.800226000   0.44667043333333334
0 days 00:04:58.936685000   0   0 days 00:00:00.000000000   0.0
0 days 00:05:16.684317000   1   0 days 00:00:16.684317000   0.27807195
0 days 00:05:02.304786000   1   0 days 00:00:02.304786000   0.0384131

Так что я хочу, чтобы я пытался визуализировать затемнения со временем по оси X и затемнение по оси Y, я хочу что-то вроде enter image description here

с осью X, являющейся осью времени, и осью Y, показывающей время, за которое происходит ее отключение. Может кто-нибудь помочь с тем, как сделать эту визуализацию.

1 Ответ

1 голос
/ 03 июня 2019

Вы хотите plt.step против оригинала timestamp:

df['blackout'] = df.timestamp.diff().gt('5min').astype(int)

plt.step(df.timestamp, df.blackout, c='red')

Выход:

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...