使用するモジュール群
あとでmatplotlibでグラフを作ったりするので、あらかじめインポートしておきます。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
#python3 """ 当該プログラムはHIOKI8870のcsv生データを整形し、アナログ信号を物理量に変換する。 """ %matplotlib inline import numpy as np import pandas as pd import matplotlib.pyplot as plt import matplotlib.ticker as tick # 目盛り操作 import matplotlib.patches as patches # グラフ内へ図形を追加 import matplotlib.animation as animation |
HIOKI8870のcsv生データを読み込む関数
単純には読み込めません。エラー回避のポイントは以下の通り。
- names (columnの名称)をあらかじめ指定し、列数を固定すること。
- 日本語が入っているためencodingをshift-jisに指定すること。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
def read_hioki(file_addr): """HIOKI8870のcsv生データを読み込み,整形したデータフレームを返す関数 args: file_addr:HOKI8870のcsv生データ returns: df:整形後のデータフレーム """ #エラー回避が必要:Error tokenizing data. C error: Expected 4 fields in line 6, saw 8 #原因:元データの列が切れているため。 #解決策:names (columnの名称)をあらかじめ指定し、列数を固定する col_names = [ 'c{0:02d}'.format(i) for i in range(8) ] #encodingをshift-jisに指定する。日本語が入っているため。 df=pd.read_csv(file_addr,names=col_names,encoding="shift-jis") #columnsを再定義する。使用しないcolumnは"no use"とする。 df.columns=["Time[s]", "1ch_Voltage[V]", "2ch_Voltage[V]", "logic_plobe_1ch", "logic_plobe_2ch", "logic_plobe_3ch", "logic_plobe_4ch", "no use"] #不要なindexを削除する df=df.drop(range(11)) #不要なcolumnを削除する del df["no use"] #floatに変更する df = df.astype(float) return df |
関数の使い方
関数名:read_hioki(file_addr)
HIOKI8870のcsv生データを読み込み,整形したデータフレームを返す関数です。
引数はfile_addrのみ。読み込むcsvファイル名を絶対パスまたは相対パスで指定するだけです。(文字列で)
file_addr:HOKI8870のcsv生データ
返り値dfは、純粋にロギング条件を除去した、純粋な測定データ部分のみをPandas.DataFrameとした、データフレームです。
おわりに
以上で、データフレームが作成できましたので、あとはnumpyなどで内部処理を行った後に、matplotlibで可視化すると良いです。