'22/06/10更新:オプションとして、同じ値の列を別名で追加する場合の雛形コードを追記しました。
本記事では、PythonでDOE(実験計画法)を作成する雛形コードを載せました。
使用方法は、本コード中にある「param_dict」と名付けた辞書に、作成したい水準の各パラメータを設定するだけです。例えば、下記例では入力因子にLength, Weight, Young_modulus, CTE, Testerの5つを設定し、各々のパラメータ(媒介変数)数は、4, 2, 3, 3, 2個を設定した場合です。
param_dict = {
'Length1': (1, 2, 3, 4),
'Weight': (10, 50),
'Young_modulus': (100, 150, 200),
'CTE':(8e-6, 17e-6, 20e-6),
'Tester':('A', 'B')
}
上記の設定で本コードを実行すると、下図のような144水準(=4×2×3×3×2)の水準表をcsvファイルで作成することができます。

■本プログラム
import itertools
import pandas as pd
file_path = 'doe.csv'
param_dict = {
'Length1': (1, 2, 3, 4),
'Weight': (10, 50),
'Young_modulus': (100, 150, 200),
'CTE':(8e-6, 17e-6, 20e-6),
'Tester':('A', 'B')
}
key_list = []
value_list = []
for key, value in param_dict.items():
key_list.append(key)
value_list.append(value)
with open(file_path, 'w', encoding = 'utf-8') as f:
for i, data in enumerate(itertools.product(*value_list), start=1):
print(i, data)
if i == 1:
buf = ','.join(key_list)
f.write(buf + '\n')
str_list = list(map(str, data))
row = ','.join(str_list)
f.write(row + '\n')
df = pd.read_csv(file_path)
df['Length2'] = df['Length1']
df = df.loc[:, ('Length1', 'Length2', 'Weight', 'Young_modulus', 'CTE', 'Tester')]
df.to_csv(file_path, index = False, encoding = 'utf-8')
print(df)
(参考)下記リンクは、ExcelVBAで同様のことをする場合の雛形コードです。
hk29.hatenablog.jp
以上
<広告>
リンク
リンク