2017-02-04 3 views
1

Я использую matplotlib для построения многострочных линий с различным цветом. И это работает довольно хорошо, но как-то все построенные строки соединяются с (0,0) для последнего значения.Графики Matplotlib (0,0), хотя в Dataframe нет значения NaN или NULL.

X-ось: bin, которые мои временные рамки
Y-ось: count, которые содержат значения, я хотел бы построить

Мой dataframe выглядит следующим образом:

>df3.head() 
      start_time count date_day  bin cw 
0 2016-05-02 00:00:00  45 2016-05-02 00:00:00 18 
1 2016-05-02 00:15:00  35 2016-05-02 00:15:00 18 
2 2016-05-02 00:30:00  34 2016-05-02 00:30:00 18 
3 2016-05-02 00:45:00  31 2016-05-02 00:45:00 18 
4 2016-05-02 01:00:00  34 2016-05-02 01:00:00 18 

>df3.tail() 
       start_time count date_day  bin cw 
17563 2016-10-31 22:45:00 114 2016-10-31 22:45:00 44 
17564 2016-10-31 23:00:00  94 2016-10-31 23:00:00 44 
17565 2016-10-31 23:15:00 121 2016-10-31 23:15:00 44 
17566 2016-10-31 23:30:00 127 2016-10-31 23:30:00 44 
17567 2016-10-31 23:45:00 135 2016-10-31 23:45:00 44 

Это, как я сюжет: Я отделить линии от календарной недели cw

cw = np.arange(18,45,1) 
for x in cw: 
    df4 = df3[df3.cw == x] 
    xa = df4['bin'] 
    ya = df4['count'] 
    plt.plot(xa, ya) 
plt.show() 

Что я получаю это: Plot (labels and axis are not formatted yet..)

Для df3.any().isnull() я не получаю никакого NaN, которое должно быть в порядке, но она по-прежнему участки (0,0).

df3.any().isnull() 
Out[297]: 

start_time False 
count   False 
date_day  False 
bin   False 
cw   False 
dtype: bool 

Любые идеи, как я могу избавиться от этой линии Подключение к (0,0)

Спасибо большое!

+0

Первое быстрое предположение: вы пытаетесь построить время в течение 7 дней в неделю, но на графике вы видите только данные за один день. Это имеет смысл для вас? Что бы вы хотели сделать с данными других 6 дней? – ImportanceOfBeingErnest

+0

Да, это так. Мой DataFrame содержит только понедельники. Я просто использовал 'cw' для разделения строк, потому что у меня не было понятия, как отделять или нарезать мои данные сначала, так как' start_time' является непрерывным (только понедельники), но мой столбец 'bin' является повторяющейся последовательностью. – m2thek

ответ

0

Я нашел решение: я был немного небрежным, когда нарезал свои данные.

Я нарезал свои данные для всех понедельников (df.weekday == 0). Затем я сгруппировал данные в понедельник в 15-минутных бункерах с pandas.Grouper.
И вот ошибка: Grouper группируется между максимальным диапазоном, который находится в столбце start_time, и, следовательно, возвращает все дни между моей датой начала и датой окончания. Поэтому у меня было много нулевых значений, которые объясняют мой сюжет.
Как-то я не смог проверить эту проблему. Спасибо за ваше время!