製造現場の定番!QC 7 つ道具のパレート図を Amazon QuickSight で作る方法

製造現場の定番!QC 7 つ道具のパレート図を Amazon QuickSight で作る方法

Clock Icon2025.05.14

パレート図とは?

いきなりですが、パレート図についてご存知でしょうか?
総務省統計局のホームページでは次のように説明されています。

あるものを構成する項目ごとの値、あるいは階級ごとの度数を大きい順に並べたものと、その累積の構成比を表す折れ線グラフを組み合わせたグラフです。構成比の集中度合いをみるのに適したグラフで、製造管理や商品の購入層を分析する際などに使用されることがあります。

https://www.stat.go.jp/naruhodo/9_graph/jyokyu/pareto.html

パレート図を知らない人からすると、これを聞いても「なるほど、分からん」と思ってしまうかもしれませんが、具体的なグラフを見るとイメージしやすいかもしれません。
以下のように、データを大きい順に並べた棒グラフと、累積比率を示す折れ線グラフを組み合わせたグラフ のことをパレート図と言います。

vscode-drop-1745313435211-9h7pqhmql47.png

この図では、「商品」の個数の累積値が赤いグラフになっているので「商品 A と B」の2つで全体の 55 % を占めていることが分かります。
(下記の画像は、商品 B にマウスカーソルを置いたときに表示される画像です)

vscode-drop-1745313527728-yps2v3uy0jf.png

上記は商品件数のデータでしたが、製造業の場合、工場の製造工程で発生する不良の種類と件数をパレート図で表現すると 「全不良の 80% は上位 2~3 種類の特定の不良で占められている」といった傾向が一目で分かります。
そのため、「上位2つの不良原因を解消するだけで、不良率が大きく改善できる」といったことが直感的に分かります。

このようにデータをパレート図にすると直感的に問題点を把握しやすくなるため、特に製造業などでは品質管理のツールとして活用されます。

スプレッドシートでパレート図を作ってみる

パレート図を作るのに専門的なツールは不要です。エクセルやスプレッドシートでも簡単に作成できます。
Amazon QuickSight で作成する前に、雰囲気を掴むためにスプレッドシートで作ってみます。

元になるデータを次のような CSV で用意します。

商品 個数
A 55
B 40
C 35
D 20
E 12
F 8
G 2
sample.csv
商品,個数
A,55
B,40
C,35
D,20
E,12
F,8
G,2

このデータをスプレッドシートで開きます。

vscode-drop-1745315501598-iov1b2xmq0o.png

C 列に「累積(%)」のカラムを追加して、次の計算式を C3 セルに入力します。

=SUM( $B$2:B2 )/SUM( $B$2:$B$8 ) * 100

入力すると他の C 列のセルに対して自動入力の候補が表示されるので、そのままセットします。

vscode-drop-1745315509315-kudn8oaqf18.png

数式の候補が出てこなかったら、最初のセル(C2 セル)の右下の隅にマウスを置いて(マウスカーソルが十字になります)、そのまま下までドラッグすれば各セルに応じた内容の数式が自動的に挿入されます。

vscode-drop-1745316003522-w00whxqam2m.png

正しく数式がセットされれば次のようになります。「商品 G」で累積が「100 %」になっていますね。

vscode-drop-1745315514496-5n68prxzad.png

この時点で、C 列の各セルには次のような計算式がセットされているはずです。
B 列全体の合計に対する該当行までの合計の割合、つまり各行の値に対する累積の構成比率を算出していることが分かります。これはパレート図の計算の概念そのものですね。

=SUM( $B$2:B2 )/SUM( $B$2:$B$8 ) * 100
=SUM( $B$2:B3 )/SUM( $B$2:$B$8 ) * 100
・・・
(略)
・・・
=SUM( $B$2:B8 )/SUM( $B$2:$B$8 ) * 100

パレート図に必要なデータが揃ったのでグラフ化します。
カラムも含めてデータをすべて選択してください。

vscode-drop-1745315522478-q2vhbl0wuy.png

セルを選択した状態で、メニューから 「挿入」→「グラフ」 をクリックします。

vscode-drop-1745315528144-0issz6i2dqig.png

この状態では下記のようなグラフになります。
(このタイミングでは下記の図とは違う形式になっているかもしれません)

vscode-drop-1745315537154-gfd6oq3o34.png

グラフを正しいものに選択し直します。画面右側のグラフのメニュー(グラフエディタ)から 「設定」→「複合グラフ」 を選択します。

vscode-drop-1745315542971-jj3ra702fdb.png

これで期待する形のグラフになりました。

vscode-drop-1745315547173-ittqyhqmls.png

もう少し見やすくします。グラフの適当なところで右クリックしてください。
右クリックのメニューから 「系列」→「累積(%)」 を選択します。

