GraphtecロガーのデータをPythonで処理

GraphtecロガーデータのCSVファイルをグラフ化したかったのでぱっと書いてみた, 環境は
・Graphtec GL840を使用
・Python3.7.0
・Pythonライブラリは jupyter, pandas, matplotlib, seabornをpipで入れておく
・CSVファイルはutf-8でないといけないので、エンコードを変えておくこと, macだとnkfコマンドなどで可能


Excelでグラフ化してもよいが、データ量が数時間分あるとレコードがいっぱいになってしまうのでPythonで処理した(jupyter-notebook使った)

コードだけ書くと下記, 汎用性は低そうなので要改良

import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns

%matplotlib inline

plt.rcParams['font.size'] = 20

custom_style = {'axes.labelcolor': 'black',
                'xtick.color': 'black',
                'ytick.color': 'black',
                'axes.facecolor': '#EAEAF2',
                'font.size': 0
               }

sns.set_style("darkgrid", rc=custom_style)

# skipするロガー設定値の入ったカラム数: 17 + 使用したch数 + 3
# 例えばGL840で15ch使用した場合
numberSkiprows = 35
# 使用する行数: 3(番号, 日付時間, ms) + ch数
N = 18
chList = list(range(0, N, 1))

# 自分で付けたいヘッダー

df = pd.read_csv('sample.csv', skiprows=numberSkiprows, header=None, usecols=chList)

# それぞれの列に付けたい名前, 先頭3つはデフォルトのまま番号、日付時間、msを入れた
# 1CH~7CH: 温度, 8CH~11CH: 電圧, 12CH~15CH: 電流 の場合
df.columns = ["番号", "日付時間", "ms", 
              "temperature1","temperature2","temperature3","temperature4","temperature5","temperature6","temperature7", 
              "Volutage1","Voltage2","Voltage3","Voltage4",
              "Current1","Current2","Current3","Current4"]

# print(df.head(4))
plt.figure(figsize=(20,8))

# 温度データ(1CH ~ 7CH)のみ表示させてみる
df.iloc[0:, 3:10].plot(figsize=(20,8))
plt.ylabel('temperature', fontdict={'family': 'Arial'})
plt.xticks([])

# plt.show()

下みたいなのが表示されたら成功


この記事が気に入ったらサポートをしてみませんか?