заговор против отметки времени в пандах - PullRequest
0 голосов
/ 02 мая 2019

У меня есть датафрейм в пандах:

date_hour   score
2019041822  -5
2019041823  0
2019041900  6
2019041901  -5

где date_hour в формате ГГГГММДДЧЧ, а оценка - целое число.

когда я строю график, существует длинная линия, соединяющая 2019041823 с 2019041900, при которой все значения между ними считаются отсутствующими (т. Е. Нет никакого счета, связанного с 2019041824-2019041899, потому что нет времени, связанного с этим).

Есть ли способ игнорировать эти пропуски / отклонения, чтобы он был непрерывным (некоторые мои данные пропускают 2 дня, поэтому у меня длинная строка, которая вводит в заблуждение)

Красные кружки показывают разрыв между ночами (т. Е. Между 18 апреля 2300 и 19 апреля 0000).

Я использовал:

fig, ax = plt.subplots()
x=gpb['date_hour']
y=gpb['score']
ax.plot(x,y, '.-')
display(fig)

enter image description here

Я полагаю, это потому, что date_hours является int и пытался преобразовать в str, но встретил с ошибками: ValueError: x and y must have same first dimension

Есть ли способ построить, чтобы не было пробелов?

1 Ответ

2 голосов
/ 02 мая 2019

Попробуйте преобразовать date_hour в метку времени: df.date_hour = pd.to_datetime(df.date_hour, format='%Y%m%d%H') перед графиком.

df = pd.DataFrame({'date_hour':[2019041822, 2019041823, 2019041900, 2019041901],
                   'score':[-5,0,6,-5]})
df.date_hour = pd.to_datetime(df.date_hour, format='%Y%m%d%H')

df.plot(x='date_hour', y='score')
plt.show()

Выход:

enter image description here

Если вы не хотите изменять свои данные, вы можете сделать

df = pd.DataFrame({'date_hour':[2019041822, 2019041823, 2019041900, 2019041901],
                   'score':[-5,0,6,-5]})

plt.plot(pd.to_datetime(df.date_hour, format='%Y%m%d%H'), df.score)

, что дает:

enter image description here

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