2014-12-28 2 views
0

у меня есть некоторые данные, как этотпанда черчения длительности с различными уровнями

level ts 
0 1.0 2014-11-27 16:00:28.211950-08:00 
1 1.5 2014-12-04 17:54:56.185200-08:00 
2 2.1 2014-12-04 17:59:54.303900-08:00 
3 2.6 2014-12-04 18:04:54.307770-08:00 
4 1.8 2014-12-04 18:09:55.917890-08:00 
5 1.1 2014-12-04 18:14:54.977890-08:00 
6 1.0 2014-12-04 18:19:56.729060-08:00 

Я хочу, чтобы создать участок, где Y-ось является уровнем, X-ось времени в течение недели (предположит, что в целом диапазон оси x - неделя, и проецируйте метку времени на конкретное местоположение). Я хочу нарисовать линии (или коробки), где, например, есть горизонтальная линия от 2014-12-04 17:54:56.185200-08:00 до 2014-12-04 17:59:54.303900-08:00 с уровнем 1.5, другая горизонтальная линия от 2014-12-04 17:59:54.303900-08:00 до 2014-12-04 18:04:54.307770-08:00 на уровне 2.1 и т. Д. Конечно, здесь временные метки необходимо преобразовать в значения в течение недели.

Как я могу это сделать?

+0

Что вы подразумеваете под ', чтобы быть преобразованы в значения в течение недели?? можете ли вы объяснить более подробно или, возможно, показать, каков будет ваш ожидаемый результат в вашем вопросе? – Anzel

+0

@ Anzel, что я имел в виду, есть: представьте себе неделю, начиная с воскресенья по субботу. Я хочу иметь возможность сопоставить все эти временные метки с соответствующим днем: час: минута, определенная только на неделю, независимо от той недели, на которой они могут быть. Имеет ли это смысл? –

+0

Нет, это не так, если вам нужна ось x с «днем: час: минута», буквально нет отличий от 'datetime' и ничего общего с воскресенью-субботой. – Anzel

ответ

0

Я до сих пор не уверен, что именно вы хотите достичь, я собираюсь принять дикие догадаться, что вы хотите построить ось х с этикетками буднего дня + часа + минут, который может быть достигаются за счетом добавления новых столбцов и настроек несколько индексов, что-то вроде этого:

import pandas as pd 

df 
    level       ts 
0 1.0 2014-11-28 00:00:28.211950 
1 1.5 2014-12-05 01:54:56.185200 
2 2.1 2014-12-05 01:59:54.303900 
3 2.6 2014-12-05 02:04:54.307770 
4 1.8 2014-12-05 02:09:55.917890 
5 1.1 2014-12-05 02:14:54.977890 
6 1.0 2014-12-05 02:19:56.729060 

df['weekday'] = pd.DatetimeIndex(df['ts']).weekday 
# you may use time if you just need timestamp 
# df['time'] = pd.DatetimeIndex(df['ts']).time 
df['hour'] = pd.DatetimeIndex(df['ts']).hour 
df['minute'] = pd.DatetimeIndex(df['ts']).minute 
# after that you construct a new dataframe with desired columns 
df1 = df[['level', 'weekday', 'hour', 'minute']] 
# then plot it by setting index to weekday and time (hour + minute) 
df1.set_index(['weekday', 'hour', 'minute']).plot(kind='bar') 

enter image description here

Надеется, что это помогает.

Смежные вопросы