vscode-drop-1745315551818-qxkkdnbioea.png

グラフエディタの 「カスタマイズ」タブ→「軸」を「右側」 に変更します。
これで「累積」を表す Y 軸がグラフの右側に追加されました。

vscode-drop-1745316592852-8af1auuw395.png

以上でパレート図が完成しました。エクセルやスプレッドシートでは自分で数式をセットするので、作業の目的が分かりやすくなり直感的にパレート図を作成できました。

vscode-drop-1745315682682-px97xexb6ze.png

パレート図を作るときのポイント

ポイントというほどではありませんが、スプレッドシートでは、あらかじめ各商品の個数に対する累積値を計算式で算出したものをグラフ化していました。

累積計算は直前の個数の値に対して順次、値を加算していく計算方式なので、パレート図として表示する場合は、加算対象のデータが「大きいもの順」となっている必要があります。
そのため、元のデータが「大きいもの順」になっていない場合は降順で並び替えておく 必要があります。

降順にソートされてない状態で同じ計算式を適用すると、意味のないグラフになってしまいます。
下記は同じ内容のデータですが、並びがバラバラになっていて可視化してもインサイトが得られづらいグラフになっています。

vscode-drop-1745569355843-u6y7glzvra.png

Amazon QuickSight でパレート図を作る

次に QuickSight でパレート図を作ってみましょう。
QuickSight のような BI ツールや可視化ツールでは、専用の関数やプラグインなどが用意されていることがあり簡単にパレート図を作成できます。ツールによっては「パレート図」専用の関数などが用意されていることもありますが、QuickSight ではパレート図専用のものはない ので、標準の関数などを組み合わせてパレート図を作ることになります。

また、ツールごとに設定や関数などの使い方が変わることがあります。QuickSight でパレート図を作る場合もツールが提供する関数を使うので、本記事ではその使い方を紹介したいと思います。

データは先ほどと同じものでもいいのですが、せっかくなので次の内容で CSV ファイルを用意します。

不良タイプ 不良件数
しみ 145
98
色むら 76
サイズ不良 45
縫製不良 38
糸切れ 25
プリントずれ 22
ほつれ 18
変形 15
材質不良 12
pareto-sample.csv
不良タイプ,不良件数
しみ,145
,98
色むら,76
サイズ不良,45
縫製不良,38
糸切れ,25
プリントずれ,22
ほつれ,18
変形,15
材質不良,12

QuickSight の画面を開き 「新しい分析」 をクリックします。

vscode-drop-1745570115094-t6o730rspn.png

次の画面で 「新しいデータセット」 をクリックします。

vscode-drop-1745570120280-p2rcr9hxt3.png

先ほどと同じデータを使うので、先程の CSV ファイルをアップロードします。

vscode-drop-1745570177157-1t8ys5oz0v1.png

次の画面ではそのまま 「次へ」 をクリックして先に進みます。

vscode-drop-1745570180515-gnn3yxc9fs6.png

次の画面で 「視覚化する」 をクリックします。

vscode-drop-1745570188963-niqq52r36hg.png

最後に 「作成」 をクリックします。

vscode-drop-1745570192851-kyyndzm55b.png

「作成」をクリックすれば、次のような画面になっていると思います。

vscode-drop-1745570199048-nyih6v3fqu.png

QuickSight では「パレート図」というビジュアルタイプは標準で提供されていませんが、「クラスター棒コンボグラフ」 というビジュアルタイプを使うことで実現できます。

「ビジュアル」の下にある矢印をクリックするとビジュアルタイプの一覧が現れるので、その中から 「クラスター棒コンボグラフ」 を選択します。

vscode-drop-1745601743495-s0yk9p5nrrm.png

次に画面左側の 「データ」 にある2つのフィールド 「不良タイプ」「不良件数」 をビジュアルの各項目にセットします。

フィールド ビジュアル
不良タイプ X 軸 ディメンションを追加
不良件数 棒グラフの値

vscode-drop-1745601786909-xe0swoehh9f.png

「不良タイプ」と「不良件数」をセットすることでグラフが「不良タイプ」別に降順でグラフ化されました。

vscode-drop-1745601791226-h8zug7t8dv.png

ここではデフォルトで 「不良件数」 の値に対して 降順 の設定で表示されましたが、並び替えの設定は画面上で変更できます。
エクセルやスプレッドシートと違い、元のデータの並びがランダムになっていても画面上で簡単にソートできるのは専門サービス(ツール)のメリットかと思います。

vscode-drop-1745601797805-z71o9eexan.png

次に「累積値」を表示していきたいと思います。
累積値は元のデータに含まれていないので、累積計算を行うフィールドを追加します。画面左側の「データ」ペインから 「計算フィールド」 をクリックします。

