「設備保全 python」と検索すると、出てくるのはほぼ「AI予知保全」「機械学習による異常検知」「アルゴリズム選択」といった、一気に高度な話ばかりです。それを見て「やっぱり自分には関係ない話だな」と感じてタブを閉じたことはないでしょうか。
でも、設備保全担当者が抱えているリアルな課題は、もっと手前にあることが多いです。点検記録がExcelに分散していて集計できない、月次保全レポートを毎回手作業で作っている、故障履歴から傾向を読み取りたいがデータがまとまっていない……。
そういった悩みを持つ設備保全担当者にとって、AIや機械学習より先に使えるのが「pandasとmatplotlibで点検記録を集計・可視化するPython」です。
この記事では、予知保全のAIは扱いません。今あるExcelの保全記録を読み込んで、設備別の故障傾向・MTBF・点検状況を自動集計する実践手順を解説します。読み終えた後には「今の自分の職場でも試せる」というイメージが持てるはずです。
設備保全でPythonを使うとはどういうことか
予知保全ではなく「記録の整理・集計」から始める理由
検索すると「予知保全」という言葉をよく目にしますが、これはセンサーデータを収集してAIモデルで故障を予測する高度な取り組みです。実装するにはIoT環境の整備、データサイエンスの知識、相応の初期投資が必要です。
一方、多くの製造業の設備保全現場では、まだそのスタート地点に立っていません。点検結果をExcelに手書き転記している、故障報告書がPDFでバラバラに保存されている——そういった状況でAI予知保全の話をしても意味がないのです。
先にやるべきは「今あるExcelデータを整理して、集計・可視化できる状態にすること」です。そこにPythonが一番役立ちます。
設備保全業務でPythonが活きる3つの場面
- 場面①:点検記録の月次集計 設備別・工程別の点検件数、異常件数を自動集計する
- 場面②:故障履歴からMTBF(平均故障間隔)を算出 「この設備は何日ごとに壊れているか」をデータで確認できる
- 場面③:故障回数・停止時間の傾向グラフ 月次推移や設備別比較をグラフで出力して報告資料に使う
Pythonでできること(設備保全編)
1. 点検記録Excelを読み込んで設備別に月次集計
まず基本となる「点検記録の集計」から始めましょう。設備名・点検日・異常の有無が入ったExcelがあれば、以下のコードで設備別の月次集計が出せます。
import pandas as pd
# 点検記録Excelを読み込む
df = pd.read_excel("点検記録_2026.xlsx")
# 日付列をdatetime型に変換
df["点検日"] = pd.to_datetime(df["点検日"])
df["年月"] = df["点検日"].dt.to_period("M")
# 設備別・月別の点検件数と異常件数を集計
summary = df.groupby(["設備名", "年月"]).agg(
点検件数=("点検日", "count"),
異常件数=("異常あり", "sum")
).reset_index()
summary["異常率(%)"] = (summary["異常件数"] / summary["点検件数"] * 100).round(1)
summary.to_excel("月次点検集計.xlsx", index=False)
print("集計完了")
「異常あり」列が1か0(または「あり」「なし」)で入力されていれば動きます。「設備名」「点検日」の列名は実際のExcelに合わせて書き換えてください。
2. 故障回数・停止時間を棒グラフで可視化
故障記録(設備名・故障日・停止時間)があれば、設備別の年間故障回数グラフをワンクリックで出力できます。
import matplotlib.pyplot as plt
import matplotlib
matplotlib.rcParams['font.family'] = 'Hiragino Sans'
# 設備別の故障回数を集計(故障記録DataFrameを使用)
failure_count = df.groupby("設備名")["故障日"].count().sort_values(ascending=False)
plt.figure(figsize=(10, 5))
plt.bar(failure_count.index, failure_count.values, color="tomato")
plt.title("設備別 年間故障回数")
plt.xlabel("設備名")
plt.ylabel("故障回数")
plt.tight_layout()
plt.savefig("設備別故障回数.png", dpi=150)
print("グラフを保存しました")
このグラフを月次報告資料に貼れば、手作業でグラフを作る必要がなくなります。毎月の報告準備にかかる時間を、私の周辺の事例では30〜40分程度削減できた、という話を聞いたことがあります。
3. MTBF(平均故障間隔)をpandasで自動計算
MTBF(Mean Time Between Failures)とは、故障から次の故障までの平均時間です。「この設備は平均して何日ごとに故障しているか」を数値で把握することで、点検周期の見直しやスペアパーツの発注タイミングを根拠を持って決められます。
計算方法はシンプルです。設備ごとに故障日を並べて、隣り合う日付の差分を平均するだけです。
# 設備別にMTBFを計算
df_sorted = df.sort_values(["設備名", "故障日"])
df_sorted["故障間隔(日)"] = df_sorted.groupby("設備名")["故障日"].diff().dt.days
mtbf = df_sorted.groupby("設備名")["故障間隔(日)"].mean().round(1)
print(mtbf)
これだけのコードで、設備ごとの平均故障間隔が一覧で出ます。「A設備は平均45日、B設備は平均18日」といった数字を初めて見たとき、「感覚で知っていたことがデータで確認できた」という感覚になります。
よくある失敗パターンと対策
失敗①:故障記録がExcelに入力されていない
Pythonで分析しようとしたら「そもそも故障記録がまともに残っていなかった」というケースが意外と多いです。記録が紙の点検表だけ、または記憶の中だけ、という場合は、まずExcel入力の仕組みを作ることが先決です。Pythonより前に、データを作る工程が必要なのです。
失敗②:設備名の表記ゆれ
「プレス機A」「プレスA」「プレス機-A」が混在していると、pandasがそれぞれ別の設備として集計してしまいます。事前にExcelの設備名表記を統一するか、Pythonで名寄せ処理を入れる必要があります。
失敗③:最初から「全設備・全期間」を集計しようとする
データが多いほど前処理に時間がかかります。最初は「特定の1設備・直近1年」だけで試して、処理が通ることを確認してから対象を広げるのが一番得策です。
次のステップ:さらに自動化を進めたい人へ
点検記録の集計が動くようになったら、次のステップとして「保全月次レポートのPDF自動生成」や「異常発生時のメール自動通知」が視野に入ってきます。
設備の品質データ(Cpk・管理図)を使ったPython活用は、こちらの記事で詳しく解説しています。
製造業でPythonを導入する全体像を知りたい方は、こちらが参考になります。
まとめ
- 設備保全×Pythonの第一歩は、AI予知保全ではなく「点検記録の集計・可視化」
- pandasとmatplotlibだけで、月次集計・故障回数グラフ・MTBFの自動計算ができる
- 最初の壁は「データが揃っていないこと」。記録の整備がPythonより先になる場合もある
- 設備名の表記ゆれ・データ形式の不統一を先に解決してからスクリプトを動かす
- 「1設備・1年分」で動いたことを確認してから対象を広げる
設備保全×Pythonの現実的な入口は「点検記録をExcelで読み込んで集計する」です。AIはその先の話です。