Python|パーセンタイル・分位点を求める:numpy.percentile()

1. はじめに

データ分析や統計処理において、「データの散らばり具合」や「全体の中での位置づけ」を確認するために使われるのが パーセンタイル分位点 です。Pythonでは numpy.percentile() 関数を使うことで、簡単にパーセンタイルを求めることができます。

この記事では、Python初心者〜中級者向けに、numpy.percentile()の基本的な使い方から応用例、注意点までを解説します。実際のコードと出力結果を交えて、わかりやすく丁寧に説明しますので、統計処理をこれから学ぶ方にもおすすめです。

 

2. numpy.percentile() の基本解説

2-1. パーセンタイルとは?

パーセンタイルとは、ある値が全体の中でどの位置にあるかを表す指標です。例えば「90パーセンタイル」とは、上位10%の中に含まれる境界値を意味します。

この値は、試験の成績や売上分析、機械学習のデータ前処理など、さまざまな場面で利用されます。

2-2. numpy.percentile() の使い方

NumPyライブラリの percentile() 関数を使えば、任意のパーセンタイル値を簡単に求めることができます。

import numpy as np

# データの準備
data = [10, 20, 30, 40, 50, 60, 70, 80, 90, 100]

# 50パーセンタイル(中央値)を求める
p50 = np.percentile(data, 50)

print("50パーセンタイル:", p50)

実行結果:

50パーセンタイル: 55.0

この例では、リスト data に対して50パーセンタイル(つまり中央値)を求めています。NumPyは自動的に値を補間して計算してくれます。

2-3. 複数のパーセンタイルを同時に求める

# 25パーセンタイル、50パーセンタイル、75パーセンタイルを求める
percentiles = np.percentile(data, [25, 50, 75])
print("四分位数:", percentiles)

実行結果:

四分位数: [32.5 55.  77.5]

このように、リストで複数のパーセンタイルを一度に指定することも可能です。四分位数(Q1, Q2, Q3)を確認する際によく使われるパターンです。

 

3. よくある使い方・応用例

3-1. 外れ値(アウトライア)の検出に使う

データの上位・下位何%に当たるかを使って、極端に小さいまたは大きい値(外れ値)を検出することができます。

# 外れ値の検出
Q1 = np.percentile(data, 25)
Q3 = np.percentile(data, 75)
IQR = Q3 - Q1  # 四分位範囲

# 外れ値の条件
lower_bound = Q1 - 1.5 * IQR
upper_bound = Q3 + 1.5 * IQR

print("外れ値の下限:", lower_bound)
print("外れ値の上限:", upper_bound)

実行結果:

外れ値の下限: -30.0  
外れ値の上限: 140.0

この方法は箱ひげ図の計算でもよく使われます。データ分析や前処理においてとても役立ちます。

3-2. 機械学習前のスケーリング処理

MinMaxスケーリングでは最大値・最小値を使いますが、外れ値の影響を避けるために、5パーセンタイル〜95パーセンタイルの間で正規化する方法もあります。

# 5〜95パーセンタイルの間でスケーリング
p5 = np.percentile(data, 5)
p95 = np.percentile(data, 95)

scaled_data = [(x - p5) / (p95 - p5) for x in data]

print("スケーリング後のデータ:", scaled_data)

実行結果:

スケーリング後のデータ: [0.0, 0.10526315789473684, ..., 1.0]

このようにパーセンタイルを用いたスケーリングは、特に実務のデータ前処理でよく使われます。

 

4. 注意点・エラー対策

4-1. 空のリストを渡すとエラーになる

データが空のときは ValueError になります。事前にチェックしましょう。

empty = []

try:
    result = np.percentile(empty, 50)
except ValueError as e:
    print("エラー:", e)

実行結果:

エラー: cannot do a non-empty take from an empty axes.

4-2. dtypeの違いに注意

整数型の配列でも補間によって小数が返る点に注意してください。必要に応じて astype(int) などで丸め処理を加えましょう。

 

5. まとめ

この記事では、numpy.percentile() を使って、Pythonでパーセンタイルや分位点を求める方法を解説しました。基本的な使い方に加えて、外れ値検出やデータ前処理への応用など、実務的な場面も紹介しました。

  • パーセンタイルとは、全体の中での位置づけを示す指標
  • numpy.percentile() で簡単に求められる
  • 四分位数・外れ値・スケーリングなど多用途に活用可能

実務でも「この数値は全体のどの位置にあるのか?」という分析は非常に重要です。パーセンタイルの理解と活用は、データ分析・機械学習・統計処理すべての基礎となるので、ぜひマスターしておきましょう。

タイトルとURLをコピーしました