Используйте matplotlib для построения фрейма данных с пробелами в дате - PullRequest
0 голосов
/ 07 января 2019

У меня есть датафрейм, как показано ниже:

import pandas as pd
import numpy as np
period0 = pd.date_range('1/1/2011', periods=50, freq='D')
period1 = pd.date_range('18/5/2012', periods=50, freq='D')
period2 = pd.date_range('7/11/2014', periods=50, freq='D')
df = pd.concat((pd.DataFrame(period0), pd.DataFrame(period1), pd.DataFrame(period2)), axis=0)

df['y'] = pd.DataFrame(np.random.rand(150,1))

Эти даты и периоды выбраны произвольно для создания пробелов и дат.

Когда я пытаюсь построить график данных, matplotlib автоматически рисует линию между пробелами:

plt.plot(df[0], df['y'])

Результат: enter image description here

Я тоже пытался dotplot. Но это не помешало сюжету создать линию:

plt.plot(df[0], df['y'], ':')

Результат: enter image description here

И я также нашел соответствующий вопрос . К сожалению, это не решило мою проблему.

Итак, что мне делать?

Ответы [ 2 ]

0 голосов
/ 07 января 2019

Если вы не можете изменить существующий индекс, вы можете попробовать:

df.groupby(pd.Grouper(key=0, freq='1D'))['y'].last().plot()
0 голосов
/ 07 января 2019

Вы должны определить значения, которые вы не хотите видеть как NaN:

https://matplotlib.org/examples/pylab_examples/nan_test.html

Например:

df.index = df[0].astype('datetime64')
#defining df[0] as index

idx = pd.date_range(start = '1/1/2011', end = max(period2), freq='D')
#creating new index

df = df.reindex(idx)
#reindexing df - it preserves values from 'y'

plt.plot(df.index, df['y'])
#creating plot
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...