製造業界のデータサイエンティスト奮闘記

製造業でのビッグデータ分析やAIによるデータ解析、機械学習についてのブログ

相性の悪い生産条件を統計的に見つける(Python)

製品にもよりますが、相性の悪い生産条件というものもあったりします。いい例が思いつかないのですが、設備A1で生産したものを次の工程で設備B1に投入する場合は問題無いのに、設備B2に投入すると歩留まりが悪化するなどのケースでしょうか。
下記のプログラムは、こんな統計処理もあって良いんじゃないかと思ったので、思いつきで書いてみました。案外処理が難しかったので、備忘録的に残しておこうと思います。

少し結果が見にくいかもしれませんが、パラメータ同士の組み合わせが不良率にどう影響するかを集計しています。

import pandas as pd
import itertools

df = pd.DataFrame({
    "説明変数1": ["A", "A", "A", "B", "B"],
    "説明変数2": ["C", "C", "D", "D", "C"],
    "説明変数3": ["E", "E", "F", "F", "E"],
    "生産数": [100, 200, 300, 100, 100],
    "不良数": [2, 1, 3, 1, 5],
    "不良率": [0.02, 0.005, 0.01, 0.01, 0.05]
})

l = []
for grp in itertools.combinations(["説明変数1", "説明変数2", "説明変数3"], 2):
    tmp = df.groupby(grp).sum().loc[:, ['生産数', '不良数']]
    tmp.index = tmp.index.rename(['説明変数A', '説明変数B'])
    l.append(tmp)
group = pd.concat(l).sort_index()

group["不良率"] = group["不良数"] / group["生産数"]
print(group)

#             生産数  不良数   不良率
#説明変数A 説明変数B
#A     C       300    3  0.01
#      D       300    3  0.01
#      E       300    3  0.01
#      F       300    3  0.01
#B     C       100    5  0.05
#      D       100    1  0.01
#      E       100    5  0.05
#      F       100    1  0.01
#C     E       400    8  0.02
#D     F       400    4  0.01