Pandas Series.quantile() 関数

Pandas 常用函数Pandas でよく使う関数


Series.quantile()Pandas Series.quantile() 関数は、Series の分位数を計算するための Pandas の関数です。分位数は、順序付けられたデータをいくつかの等しい部分に分ける値であり、四分位数(25%、50%、75%)、中央値(50%)などがよく使われます。

分位数はデータ分布を説明する重要な指標であり、データの分布形状を理解し、外れ値を識別するのに役立ちます。統計分析、成績ランキング、収入分析などのシーンで広く応用されています。


基本構文とパラメータ

quantile()Series オブジェクトのメンバー関数であり、ドット演算子を使用して直接呼び出します。

構文形式

Series.quantile(q=0.5, interpolation='linear', numeric_only=True, closed='both')

パラメータの説明

パラメータ 型 説明 デフォルト値
q float または array-like 分位数の値。範囲は0から1です。単一の値または複数の値のリストを指定できます。 0.5
interpolation str 分位数が2つの値の間にある場合の補間方法です。選択可能な値:'linear'、'lower'、'higher'、'nearest'、'midpoint'。 'linear'
numeric_only bool True の場合、数値型データのみを計算します。 True
closed str DataFrame で使用し、区間の閉じ方を決定します。Series ではあまり使用されません。 'both'

