「上位20%のラインって、具体的に何点?」。データ分析でこんな疑問に出くわすことはありませんか?
平均や中央値だけでは「全体のどのあたりか」がつかみにくいですよね。データの分布をもっと細かく把握したい場面は意外と多いものです。
そんなときに使うのがPERCENTILE関数です。この記事では基本の書き方から実務での活用例まで解説します。QUARTILE関数やMEDIAN関数との関係もあわせて整理しました。
PERCENTILE関数とは?パーセンタイル値を求める関数
PERCENTILE関数(読み方: パーセンタイル関数)は、データの中から指定したパーセンタイル(百分位数)に相当する値を返す関数です。
パーセンタイルとは、データを小さい順に並べたとき「下から何%の位置にあたる値か」を表す指標です。たとえば90パーセンタイルなら「下から90%の位置の値」、つまり上位10%のラインを意味します。
身近な例でいえば、健康診断の結果に書かれている「身長は90パーセンタイル」は「100人中90番目(上位10%)の位置」ということです。
PERCENTILE関数にできることをまとめると、次のとおりです。
- 指定したパーセンタイル位置の値を求める
- 上位○%のラインを数値で把握する
- データの分布(ばらつき)を細かく分析する
- QUARTILE関数やMEDIAN関数と同じ計算を柔軟に行う
NOTE
PERCENTILE関数はGoogleスプレッドシートの全バージョンで使えます。Excelとの互換性も問題ありません。
PERCENTILE関数の書き方(構文と引数)
基本構文
=PERCENTILE(データ, パーセンタイル)
引数の説明
| 引数 | 必須/任意 | 説明 |
|---|---|---|
| データ | 必須 | パーセンタイル値を求めたいセル範囲または配列 |
| パーセンタイル | 必須 | 0〜1の数値。0.9なら90パーセンタイル |
第2引数は「0〜1」の範囲で指定します。0.25なら25パーセンタイル、0.5なら50パーセンタイル(中央値)です。
TIP
「上位10%のラインを知りたい」なら、パーセンタイルには 0.9(= 下から90%)を指定します。「上位○%」と「下から○%」が逆になる点に注意してください。
PERCENTILE関数の基本的な使い方
以下の売上データでPERCENTILE関数を使ってみましょう。
B2からB11に10人分の売上データが入っているとします。
| A列(担当者) | B列(売上) | |
|---|---|---|
| 2行目 | 田中 | 120 |
| 3行目 | 鈴木 | 85 |
| 4行目 | 佐藤 | 200 |
| 5行目 | 山田 | 150 |
| 6行目 | 高橋 | 95 |
| 7行目 | 伊藤 | 180 |
| 8行目 | 渡辺 | 110 |
| 9行目 | 中村 | 130 |
| 10行目 | 小林 | 160 |
| 11行目 | 加藤 | 140 |
90パーセンタイルを求める
上位10%のラインを知りたいときは、第2引数に0.9を指定します。
=PERCENTILE(B2:B11, 0.9)
結果は 186 です。このデータでは「売上186以上なら上位10%に入る」ということがわかります。
いろいろなパーセンタイルを求める
第2引数を変えるだけで、さまざまな位置の値を取得できます。
| 数式 | パーセンタイル | 結果 | 意味 |
|---|---|---|---|
=PERCENTILE(B2:B11, 0.25) | 25 | 106.25 | 下位25%のライン |
=PERCENTILE(B2:B11, 0.5) | 50 | 135 | 中央値 |
=PERCENTILE(B2:B11, 0.75) | 75 | 157.5 | 上位25%のライン |
=PERCENTILE(B2:B11, 0.9) | 90 | 186 | 上位10%のライン |
50パーセンタイルの「135」は、MEDIAN関数で求めた中央値と一致します。
計算のしくみ(線形補間)
PERCENTILE関数は、データが指定したパーセンタイルの位置にぴったり収まらないとき、前後の値から線形補間で計算します。
たとえばデータが10個で90パーセンタイルを求める場合、「10個 x 0.9 = 9番目」の位置を計算します。小さい順で9番目(180)と10番目(200)の間を補間して、186という値が求まります。
ちょっとむずかしく見えますが、PERCENTILE関数が自動でやってくれるので、計算方法を覚える必要はありません。
PERCENTILE関数の実践的な使い方・応用例
成績のランク分けに使う
PERCENTILE関数で各ランクのボーダーラインを求め、IFS関数と組み合わせてA〜Dランクに振り分けます。
まずボーダーラインを求めます。
=PERCENTILE(B2:B11, 0.75) → 上位25%ライン(Aランク基準)
=PERCENTILE(B2:B11, 0.5) → 上位50%ライン(Bランク基準)
=PERCENTILE(B2:B11, 0.25) → 上位75%ライン(Cランク基準)
次に、IFS関数で各担当者をランク分けします。
=IFS(B2>=PERCENTILE($B$2:$B$11,0.75), "A",
B2>=PERCENTILE($B$2:$B$11,0.5), "B",
B2>=PERCENTILE($B$2:$B$11,0.25), "C",
TRUE, "D")
結果は以下のようになります。
| 担当者 | 売上 | ランク |
|---|---|---|
| 田中 | 120 | C |
| 鈴木 | 85 | D |
| 佐藤 | 200 | A |
| 山田 | 150 | B |
| 高橋 | 95 | D |
| 伊藤 | 180 | A |
| 渡辺 | 110 | C |
| 中村 | 130 | C |
| 小林 | 160 | A |
| 加藤 | 140 | B |
範囲を絶対参照($B$2:$B$11)にするのを忘れずに。数式を下にコピーしても範囲がずれません。
外れ値の検出に使う
極端に大きい値や小さい値(外れ値)を見つけるには、IQR(四分位範囲)を使う方法が一般的です。
=PERCENTILE(B2:B11, 0.75) - PERCENTILE(B2:B11, 0.25)
この計算でIQR(第3四分位数 – 第1四分位数)が求まります。IQRの1.5倍を超える値を外れ値として検出できます。
=IF(OR(B2 > PERCENTILE($B$2:$B$11,0.75) + 1.5*(PERCENTILE($B$2:$B$11,0.75)-PERCENTILE($B$2:$B$11,0.25)),
B2 < PERCENTILE($B$2:$B$11,0.25) - 1.5*(PERCENTILE($B$2:$B$11,0.75)-PERCENTILE($B$2:$B$11,0.25))),
"外れ値", "")
数式が長くなりますが、やっていることはシンプルです。75パーセンタイルと25パーセンタイルの差(IQR)を求め、その1.5倍を超えたデータに「外れ値」と表示しています。
条件付き書式で上位10%をハイライトする
「上位10%のセルだけ色を付けたい」ときは、条件付き書式にPERCENTILE関数を使います。
- B2:B11を選択する
- 「表示形式」→「条件付き書式」を開く
- 「カスタム数式」を選び、以下の数式を入力する
=B2>=PERCENTILE($B$2:$B$11, 0.9)
これで売上が90パーセンタイル以上のセルが自動的にハイライトされます。
よくあるエラーと対処法
#NUM!エラー
PERCENTILE関数で最もよく見るエラーです。以下の原因が考えられます。
| 原因 | 対策 |
|---|---|
| 第2引数が0未満または1超 | 0〜1の範囲で指定する |
| データ範囲が空(数値なし) | 数値が入った範囲を指定する |
第2引数に「90」のように0〜1の範囲外の値を入れてしまうケースが多いです。90パーセンタイルなら「0.9」と指定してください。
#VALUE!エラー
第2引数に文字列(例: “0.9”)を指定すると発生します。数値を直接入力するか、数値が入ったセルを参照してください。
TIP
第2引数のセルが空欄になっている場合も#VALUE!エラーの原因になります。セル参照を使う場合は、値が入っているか確認しましょう。
文字列・論理値の扱い
PERCENTILE関数は、データ範囲に含まれる文字列やTRUE/FALSEを自動的に無視します。エラーにはなりませんが、データ件数が想定より少なくなることがあります。
QUARTILE関数・MEDIAN関数との関係
PERCENTILE関数は、QUARTILE関数やMEDIAN関数と密接な関係があります。使い分けを整理しましょう。
PERCENTILE関数とQUARTILE関数の関係
QUARTILE関数は、PERCENTILE関数の特殊なケースです。QUARTILE関数で求められる値は、すべてPERCENTILE関数でも求められます。
| QUARTILE関数 | 同じ結果のPERCENTILE | 意味 |
|---|---|---|
=QUARTILE(データ, 0) | =PERCENTILE(データ, 0) | 最小値 |
=QUARTILE(データ, 1) | =PERCENTILE(データ, 0.25) | 第1四分位数(25パーセンタイル) |
=QUARTILE(データ, 2) | =PERCENTILE(データ, 0.5) | 第2四分位数(中央値) |
=QUARTILE(データ, 3) | =PERCENTILE(データ, 0.75) | 第3四分位数(75パーセンタイル) |
=QUARTILE(データ, 4) | =PERCENTILE(データ, 1) | 最大値 |
QUARTILE関数は25%刻み(0/25/50/75/100)の5つしか指定できません。PERCENTILE関数なら0.1刻みでも0.01刻みでも自由に指定できます。
つまり、PERCENTILE関数はQUARTILE関数の「上位互換」です。
PERCENTILE関数とMEDIAN関数の違い
=PERCENTILE(データ, 0.5) と =MEDIAN(データ) は同じ結果を返します。どちらもデータの中央値です。
| 項目 | MEDIAN関数 | PERCENTILE関数 |
|---|---|---|
| 構文 | =MEDIAN(値1, [値2, ...]) | =PERCENTILE(データ, パーセンタイル) |
| 求められる値 | 中央値のみ | 任意のパーセンタイル値 |
| 引数の数 | 最大30個 | 2つ |
| 使い分け | 中央値だけ知りたいとき | 分布全体を分析したいとき |
中央値だけが必要ならMEDIAN関数がシンプルです。複数のパーセンタイルを求めるならPERCENTILE関数が便利です。
PERCENTILE.INC / PERCENTILE.EXCとの関係
スプレッドシートには、PERCENTILE関数の派生版が2つあります。
| 関数 | 第2引数の範囲 | 説明 |
|---|---|---|
| PERCENTILE | 0〜1 | 標準版(PERCENTILE.INCと同じ動作) |
| PERCENTILE.INC | 0〜1 | PERCENTILEの正式名。0と1を含む |
| PERCENTILE.EXC | 0より大〜1より小 | 0と1を除外する。統計的にはこちらが厳密 |
通常の業務ではPERCENTILE関数(= PERCENTILE.INC)で問題ありません。
まとめ
PERCENTILE関数は、データの中から指定したパーセンタイル位置の値を返す関数です。
この記事のポイント
- 構文は
=PERCENTILE(データ, パーセンタイル)の2引数 - 第2引数は0〜1の範囲で指定する(0.9 = 90パーセンタイル)
- 「上位○%のライン」を求めるのに最適
- QUARTILE関数の上位互換。25%刻みに限らず自由な位置を指定できる
- 50パーセンタイル = 中央値 = MEDIAN関数と同じ結果
- ランク分けや外れ値検出の応用に使える
次のステップ:関連する統計関数
PERCENTILE関数の使い方がわかったら、以下の関数もあわせて覚えてみてください。データ分析の幅が広がりますよ。
