pandas - 在熊猫中根据时间戳绘制分数
问题描述
我在熊猫中有一个数据框:
date_hour score
2019041822 -5
2019041823 0
2019041900 6
2019041901 -5
其中 date_hour 是 YYYYMMDDHH 格式,而 score 是一个整数。
当我绘制时,有一条长线将 2019041823 连接到 2019041900,将其间的所有值视为不存在(即,没有与 2019041824-2019041899 相关的分数,因为没有时间与之相关)。
有没有办法忽略这些差距/absetvalues,以便它是连续的(我的一些数据错过了 2 天,所以我有一条很长的线,这是误导性的)
红色圆圈表示夜晚之间的间隔(即 2300 年 4 月 18 日和 0000 年 4 月 19 日之间)。
我用了:
fig, ax = plt.subplots()
x=gpb['date_hour']
y=gpb['score']
ax.plot(x,y, '.-')
display(fig)
我相信这是因为 date_hours 是一个 int,并试图转换为 str,但遇到了错误:ValueError: x and y must have same first dimension
有没有办法绘制所以没有间隙?
解决方案
尝试转换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()
输出:
如果你不想改变你的数据,你可以做
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)
这使: