[英]Python: Plot data against time in X axis
我得到了這樣的數據,我想繪制溫度與時間的關系
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]`
我試圖做到這一點
import datetime as DT
datetimes = [DT.datetime.strptime(t, "%H:%M:%S") for t in time]
我停在這里,因為它出現了錯誤
ValueError: unconverted data remains: .013733
我認為在時間安排中提到秒的小數
謝謝
您的時間以兩種不同的格式進行格式化(即一種不帶秒的小數,另一種帶秒),因此您需要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"))
另外,如果您確定其余的所有時間都不是幾分之一秒,則可以單獨處理第一個:
datetimes = ([DT.datetime.strptime(time[0], "%H:%M:%S")] +
[DT.datetime.strptime(t, "%H:%M:%S.%f") for t in time[1:]])
您有格式字符串的異構集合。 一些(第一個)的格式為"%H:%M:%S"
,另一些(其余的)的格式為"%H:%M:%S.%f"
。 因此,編寫一個輔助函數:
def datetime_helper(formats, s):
for f in formats:
try:
return datetime.strptime(s, f)
except ValueError:
pass
那么您可以執行以下操作:
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.