vscode-drop-1745601830540-mwhk9muxzm.png

計算式を定義するページに変わるので、ここで計算式を定義します。累積計算をする場合は QuickSight が提供している関数 runnningSum() 関数を使います。
今回の場合だと次のような式を定義します。

runningSum((sum(不良件数)),[(sum(不良件数)) DESC])

計算フィールドの名前は適当なものをセットします。(今回は「累積」としています)

vscode-drop-1745605293715-e6orho1brfq.png

ここで使っている runnningSum() 関数は、データ値の累計を計算する関数です。最初の引数には累積計算するメジャーを指定します。メジャー とは比較や集計に使用する数値のことです。つまり各項目に対する数値データです。(商品 A に対する「個数」など)
ここで指定するメジャーは 集計されたメジャー である必要があるため、今回は sum(不良件数) を指定します。

第2引数で累積計算する順番の指定を行います。具体的には「何を基準に(何をソートキーにして)どのような順番(降順、昇順)で累積計算するか」を指定します。

今回の計算式の場合、「第2引数の (sum(不良件数)) を ソートキーとして DESC(降順、大きいもの順)で累積計算するように指定しています。

https://docs.aws.amazon.com/quicksight/latest/user/runningSum-function.html

計算フィールドを定義できたら、そのフィールド「累積」を「折れ線ブラフの値」にドラッグしてセットします。

vscode-drop-1745605394124-ft0dxm0nph9.png

パレート図の形になりました!

vscode-drop-1745605567281-w1osia9ovq.png

このままでは累積値が単なる合計値のままなので、累積値を構成比で表示するように計算フィールドの式に percentOfTotal 関数を使ったものへ修正します。
構成比なのでフィールド名も「累積(%)」に修正しました。

runningSum(percentOfTotal(sum(不良件数)),[sum(不良件数) DESC])

vscode-drop-1746769366097-350mbxucia1.png

あらためて「累積(%)」を折れ線グラフにセットします。

vscode-drop-1745601843655-83psztlqi65.png

累積の構成比率が折れ線グラフで表示されると同時に、グラフ右側の Y 軸がパーセントのメモリに変わりました。

vscode-drop-1746769469146-dsgwfou27y.png

見栄えの修正

このままでは少し見づらいのでデザインを修正します。
最初に、累積の表示が小数表示になっているので、%表示に変更します。

vscode-drop-1746769633927-jzi051l25ka.png

右側の Y 軸(累積比率)の表示が % 表示に変わりました。

vscode-drop-1746769769695-6c2p4zskpvk.png

このままでは、棒グラフと折れ線グラフの上下幅が合っておらず「間延び」した感じになっているので、これを修正します。
画面左側のプロパティから「棒グラフの値」を展開します。
その中にある「範囲」で「カスタム」を選択して棒グラフの最大値(145)がグラフ内にきれいに収まるように値をセットします。

vscode-drop-1746769994407-50oxmefi13b.png

まとまりのあるグラフになりました。

vscode-drop-1746769997741-kg7xeagfnc.png

次に累積構成比の折れ線グラフに数字を載せてみます。
画面右側のプロパティから「データラベル」を有効化します。

vscode-drop-1746788743820-dr8fn296z7.png

有効化すると詳細な設定ができる状態になります。棒グラフの方は数字を出さない形にしたいので「バーデータラベル」だけ無効化します。

vscode-drop-1746788749799-iwufbguz58.png

デフォルトでは小数点第二位の表示になり見づらいので、整数表示に修正します。

vscode-drop-1746788954296-73a86iipi9u.png

最後に、分析結果(累積値)に対して、何らかのアクションを検討したい「しきい値」となる基準線を入れてみます。
右側の「プロパティ」から 「参照線」を開いて「新しい行を追加」 をクリックします。

vscode-drop-1747040450231-he3m5c6xefg.png

各プロパティを図のようにセットします。

vscode-drop-1747040457953-r9wpch2pwdf.png

「値の形式」 は次のようにセットしています。

vscode-drop-1747040603450-7ohfwwhgvhw.png

いい感じになりました。
(作ってみると参照線はなくても良さそうに思いましたが、不要であれば消してください)

vscode-drop-1747040798997-yw6agrp5m5.png

累積計算 runningSum 関数で気になった点

ここまでの作業で QuickSight を使ったパレート図を作ることができました。
しかし、作成の過程で今回の肝となる runningSum 関数の使い方が今一つ理解できない箇所がありました。

今回のケースで runningSum 関数を使ったとき、最初は次のような計算式を定義しました。

runningSum((sum(不良件数)),[(sum(不良件数)) DESC])

データは次のようになっていて、「不良タイプ」は重複のないユニークなキーになっています。

