品質管理のデータ処理、毎月どのくらい時間をかけているでしょうか。
「Excelで管理図を手作業で更新している」「Cpkを品番ごとに計算するだけで半日かかる」「報告書のグラフを毎月コピペしている」——こういうケースは、製造業の品質管理部門ではよく見る光景ではないでしょうか。
「Pythonで品質管理が効率化できる」という話は聞いたことがあるかもしれません。ただ、どの業務から始めればいいか、どんなコードを書けばいいかが、よくわからないまま止まっている方も多いです。
この記事では、製造業の品質管理・QC担当者が実際に使える3つの業務を取り上げます。
- ① 品質記録の集計自動化(複数Excelを数秒で一括処理)
- ② Cpk(工程能力指数)の自動計算(全品番を一括算出してExcel出力)
- ③ Xbar管理図の自動作成(UCL/LCL付き・管理外れ点の可視化)
読み終えると、「どの業務から始めれば月次の報告書作成が一番楽になるか」の見通しが立ちます。なお、ここで扱うのは製造業の品質管理業務の効率化です。ソフトウェアのコード品質管理(リント・テスト)とは別の話なのでご注意ください。
品質管理業務でPythonが使われる理由
Excelでの品質管理の限界
製造業の品質管理部門でよく見るのは、以下のような状況です。
- 各工程の検査記録がExcelファイルで別々に存在する
- Cpkを計算するたびに、関数式をコピーして貼り付けている
- 管理図は手動でグラフを更新している
- 品番が増えるたびに、同じ作業が繰り返される
品番が10品目程度なら手作業でも回せますが、50品目・100品目になると毎月の集計だけで丸一日以上かかることもあります。
Pythonに置き換えると変わること
Pythonを使うと、以下の変化が起きます。
| 作業 | Excel手作業 | Python自動化後 |
|---|---|---|
| 複数ファイルの集計 | 1時間〜半日 | 10〜30秒 |
| Cpk計算(50品番) | 2〜3時間 | 数秒 |
| 管理図の更新 | 30分〜1時間 | 数秒(グラフ自動生成) |
「品番が増えても作業時間が変わらない」のがPython自動化の一番の強みです。
製造業の生産管理・品質管理の現場でPythonを活用してきた経験から言うと、最初に効果が出やすいのは月次集計の自動化です。毎月同じ手作業が繰り返されている業務ほど、Pythonの効果が大きくなります。
① 品質記録の集計をPythonで自動化する
品質担当者が最初に取り組みやすい自動化です。複数の工程・品番のExcelファイルを一度にまとめて集計します。
複数Excelファイルを一括読み込む
各工程の検査記録がフォルダにまとまっている場合、以下のコードで一括読み込みできます。
import pandas as pd
import glob
# フォルダ内のExcelファイルを全部取得
files = glob.glob('C:/品質記録/2026年05月/*.xlsx')
# 全ファイルを読み込んでつなげる
df_list = []
for file in files:
df = pd.read_excel(file, sheet_name='検査記録')
df_list.append(df)
df_all = pd.concat(df_list, ignore_index=True)
print(df_all.head())
'C:/品質記録/2026年05月/*.xlsx' のパスと sheet_name='検査記録' を自社のファイル構成に合わせれば動きます。
品番・ロット別に集計する
読み込んだデータを品番・ロット別に集計するには以下を使います。
# 品番ごとの平均・標準偏差・件数を集計
summary = df_all.groupby('品番')['測定値'].agg(
件数='count',
平均='mean',
標準偏差='std'
).round(3)
print(summary)
この数行で、手作業で品番ごとにピボットを作っていた作業が数秒で終わります。
集計結果をExcelに出力する
集計結果を新しいExcelファイルに出力するのも、openpyxlを使えば1行です。
summary.to_excel('品質集計_2026年05月.xlsx', sheet_name='集計結果')
出力したExcelファイルは、そのまま品質報告書のデータとして使えます。
② Cpk(工程能力指数)をPythonで自動計算する
品質管理で最も使う指標の一つがCpk(工程能力指数)です。「工程が規格を満たす能力をどのくらい持っているか」を示す数値で、一般的に1.33以上であれば工程能力が十分とされます。
PythonでCpkを計算する
Cpkの計算式は以下のとおりです。
Cpk = min((USL - 平均) / (3 × σ), (平均 - LSL) / (3 × σ))
- USL: 規格上限
- LSL: 規格下限
- σ: 標準偏差
Pythonで実装するとこうなります。
import numpy as np
def calc_cpk(data, usl, lsl):
mean = np.mean(data)
std = np.std(data, ddof=1) # 不偏標準偏差
cpu = (usl - mean) / (3 * std)
cpl = (mean - lsl) / (3 * std)
cpk = min(cpu, cpl)
return round(cpk, 3)
# 使用例
測定データ = [10.1, 9.9, 10.2, 10.0, 9.8, 10.1]
cpk値 = calc_cpk(測定データ, usl=10.5, lsl=9.5)
print(f'Cpk = {cpk値}')
usl(規格上限)と lsl(規格下限)の数値を自社の規格値に変えれば使えます。
※ ddof=1(不偏標準偏差)を使用しています。社内の品質基準でどの標準偏差を使うかを確認してから適用してください。
複数品番を一括でCpk算出してExcel出力する
全品番のCpkを一括計算する場合は、先ほどの集計データと組み合わせます。
# 品番ごとにCpkを計算(規格値は品番ごとに辞書で管理)
specs = {
'A-001': {'usl': 10.5, 'lsl': 9.5},
'A-002': {'usl': 20.2, 'lsl': 19.8},
}
results = []
for hinban, group in df_all.groupby('品番'):
if hinban in specs:
cpk = calc_cpk(group['測定値'].values,
specs[hinban]['usl'],
specs[hinban]['lsl'])
results.append({'品番': hinban, 'Cpk': cpk})
df_cpk = pd.DataFrame(results)
df_cpk.to_excel('Cpk一覧_2026年05月.xlsx', index=False)
品番が50品目あっても、このコードは数秒で動きます。Excelで1品番ずつ計算していた作業が、一度のコード実行で終わります。
品質担当として工程能力の管理を長年やってきた中で感じるのは、Cpkを「計算する作業」と「分析する作業」を分けることの重要性です。Pythonで計算を自動化すると、空いた時間を「Cpkが低い品番の原因調査」に使えるようになります。これが実際に一番価値のある変化です。
③ Xbar管理図をPythonで自動作成する
Xbar-R管理図は、工程のばらつきを時系列で監視するための図です。品質管理部門では定期的に更新する必要がありますが、手作業だと1枚の管理図を作るのに20〜30分かかることがあります。
管理図をPythonで自動作成する
Pythonのmatplotlibを使って、Xbar管理図を自動作成できます。
import matplotlib.pyplot as plt
import matplotlib
matplotlib.rcParams['font.family'] = 'MS Gothic' # 日本語表示(Macの場合は 'Hiragino Sans')
def plot_xbar_chart(data, usl, lsl, title='Xbar管理図'):
n = len(data)
mean = sum(data) / n
std = (sum((x - mean)**2 for x in data) / (n - 1)) ** 0.5
# 管理上下限線(±3σ)
ucl = mean + 3 * std
lcl = mean - 3 * std
plt.figure(figsize=(10, 4))
plt.plot(data, marker='o', label='測定値')
plt.axhline(mean, color='green', linestyle='-', label=f'平均: {mean:.3f}')
plt.axhline(ucl, color='red', linestyle='--', label=f'UCL: {ucl:.3f}')
plt.axhline(lcl, color='red', linestyle='--', label=f'LCL: {lcl:.3f}')
plt.title(title)
plt.legend()
plt.tight_layout()
plt.savefig(f'{title}.png', dpi=150)
plt.close()
# 使用例
データ = [10.1, 9.9, 10.2, 10.0, 9.8, 10.3, 10.1, 9.7]
plot_xbar_chart(データ, usl=10.5, lsl=9.5, title='品番A-001_Xbar管理図')
データ の部分を実測値に差し替えれば、管理図画像(PNG)が自動出力されます。
管理外れ点を可視化する
UCL/LCLを超えた点を赤くハイライトするだけで、品質異常を一目で確認できるようになります。
# 管理外れ点を赤マーカーで表示(plot_xbar_chart関数内のucl/lclと組み合わせて使用)
out_of_control = [i for i, x in enumerate(データ) if x > ucl or x < lcl]
if out_of_control:
plt.scatter(out_of_control, [データ[i] for i in out_of_control],
color='red', zorder=5, s=100, label='管理外')
管理外れ点が出た品番だけを自動抽出して担当者にメール送信する仕組みを追加することも、Pythonなら対応できます。この段階になると、品質管理の「監視」そのものが自動化されていきます。
品質管理でPythonを使うときの注意点
データ入力の統一ルールを先に決める
Pythonでデータを自動集計するには、入力データのフォーマットが統一されていることが前提です。工程ごとにExcelの列名が違ったり、日付の書き方が違ったりすると、コードが動きません。
「Pythonを使う前に、まずデータ入力のルールを決める」——これが実務での最初のハードルです。コードより先に、現場の入力ルール統一が必要なのです。
Cpkの計算式は確認してから使う
Cpkには複数の計算式があります(工程全体の能力を見るCp、実際のズレを考慮したCpkなど)。社内の品質基準でどの指標を使っているかを確認してからコードを書くことをすすめます。
「Pythonで計算したら、Excelで計算していた値と違う」というトラブルは、計算式の定義の違いから起きることがほとんどです。
まとめ
製造業の品質管理業務でPythonを使うと、以下の3つの業務が効率化できます。
- ① 品質記録の集計: 複数Excelファイルを一括処理、品番別集計を数秒で完了
- ② Cpk計算: 全品番のCpkを一括算出してExcel出力
- ③ 管理図の作成: Xbar管理図を自動生成・管理外れ点を可視化
どこから始めるかは、「毎月一番時間がかかっている作業」から選ぶのが一番早いです。多くの場合、①の品質記録集計が最初の候補になります。
品質データを使った検査の自動化については、以下の記事も参考になります。
Cpk計算(複数品番一括)・Xbar管理図の自動作成・月次品質報告書Excelへの出力まで含めた完成版テンプレートは、Noteにまとめる予定です。公開した際はブログでお知らせします。
関連記事
- 検査データをPythonで自動化する方法(Cpk計算と管理図のさらに詳しい実装・検査ライン自動化も含む)
- 製造業でPythonで自動化できる業務5選(品質管理以外の業務でPythonを使う場合の全体像)
- 品質記録をWebアプリ化した事例3選(品質記録管理をWebアプリ化するとどう変わるかの事例)