Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/293.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用不同级别绘制持续时间_Python_Matplotlib_Pandas - Fatal编程技术网

Python 使用不同级别绘制持续时间

Python 使用不同级别绘制持续时间,python,matplotlib,pandas,Python,Matplotlib,Pandas,我有一些这样的数据 level ts 0 1.0 2014-11-27 16:00:28.211950-08:00 1 1.5 2014-12-04 17:54:56.185200-08:00 2 2.1 2014-12-04 17:59:54.303900-08:00 3 2.6 2014-12-04 18:04:54.307770-08:00 4 1.8 2014-12-04 18:09:55.917890-08:00 5 1.1 2014-12-04 1

我有一些这样的数据

    level   ts
0   1.0 2014-11-27 16:00:28.211950-08:00
1   1.5 2014-12-04 17:54:56.185200-08:00
2   2.1 2014-12-04 17:59:54.303900-08:00
3   2.6 2014-12-04 18:04:54.307770-08:00
4   1.8 2014-12-04 18:09:55.917890-08:00
5   1.1 2014-12-04 18:14:54.977890-08:00
6   1.0 2014-12-04 18:19:56.729060-08:00
我想生成一个图,其中Y轴是水平,X轴是一周内的时间,假设X轴的总体范围是一周,并将时间戳投影到特定位置。我想画一条线或方框,例如,有一条水平线从2014-12-04 17:54:56.185200-08:00到2014-12-04 17:59:54.303900-08:00,标高为1.5,另一条水平线从2014-12-04 17:59:54.303900-08:00到2014-12-04 18:04:54.307770-08:00,标高为2.1,等等,这里需要将时间戳转换为一周内的值


我该怎么做呢?

我仍然不确定您到底想要实现什么,我想大胆猜测一下,您想要用weekday+hour+minute标签绘制x轴,这可以通过添加新列和设置多个索引来实现,如下所示:

import pandas as pd

df
   level                         ts
0    1.0 2014-11-28 00:00:28.211950
1    1.5 2014-12-05 01:54:56.185200
2    2.1 2014-12-05 01:59:54.303900
3    2.6 2014-12-05 02:04:54.307770
4    1.8 2014-12-05 02:09:55.917890
5    1.1 2014-12-05 02:14:54.977890
6    1.0 2014-12-05 02:19:56.729060

df['weekday'] = pd.DatetimeIndex(df['ts']).weekday
# you may use time if you just need timestamp
# df['time'] = pd.DatetimeIndex(df['ts']).time
df['hour'] = pd.DatetimeIndex(df['ts']).hour
df['minute'] = pd.DatetimeIndex(df['ts']).minute
# after that you construct a new dataframe with desired columns
df1 = df[['level', 'weekday', 'hour', 'minute']]
# then plot it by setting index to weekday and time (hour + minute)
df1.set_index(['weekday', 'hour', 'minute']).plot(kind='bar')

希望这能有所帮助。

你所说的在一周内转换为价值观是什么意思?你能更详细地解释一下,或者在你的问题中展示你的预期产出吗?@Anzel我的意思是:想象一周从周日到周六。我希望能够将所有这些时间戳映射到对应的日期:小时:分钟,只针对一周,而不管它们可能是哪一周。这有意义吗?不,没有意义,如果你需要x轴和day:hour:minute,它和datetime没有区别,也和周日周六没有关系。