2016-07-07 4 views
0

센서 데이터 (가속도계, 나침반)를 타임 스탬프 hh-mm-ss 형식의 CSV 파일에 저장했습니다. 시간 스탬프를 초로 변환하여 나침반 읽기를 특정 초 단위로 플롯하기를 원했습니다. 예는 : 나는파이썬을 사용하여 csv의 타임 스탬프를 초 단위로 변환

11-26-32 -> 0 sec 
11-26-33 -> 1 sec 
11-26-34 -> 2 sec 

을 변환 할. . . 그래서 x 축에 초 단위로 y 축에 나침반 방향을 표시 할 수 있습니다. 사전

답변

0

에서

덕분에 datetime 객체에 시간을 변환하고 (초)을 찾기 위해 초기 때부터 datetime 개체의 차이를 사용합니다. total_seconds 반환 timedelta 초 단위 :

from datetime import datetime as dt 

times = ['11-26-32', '11-26-33', '11-26-34'] 
time_format = '%H-%M-%S' 

base_time = dt.strptime(times[0], time_format) 
seconds = [(dt.strptime(t, time_format)- base_time).total_seconds() for t in times] 
print(seconds) 
# [0.0, 1.0, 2.0] 

내가 년, 개월 타임 스탬프의 일을 가정 그들이 제공되지 않은 이후의 모든 동일합니다.

0

팬더 솔루션 :

다음 CSV 파일이 있다고 가정 :

Time,val 
11-26-32,11 
11-26-33,31 
11-26-34,33 
11-26-35,10 
11-26-39,7 

해결 : 이제

import pandas as pd 

In [225]: filename = r'C:\Temp\.data\a.csv' 

In [226]: df = pd.read_csv(filename) 

In [227]: df 
Out[227]: 
     Time val 
0 11-26-32 11 
1 11-26-33 31 
2 11-26-34 33 
3 11-26-35 10 
4 11-26-39 7 

In [228]: df.Time = pd.to_datetime(df.Time, format='%H-%M-%S') 

In [229]: df['sec'] = (df.Time - df.ix[0, 'Time']).dt.seconds 

In [230]: df 
Out[230]: 
       Time val sec 
0 1900-01-01 11:26:32 11 0 
1 1900-01-01 11:26:33 31 1 
2 1900-01-01 11:26:34 33 2 
3 1900-01-01 11:26:35 10 3 
4 1900-01-01 11:26:39 7 7 

의 그것을 그릴 수 있도록 :

In [235]: df.set_index('sec').plot() 
Out[235]: <matplotlib.axes._subplots.AxesSubplot at 0x808e2b0> 

enter image description here

관련 문제