06.7.17
パレートチャートで主要要因を素早く特定
np.argsort(counts)[::-1] で降順に並べ替え、counts.cumsum() / counts.sum() で累積比率を作り、ax1.twinx() で右側に第 2 の Y 軸を足して折れ線を描きます。読み終えると、設定ミス・操作不明・バグの上位 3 カテゴリで累積 75%、4 つ目で 87% に達する構造を棒と折れ線から読み取り、自分の集計データで同じ図を作れるようになります。直感 #
サポート窓口に月 378 件の問い合わせがあり、6 つのカテゴリに分類されているとします。件数の棒グラフだけでも多い順は分かりますが、「上位 3 つに対策すれば何割を減らせるか」は棒を足し算しないと答えられません。パレートチャートは棒を多い順に並べたうえで、左から足し上げた割合を折れ線で重ねます。折れ線が 80% の水平線を越える位置より左のカテゴリが「重要な少数」で、ここに集中すれば効率よく問い合わせ総数を減らせます。累積比率の折れ線が最初から急に立ち上がれば上位 2〜3 個の要因に集中している証拠、緩やかに伸びるなら要因が分散していて横断的な対策が必要だと読めます。
Python で描く #
次のコードは 6 カテゴリの件数を降順に並べ替え、左軸に棒、右軸に累積比率の折れ線を描きます。累積 80% に最初に達するカテゴリの位置に縦の点線を、80% の高さに横の破線を引きます。
| |

実行結果の読み方 #
棒の高さが各カテゴリの件数、赤い折れ線が左から足し上げた累積比率です。設定ミス(120 件、32%)、操作不明(95 件、累積 57%)、バグ(70 件、累積 75%)の 3 つで 4 分の 3 を占め、4 番目の仕様質問で折れ線が 80% の破線を越えて 87% に達します。縦の点線はその境目で、左側の 4 カテゴリに対策を集中すれば問い合わせの約 9 割に手が届くと読めます。折れ線の立ち上がりが急なほど少数の要因に集中していて、この例は典型的な 80/20 型です。
何が起きているか(ステップで見る) #
コードを読む前に、この手法が図の上で何をしているかを追ってみましょう。「再生」を押すか、スライダーを動かすと 1 手順ずつ進みます。
見るポイント:並べ替えと累積比率で「上位の少数が大半を占めるか」を確認する。
使いどころと落とし穴 #
パレートチャートは、品質管理の不良原因分析やサポートの問い合わせ分類のように、カテゴリ別の件数から「どこに手を打つか」を決める場面の定番です。要因どうしの相互作用や因果は表せません。原因の関係を掘るなら特性要因図(フィッシュボーン)を併用します。右軸の範囲を固定しないと 80% ラインの位置が図ごとにずれて読み誤るため、必ず set_ylim(0, 1.05) のように 0〜100% に揃えてください。カテゴリの粒度も結果を左右し、粗すぎる(「その他」が最大になる)と原因が特定できず、細かすぎる(30 カテゴリ)と棒が多くて読めなくなるので、対策を打てる単位に集約してから描きます。
- 横向き棒グラフ — ラベルが長い項目を横向きで比較
- 積み上げ棒グラフ — 全体量と内訳を同時に表示
- ウォーターフォールチャート — 増減要因を段階的に積み上げ