简体   繁体   English

Python:针对X轴上的时间绘制数据

[英]Python: Plot data against time in X axis

I got data like this and i wanna plot temperature vs time 我得到了这样的数据,我想绘制温度与时间的关系

time=`['16:00:00', '16:00:00.013733', '16:00:00.020599', '16:00:00.034332', 
'16:00:00.041199', '16:00:00.048065', '16:00:00.061798', '16:00:00.068665', 
'16:00:00.075531', '16:00:00.089264', '16:00:00.102997', '16:00:00.109863', 
'16:00:00.123596', '16:00:00.130463', '16:00:00.137329', '16:00:00.151062', 
'16:00:00.157928', '16:00:00.171661', '16:00:00.178528', '16:00:00.192261']`

temperature=`[ 691.70001221,  691.54998779,  691.90002441,  691.79998779,
               691.29998779,  691.65002441,  691.59997559,  691.79998779,
               691.95001221,  692.34997559,  691.59997559,  691.34997559,
               690.90002441,  691.40002441,  691.95001221,  690.84997559,
               691.54998779,  691.70001221,  691.95001221,  691.59997559]`

i tried to this 我试图做到这一点

import datetime as DT
datetimes = [DT.datetime.strptime(t, "%H:%M:%S") for t in time]

and i stop here because it appears an error 我停在这里,因为它出现了错误

ValueError: unconverted data remains: .013733

i think referred to decimals of seconds in the time arrange 我认为在时间安排中提到秒的小数

Thanks 谢谢

Your times are formatted in two different ways (ie one without fractions of seconds, the others with), so you will need to try the two formats: 您的时间以两种不同的格式进行格式化(即一种不带秒的小数,另一种带秒),因此您需要try两种格式:

datetimes = []
for t in time:
    try:
        datetimes.append(DT.datetime.strptime(t, "%H:%M:%S"))
    except ValueError:
        datetimes.append(DT.datetime.strptime(t, "%H:%M:%S.%f"))

Alternatively, if you are sure that none of the rest will have no fractions of seconds, you could treat the first separately: 另外,如果您确定其余的所有时间都不是几分之一秒,则可以单独处理第一个:

datetimes = ([DT.datetime.strptime(time[0], "%H:%M:%S")] + 
             [DT.datetime.strptime(t, "%H:%M:%S.%f") for t in time[1:]])

You have a heterogeneous collection of format strings. 您有格式字符串的异构集合。 Some (the first) is in the format "%H:%M:%S" , and some (the rest) is in the format "%H:%M:%S.%f" . 一些(第一个)的格式为"%H:%M:%S" ,另一些(其余的)的格式为"%H:%M:%S.%f" So write a helper function: 因此,编写一个辅助函数:

def datetime_helper(formats, s):
    for f in formats:
        try:
            return datetime.strptime(s, f)
        except ValueError:
            pass

then you can do: 那么您可以执行以下操作:

my_formats = "%H:%M:%S.%f","%H:%M:%S"

[datetime_helper(my_formats,x) for x in time]

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM