如何使用Python在单个图形上绘制多种数据?

时间:2018-05-31 14:11:49

标签: python pandas matplotlib graph

我知道这可能是一个新手问题,但我不得不通过Python学习数据分析而没有适当的背景知识(我在10年前试过vb.net,那就是全部),而我需要非常快速地解决问题。

我被要求在这样一个数据集开始的时间段内绘制一张关于车辆速度的图表:

ID      CITY   SPEED          TIME
0       Milan   45   25/05/2018 17:35:30
1       Milan   60   25/05/2018 17:35:45
2       Milan   80   25/05/2018 17:36:00
....
2000    Rome    0    25/05/2018 21:05:15
2001    Rome    0    25/05/2018 21:05:30
2002    Rome    0    25/05/2018 21:05:45

我需要分析的每个数据集平均有3000/4000行,并包含我不需要的列。

现在我能够从Excel文件中导入数据集,我创建了3个对象,其中包含了我需要的列中的数据:

speed = Dataset[['speed']]
time = Dataset[['time']]
city = Dataset[['city']]

我需要的是绘制一个图表,其中速度是要显示的主要数据,然后是时间(在x轴上)。当速度为0时,我还需要显示城市。

我知道如何绘制速度图,但我不知道该怎么做,以便在需要的地方获得时间和城市。

它应该是这样的: graph I need to obtain

我非常感谢任何形式的帮助,因为我不知道为达到这个结果我需要做些什么。

提前致谢!

1 个答案:

答案 0 :(得分:0)

首先我假设你的时间数据只是字符串格式?然后你应该把它转换成日期时间格式,如:

Dataset['time'] = pd.to_datetime(Dataset['time'])

完成此操作后,您可以随时间明确地绘制速度数据,如:

plt.plot(Dataset['time'], Dataset['speed'])

之后,我会迭代

Dataset[Dataset['speed']==0]

并致电plt.annotate()

在什么数据子集上迭代完全取决于你的零速数据:看起来有一个接一个的几个条目,所以你应该首先过滤,可能是由某些Dataset.groupby过滤可能会选择每个组的first()条目。