DX(デジタルトランスフォーメーション)
前回、PythonではじめるなんちゃってDXとして、ヘッダーとタグをもつデータでもグラフ作成プログラムで読み込めるようにデータを変換するプログラムを紹介しました。

今回はその際に用いたヘッダーをもつデータを作成するプログラムを紹介します。
前回使用したデータはこんな感じでした。
(CSVファイルなのでテキストエディタで開くとカンマ区切りです)

最初の行の「Measurement time」、「Mode」、「Condition0」などは その4おまけ で作成したデータそのままです。

今回はさらにデータの行の先頭に「Name」だったり、「Data」というタグがついています。
その5で紹介したファイル変換プログラムではこのタグを頼りにデータを変換しています。
ということでこのファイルを作成するプログラムを紹介していきましょう。
プログラム全体
import os
import random
import datetime
import numpy as np
time_list = np.arange(0, random.randint(30, 60), 0.1)
value1 = [0, 1, 5]
timenow = datetime.datetime.now().strftime("%Y/%m/%d %H:%M:%S")
def valrange(len_x, y_list):
error = (y_list[1] - y_list[0])*y_list[2]/100
val_list = []
for val in np.linspace(y_list[0], y_list[1], len_x):
random_error = random.uniform(-error, error)
val_list.append(val+random_error)
return val_list
val_list1 = valrange(len(time_list), value1)
header_list = [f'Measurement time,{timenow}', f'Mode,{random.randint(0, 10)}']
for i in range(random.randint(0, 10)):
header_list.append(f'Condition{i},{random.randint(0, 100)}')
with open('./dx-5_Data1.csv', 'w', encoding='utf-8') as f_out:
for header_row in header_list:
f_out.write(f'{header_row}\n')
f_out.write('Name,Time,Value1\n')
for t, v1 in zip(time_list, val_list1):
row = f'Data,{t},{v1}\n'
f_out.write(row)
実は中身的にはその4おまけで紹介したプログラムをほぼ同じです。
ということで今回は違うところのみ紹介します。
データの出力
その4おまけのプログラムと異なっているのは、データの出力部分です。
with open('./dx-5_Data1.csv', 'w', encoding='utf-8') as f_out:
for header_row in header_list:
f_out.write(f'{header_row}\n')
f_out.write('Name,Time,Value1\n')
for t, v1 in zip(time_list, val_list1):
row = f'Data,{t},{v1}\n'
f_out.write(row)
この中でデータの列名の行を出力する部分(f_out.write(‘Name,Time,Value1\n’))、そして値を出力する部分(row = f’Data,{t},{v1}\n’)にそれぞれ「Name, 」、「Data, 」と行の最初にタグが埋め込まれています。
これだけで行にタグを持たせているわけです。
こんな感じでちょっと変えるだけで、後工程の処理が変わってくるので、データ側を色々いじってみるのも勉強になります。
良かったら色々と試してみてください。
これまで2週間に1記事上げてきた「PythonではじめるなんちゃってDX」シリーズですが、ここからはDXに役立ちそうなプログラムが浮かんだ時に不定期にアップしていきたいと思います。
もしリクエストがあれば、コメント欄にでも書き込んでください。
私の方に興味や時間があったら、プログラムを作成し、解説したいと思います。
ではでは今回はこんな感じで。
コメント