MATLABのところでも書いた。バイトHEX文字列を数値に変換する
Pythonではunpackを使う。これが分かりにくい、僕にとっては。しかし、pythonの方がこの手の記事は見つけやすい。
import pandas as pd
import numpy as np
import binascii
import struct
import datetime
from matplotlib import pyplot as plt
from matplotlib import dates as mdate
book=pd.ExcelFile(fname);
sheet=book.parse('all');
data=sheet['Data'].to_numpy(dtype=str);
dt=sheet['Timestamp'].to_numpy(dtype=str);
data_len=data.size;
tt=np.zeros(data_len,dtype=float);
tt_list=[];
temp=np.zeros(data_len,dtype=float);
for i in range(data_len):
temp[i] = struct.unpack('>f', binascii.unhexlify(data[i]))[0];
dto = datetime.datetime.strptime(dt[i],'%Y-%m-%dT%H:%M:%S.%f000');
tt[i]=dto.timestamp();
横軸時間でplotすると、軸ラベルが時間でうまく表示できない、結構頑張ったが今の所うまくできてない。この点MATLABだと、何も考えずに時間(日付)で表示できる。
fig=plt.figure();
plt.plot(tt,temp);
plt.xlim(tt[0],tt[-1]);
xt = np.arange(tt[0],tt[-1],86400*7);
st = [datetime.datetime.fromtimestamp(i).strftime('%y-%m-%d' )for i in xt];
plt.xticks(xt,st,rotation=270);
plt.grid()
時間配列はunixtimestampにしたので、1週間(7日=86400*7秒)ごとの表示ステップでやる。これだと表示後に拡大すると軸が表示されない。いまいち。
コメントを追加