【发布时间】:2022-10-07 08:18:54
【问题描述】:
我的数据框是汽车旅行的时间序列和相对较高粒度的相应速度。
df = pd.DataFrame({\'session_id\': [69,69,69,69,69,69,69,71,71,71,71,71,86,86,86,86,86,86],
\'timestamp\': [\'2016-04-01 08:04:00\',\'2016-04-01 08:04:05\',\'2016-04-01 08:04:10\',
\'2016-04-01 08:04:15\',\'2016-04-01 08:04:22\',\'2016-04-01 08:04:30\',
\'2016-04-01 08:04:37\',\'2016-04-01 01:04:10\',\'2016-04-01 01:04:13\',
\'2016-04-01 01:04:20\',\'2016-04-01 01:04:24\',\'2016-04-01 01:04:31\',
\'2016-04-01 17:56:46\',\'2016-04-01 17:58:54\',\'2016-04-01 18:04:00\',
\'2016-04-01 18:04:50\',\'2016-04-01 18:05:21\',\'2016-04-01 18:06:10\'],
\'speed\': [0.0,26.8551,27.673,18.0626,21.4778,17.6581,24.4941,14.42,8.94,13.69,
0.0,0.37,16.5,0.0,17.25,3.5,11.75,6.25]
})
df.head()
session_id timestamp speed
0 69 2016-04-01 08:04:00 0.0000
1 69 2016-04-01 08:04:05 26.8551
2 69 2016-04-01 08:04:10 27.6730
3 69 2016-04-01 08:04:15 18.0626
4 69 2016-04-01 08:04:22 21.4778
在一天中的不同时间记录数据,持续 5 天。
我需要一种将速度曲线绘制为线图的方法。例如 y 轴上的速度,x 轴上的时间。因为这些会话是长时间记录的,所以我对从头到尾策划旅行很感兴趣。相反,我会对开始速度感兴趣,比如 15 分钟开始。
由于在某些情况下数据是在不同的日期记录的,我删除了数据部分,而是想绘制时间部分。
df[\'timestamp\'] = df[\'timestamp\'].dt.time
df.head()
session_id timestamp speed
0 69 08:04:00 0.0000
1 69 08:04:05 26.8551
2 69 08:04:10 27.6730
3 69 08:04:15 18.0626
4 69 08:04:22 21.4778
尝试绘制数据:
sns.lineplot(data=df, x=\'timestamp\', y=\'speed\')
TypeError: Invalid object type at position 0
- 有没有办法根据时间绘制每个会话的配置文件速度?
- 我可以重新设置时间,让它们同时开始,比如
00.00,这样我就可以轻松比较速度趋势?
编辑
按照@abokey 的回答,我现在可以这样绘制:
df[\'timestamp\'] = df[\'timestamp\'].dt.strftime(\'%H:%M:%S\')
sns.lineplot(data=df, x=\'timestamp\', y=\'speed\', hue=\'session_id\')
这使:
有没有办法重置所有会话的开始时间,以便他们的情节同时开始,比如00:00?
标签: python pandas datetime matplotlib seaborn