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() で簡単に求められる
- 四分位数・外れ値・スケーリングなど多用途に活用可能
実務でも「この数値は全体のどの位置にあるのか?」という分析は非常に重要です。パーセンタイルの理解と活用は、データ分析・機械学習・統計処理すべての基礎となるので、ぜひマスターしておきましょう。