不良タイプ 不良件数
しみ 145
98
色むら 76
サイズ不良 45
縫製不良 38
糸切れ 25
プリントずれ 22
ほつれ 18
変形 15
材質不良 12
不良タイプ,不良件数
しみ,145
,98
色むら,76
サイズ不良,45
縫製不良,38
糸切れ,25
プリントずれ,22
ほつれ,18
変形,15
材質不良,12

対象データの「不良タイプ」がユニークであれば、第1引数に sum() 関数を適用したものである必然性が分かりませんでした。
また、第2引数には累積計算する順番と、その順番の基準となる項目(ディメンション)を指定していましたが、累積計算の順番を指定するだけなら第2引数は [(不良件数) DESC] でもいいのでは?と不思議に思いました。(不良タイプがユニークなため)

runningSum 関数の仕様として「第1引数は集計されたメジャー」でなければいけないため、sum() を使っていると理解できても第2引数も sum(不良件数) とする理由が分からなかったのです。

しかし、実際に次のような計算式を定義すると、visual_calc_reference_missing というエラーになりグラフを表示できませんでした。

runningSum((sum(不良件数)),[(不良件数) DESC])

vscode-drop-1747041018324-jqmzapger1.png

しかし、次のようなデータを考えてみると理由が分かります。このデータでは不良タイプが「傷」というデータが3件入っています。

不良タイプ 不良件数 時刻
しみ 145 2025-05-01-08-19
98 2025-05-01-10-28
100 2025-05-01-15-06
110 2025-05-02-09-21
色むら 76 2025-05-01-10-11
サイズ不良 45 2025-05-04-11-33
縫製不良 38 2025-05-03-16-37
糸切れ 25 2025-05-03-16-22
プリントずれ 22 2025-05-02-09-16
ほつれ 18 2025-05-08-14-10
変形 15 2025-05-02-13-28
材質不良 12 2025-05-07-17-23
pareto-sample-2.csv
不良タイプ,不良件数,時刻
しみ,145,2025-05-01-08-19
,98,2025-05-01-10-28
,100,2025-05-01-15-06
,110,2025-05-02-09-21
色むら,76,2025-05-01-10-11
サイズ不良,45,2025-05-04-11-33
縫製不良,38,2025-05-03-16-37
糸切れ,25,2025-05-03-16-22
プリントずれ,22,2025-05-02-09-16
ほつれ,18,2025-05-08-14-10
変形,15,2025-05-02-13-28
材質不良,12,2025-05-07-17-23

このデータを前提に考えてみましょう。(時刻は適当な書式にしています)
この場合、第1引数が sum(不良件数) なので「不良タイプ」別の合計値を累積計算する という指示になります。
次の第2引数は累積計算する順序の指定ですが、sum(不良件数) ではなく 不良件数 を指定すると 「集計済みの値に対する累積計算に対して行単位の値でソートせよ」 という指示になってしまい、整合性が取れなくなってしまいます。

そのため、第2引数には累積計算する値と整合性の取れた値を指定する必要があると分かります。

「元のデータのように重複のないデータであれば整合性が取れるのでは?」とも思えますが、QuickSight はカラムがユニークであるかどうかを内部で検証できないので、明示的にユニークな内容で指示する必要があります。

(生成 AI がさらに発展すれば、カラムを文脈的に理解して処理してくれるようになるかもしれませんね)

一方で、ソートキーがタイムスタンプのような種類であれば、集計するレベルを意識する必要がないので、このようなエラーには遭遇しませんが、今回のようなケースではハマるポイントになるかと感じました。

最後に

Amazon QuickSight でパレート図を作ってみました。
製造現場に限らず利用されるケースはあると思いますので、QuickSight で実現したい方の参考になれば幸いです。

下記のコミュニティフォーラムの投稿がとても参考になりましたので、合わせてご確認ください。

https://community.amazonquicksight.com/t/how-to-create-a-pareto-chart-with-cummulative-percent-total-contribution/15318

IoT 導入支援 / 相談会の紹介

クラスメソッドでは、AWS を中心とした IoT 導入においてエッジからクラウドまでトータルでお客様をサポートします。

次のようなお困りごとがあれば、お気軽にお問い合わせください。

  • ローカルでデータ収集と可視化はできたが、クラウドで可視化する適切な構成が分からない
  • 集めたデータを使って故障予知などに使いたい
  • 工場設備からデータ収集してクラウドに送る方法が分からない
  • スマートファクトリー化を検討しているが何から着手していいか分からない
  • デバイスで動くアプリケーションの開発を AWS で効率化したい
  • エッジデバイスのセキュリティが心配だ
  • カメラ映像をクラウドにストリーミングして活用したい
  • その他、お困り事があれば何でもご相談ください

https://classmethod.jp/aws/services/consulting/

https://classmethod.jp/seminar/aws-consultation/

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.