PythonのPandasのqcut関数について

Python,イメージ

AI実装検定のご案内

Pandasのqcut関数について、基本的な役割から実用的な使い方、注意点まで詳しく解説します。

目次

qcutとは?

pandas.qcutは、数値データを「分位数(quantile)」に基づいて区間分割する関数です。

つまり、データを等しい割合になるようにビン分け(binning)します。

  • cutは値の範囲に基づいて「等幅」に分割するのに対し、
  • qcutはデータの分布に基づいて「等しい数の要素」を持つビンに分けます。
import pandas as pd

# データ準備
data = [7, 15, 36, 39, 45, 72, 83, 88, 95, 100]

# 4分位数に分割
result = pd.qcut(data, 4)
print(result)

この場合、データは4分位数に分けられ、それぞれのビンに同じ数のデータが入ります。

基本的な構文

import pandas as pd

data = [7, 15, 36, 39, 45, 72, 83, 88, 95, 100]

# 4分位数に分けて、整数ラベルを付与
result = pd.qcut(data, 4, labels=False)
print(result)

引数の意味

  • x: 分割対象の配列やSeries。
  • q:
    • 分割する数(例:4なら四分位数)、
    • または分位数のリスト(例:[0, 0.25, 0.5, 0.75, 1.0])。
  • labels:
    • False → 区間のインデックス番号を返す。
    • Trueまたはリスト → 区間にラベルをつける。
  • retbins:
    • Trueにすると、分割に使った境界値も返す。
  • precision: ビンの端点の小数点精度。
  • duplicates:
    • 分位数が重なって同じ境界になる場合の扱い。
    • 'raise'(デフォルト)ならエラー、'drop'なら重複を無視して区間を減らす。

使用例

四分位数で分割

import pandas as pd

data = [7, 15, 36, 39, 45, 72, 83, 88, 95, 100]
result = pd.qcut(data, 4, labels=False)
print(result)

ラベルをカスタム

labels = ['低', '中低', '中高', '高']
result = pd.qcut(data, 4, labels=labels)
print(result)

境界値も確認する

cats, bins = pd.qcut(data, 4, retbins=True)
print(cats)
print(bins)

cutとの違い

関数分割方法適したケース
cut値の範囲を「等間隔」で分ける値のスケールが重要な場合(例:0〜100を10刻み)
qcutデータを「等しい数の要素」に分けるデータの順位・分布を考慮したい場合(例:上位25%を抽出)

実用例

顧客を購買金額でセグメント化

import pandas as pd

# 顧客ごとの購買金額データ
df = pd.DataFrame({
    'customer': list('ABCDEFGHIJ'),
    'purchase': [200, 500, 1500, 700, 3000, 400, 1200, 900, 2500, 600]
})

# 4分位に分割してラベルを付与
df['rank'] = pd.qcut(df['purchase'], 4, labels=['低額', '中低額', '中高額', '高額'])
print(df)

RFM分析や顧客セグメンテーションなどに便利。

注意点

  • データに重複が多い場合:同じ値が境界に集まると、分位数の区切りがうまくいかない場合がある。そのときはduplicates='drop'を検討。
  • 外れ値がある場合qcutは分布に基づくので、極端な値に影響されにくい(cutよりも外れ値耐性がある)。
  • カテゴリ化の意味qcutの結果はカテゴリ型(Categorical)で返されるので、集計やグループ化と相性が良い。

まとめるとqcutは「データを分布に基づいて均等にグループ化したいとき」に使う強力な関数で、顧客分析・スコア分布の分位分類・統計的解析の前処理などで非常に役立ちます。

以上、PythonのPandasのqcut関数についてでした。

最後までお読みいただき、ありがとうございました。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次