根据熊猫的时间戳绘制分数

时间:2019-05-02 14:00:26

标签: pandas matplotlib plot

我的熊猫有一个数据框:

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

其中date_hour为YYYYMMDDHH格式,得分为整数。

我作图时,有一条长线将2019041823与2019041900连接起来,将它们之间的所有值都视为不存在(即,没有与2019041824-2019041899相关的分数,因为没有与此相关的时间)。

>

是否有一种方法可以忽略这些缺口/设定值,使其连续(我的一些数据错过了2天,所以我的一行很长,会引起误解)

红色圆圈显示夜晚之间的间隔(即2300年4月18日至0000年4月19日之间)。

我用过:

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

enter image description here

我相信是因为date_hours是一个整数,并试图转换为str,但遇到错误:ValueError: x and y must have same first dimension

有没有一种方法可以绘制出没有间隙的图形?

1 个答案:

答案 0 :(得分:2)

尝试在绘制之前将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