戻り値

    • 戻り値の型:float 或 Series
    • 説明指定された分位数の値を返します。q が単一の値の場合は float を返し、q がリストの場合は Series を返します。

    実例

    一連の簡単から複雑な例を通して、徹底的にSeries.quantile()その使い方をマスターしましょう。

    例1:基本用法 - 中央値の計算

    中央値は50%分位数であり、最もよく使われる分位数です。

    実例

    import pandas as pd

    # 学生の成績を含む Series を作成する
    scores = pd.Series([65, 70, 72, 75, 78, 80, 82, 85, 88, 90, 92, 95])

    print("学生の成績:")
    print(scores)
    print()

    # 中央値(50%分位数)を計算する
    median_score = scores.quantile(0.5)

    print(f"中央値:{median_score}")
    print(f"median() 関数を使用:{scores.median()}")
    print()
    print("分析:50%の学生の成績は80点以下です。")

    実行結果:

    学生成绩:
    0    65
    1    70
    2    72
    3    75
    4    75
    5    80
    6    80
    7    85
    8    88
    9    90
    10    92
    11    95
    dtype: int64
    
    中位数:80.0
    
    中位数(使用 median() 函数):80.0
    

    コードの解説:

    • quantile(0.5)と同等ですmedian()。
    • 中央値はデータを2つに分け、50%のデータは中央値以下になります。

    例2:四分位数の計算

    四分位数はデータを4等分します:25%、50%、75%。

    実例

    import pandas as pd

    # 従業員の収入を含む Series を作成する
    income = pd.Series([3000, 3500, 3800, 4000, 4200, 4500, 5000, 5500, 6000, 8000, 15000])

    print("従業員の月収データ(元):")
    print(income)
    print()

    # 3つの四分位数を計算する
    q1 = income.quantile(0.25)   # 第1四分位数(25%)
    q2 = income.quantile(0.50)   # 第2四分位数/中央値(50%)
    q3 = income.quantile(0.75)   # 第3四分位数(75%)

    print(f"第1四分位数 Q1(25%):{q1} 元")
    print(f"第2四分位数 Q2(50%):{q2} 元")
    print(f"第3四分位数 Q3(75%):{q3} 元")
    print()

    # 四分位範囲(IQR)を計算する
    iqr = q3 - q1
    print(f"四分位範囲 IQR:{iqr} 元")
    print()

    print("分析:")
    print("- 25%の従業員の収入は4000元以下です")
    print("- 50%の従業員の収入は5000元以下です")
    print("- 75%の従業員の収入は6000元以下です")
    print("- IQRが大きいほど、データがより分散していることを示します")

    実行結果:

    员工月收入数据(元):
    1    3000
    2    低于 3800
    3    4000
    4    4200
    5    4500
    6    5000
    7    5500
    8    6000
    9    8000
    10   15000
    dtype: int64
    
    Q1(25% 分位):4000.0 元
    Q2(50% 分位):5000.0 元
    Q3(75% 分位):6000.0 元
    
    四分位距 IQR = 6000 - 4000 = 2000 元
    

    例3:複数の分位数を同時に計算する

    複数の分位数を一度に計算できます。

    実例

    import pandas as pd

    # データを作成する
    data = pd.Series([10, 20, 30, 40, 50, 60, 70, 80, 90, 100])

    print("データ:")
    print(data)
    print()

    # 複数の分位数を計算する
    percentiles = data.quantile([0, 0.1, 0.25, 0.5, 0.75, 0.9, 1.0])

    print("各分位数:")
    print(percentiles)
    print()

    # 分位数はパーセント文字列でも指定できます(単一の値のみ)
    print(f"文字列 '50%' を使用:{data.quantile('50%')}")
    print(f"文字列 '0.5' を使用:{data.quantile(0.5)}")

    実行結果:

    数据:
    0     10
    1     20
    2     30
    3     40
    4     50
    量值:60
    5     70
    6     80
    7     90
    8    100
    dtype: int 参数
    
    多个分位数:
    0.00    10.0
    0.10    19.0
    0.25    32.5
    0.50    50.0
    0.75    67.5
    0.90    81.0
    1.00   100.0
    dtype: float64
    

    例4:interpolationパラメータの役割

    分位数が2つの値の間にある場合、異なる補間方法によって異なる結果が得られます。

    実例

    import pandas as pd

    # 6つの要素を含む Series を作成する
    data = pd.Series([10, 20, 30, 40, 50, 60])

    print("データ:", data.values)
    print()

    # 30%分位数を計算する(20と30の間にある)
    # 位置 = (n-1) * q = 5 * 0.3 = 1.5
    print("30%分位数、異なる補間方法を使用:")

    linear = data.quantile(0.3, interpolation='linear')
    print(f"linear(線形補間、デフォルト): {linear}")

    lower = data.quantile(0.3, interpolation='lower')
    print(f"lower(小さい方を取る): {lower}")

    higher = data.quantile(0.3, interpolation='higher')
    print(f"higher(大きい方を取る): {higher}")

    nearest = data.quantile(0.3, interpolation='nearest')
    print(f"nearest(最も近い値を取る): {nearest}")

    midpoint = data.quantile(0.3, interpolation='midpoint')
    print(f"midpoint(中間値を取る): {midpoint}")

    実行結果:

    数据:[10, 20, 30, 40, 50, 60]
    位置计算:(n-1) * q = 5 * 0.3 = 1.5,表示在 20 和 30 之间
    
    不同插值方法的结果:
    - linear(线性插值,默认):23.0
    - lower(向下取整):20.0
    - higher(向上取整):30.0
    - nearest(最近邻):20.0
    - midpoint(中间值):25.0
    

    コードの解説:

    • interpolation='linear':2つの値の間で線形補間を行い、20 + (30-20)*0.5 = 23 となります。
    • interpolation='lower':インデックスが小さい方の値、つまり20を取ります。
    • interpolation='higher':インデックスが大きい方の値、つまり30を取ります。
    • interpolation='nearest':分位数の位置に最も近い値を取ります。
    • interpolation='midpoint':2つの値の中間値、つまり (20+30)/2 = 25 を取ります。

    例5:分位数を使用して外れ値を識別する

    四分位範囲(IQR)は、データ内の外れ値を識別するためによく使用されます。

    実例

    import pandas as pd

    # 外れ値を含むデータを作成する
    data = pd.Series([12, 15, 18, 20, 22, 25, 28, 30, 32, 150])

    print("データ(外れ値を含む):")
    print(data)
    print()

    # 四分位数を計算する
    q1 = data.quantile(0.25)
    q3 = data.quantile(0.75)
    iqr = q3 - q1

    # 外れ値の境界を計算する
    lower_bound = q1 - 1.5 * iqr
    upper_bound = q3 + 1.5 * iqr

    print(f"Q1(25%):{q1}")
    print(f"Q3(75%):{q3}")
    print(f"IQR:{iqr}")
    print()
    print(f"正常値の下限:{lower_bound}")
    print(f"正常値の上限:{upper_bound}")
    print()

    # 外れ値を識別する
    outliers = data[(data  upper_bound)]
    print(f"外れ値:{outliers.values}")
    print()

    print("分析:150は明らかな外れ値であり、上限を超えています。")

    実行結果:

    数据(含异常值):
    3     150
    4     22
    5     25
    6     28
    7     30
    8     32
    9    150
    dtype: int64
    
    Q1(25%):18.75
    Q3(75%):30.25
    IQR = 11.5
    
    正常值下界:1.5
    正常值上界:47.5
    异常值:150
    
    分析:150 明显超出了正常范围,是一个异常值。
    

    注意事項

    • 分位数の値の範囲は0から1です。
    • デフォルトでは線形補間(linear)メソッドを使用して分位数を計算します。
    • q がリストの場合、戻り値は Series であり、単一の値ではありません。
    • 分位数はデータ内の外れ値を識別するために使用でき、一般的な方法は IQR ルール(四分位範囲の1.5倍)です。
    • 大量のデータに対して、分位数の計算効率は非常に高いです。

    まとめ

    Series.quantile()データ分布を分析するための重要な関数です。その主な特徴は次のとおりです。

    • 任意の分位数(0から1の間)の計算をサポートします。
    • 複数の分位数を一度に計算できます。
    • 複数の補間方法を提供し、さまざまなニーズに対応します。
    • 外れ値の識別に非常に役立ちます。

    実際のデータ分析では、分位数はデータの分布形状を理解し、異なるデータセットを比較し、外れ値を識別するためによく使用されます。箱ひげ図と組み合わせると、データ分布をより直感的に表示できます。

    Pandas 常用函数Pandas でよく使う関数

    その他の拡張