Python pandasでパーセンタイル・分位数を簡単に取得する方法 – quantile関数の使い方

Pythonのデータ解析ライブラリpandasを使用して、パーセンタイルや分位数を簡単に取得する方法を解説します。

pandasを使用してデータ解析を行っているのですが、特定のパーセンタイルや分位数を取得する方法が分かりません。どのようにすれば取得できるのでしょうか?

quantile関数を使用してパーセンタイルや分位数を取得することができます。

目次

パーセンタイルと分位数の概要

パーセンタイルとは、データを昇順に並べた場合に、何%に位置するかを示す指標のことです。

例えば、あるテストの成績があった場合、上位25%の学生が何点以上を取ったのか、ということを調べたい場合にパーセンタイルを用いることができます。50%のパーセンタイルは中央値を示し、25%、75%のパーセンタイルはそれぞれ1/4、3/4に位置するデータを示します。

一方、分位数とは、データを等分割したときの境界となる値のことです。

例えば、データを4分割する場合、25%、50%、75%の位置に分位数があります。また、2分割する場合は、50%の位置に中央値があります。分位数は、データの分布を理解するために使用されることが多く、データを分割するためにも利用されます。

pandasのquantile関数の使い方

pandasのquantile関数を使用することで、指定したパーセンタイルや分位数に位置するデータを簡単に取得することができます。quantile関数は、SeriesまたはDataFrameオブジェクトに対して使用することができます。

quantile関数の引数には、取得したいパーセンタイルや分位数の値を指定します。引数の設定によって、取得するデータの数や範囲を変更することができます。例えば、25%から75%の範囲のデータを取得したい場合は、下記のように引数を設定します。

df.quantile(q=[0.25, 0.75])

また、quantile関数では、引数のqを指定することで、複数のパーセンタイルを一度に取得することもできます。引数のqにリストを指定することで、複数のパーセンタイルの値を取得できます。

df.quantile(q=[0.25, 0.5, 0.75])

quantile関数は、デフォルトで中央値を取得するため、50%のパーセンタイルを指定する必要はありません。しかし、パーセンタイル以外の値を取得する場合には、引数の設定が必要になります。

df.quantile(q=0.9)  # 90%のパーセンタイルを取得

これらのように、quantile関数を使用することで、簡単に目的のデータを取得することができます。

サンプルプログラムを使った解説

以下のサンプルプログラムでは、pandasを用いてランダムに生成された100個のデータを使用し、25%、50%、75%のパーセンタイルを取得します。

import pandas as pd
import numpy as np

# 100個のランダムな値を生成
data = np.random.randint(low=0, high=100, size=100)

# pandasのSeriesオブジェクトに変換
s = pd.Series(data)

# quantile関数を使用して25%、50%、75%のパーセンタイルを取得
print(s.quantile(q=[0.25, 0.5, 0.75]))

このプログラムでは、NumPyのrandint関数を使用して0から99の範囲で100個のランダムな整数値を生成し、pandasのSeriesオブジェクトに変換しています。次に、quantile関数を使用して25%、50%、75%のパーセンタイルを取得しています。quantile関数の引数qには、リスト[0.25, 0.5, 0.75]を指定しているため、取得するパーセンタイルの値が指定されています。

このプログラムを実行すると、以下のような結果が表示されます。

0.25    25.0
0.50    49.5
0.75    70.0
dtype: float64

これは、25%、50%、75%のパーセンタイルに位置する値がそれぞれ25.0、49.5、70.0であることを示しています。

このように、quantile関数を使用することで、簡単に指定したパーセンタイルに位置するデータを取得することができます。

グラフでの結果の可視化

quantile関数で取得した結果をグラフ化することで、分布の形状や範囲を可視化することができます。

以下は、先程のサンプルプログラムを使用して、quantile関数で取得した25%、50%、75%のパーセンタイルをグラフ化したプログラムの例です。

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

# 100個のランダムな値を生成
data = np.random.randint(low=0, high=100, size=100)

# pandasのSeriesオブジェクトに変換
s = pd.Series(data)

# quantile関数を使用して25%、50%、75%のパーセンタイルを取得
p = s.quantile(q=[0.25, 0.5, 0.75])

# 結果をグラフ化
plt.boxplot(s)
plt.scatter(p.index+1, p.values, color='red')
plt.title('Boxplot with Quantiles')
plt.xlabel('Data')
plt.ylabel('Value')
plt.show()

このプログラムでは、matplotlibのboxplot関数を使用して、データの分布を箱ひげ図で表示しています。quantile関数で取得した25%、50%、75%のパーセンタイルには、赤色の点でマーキングしています。

このプログラムを実行すると、以下のようなグラフが表示されます。

箱ひげ図
箱ひげ図

このグラフからは、データの分布が50点付近にピークがあり、左右に広がっていることがわかります。また、25%、50%、75%のパーセンタイルがそれぞれどの位置にあるのかも可視化されています。

このように、quantile関数で取得したデータをグラフ化することで、データの分布を直感的に理解することができます。

まとめ

Pythonのデータ解析ライブラリpandasを使用して、パーセンタイルや分位数を簡単に取得する方法を解説しました。

  • パーセンタイルと分位数は、データ解析において重要な指標である。
  • pandasのquantile関数を使用することで、簡単に指定したパーセンタイルや分位数に位置するデータを取得することができる。
  • quantile関数の引数qには、取得したいパーセンタイルや分位数の値を指定する。
  • quantile関数を使用することで、目的のデータを簡単に取得できる。
  • 取得したデータをグラフ化することで、データの分布を可視化することができる。

quantile関数を使用することで、データ解析が簡単にできることがわかりました。サンプルプログラムが参考になりました。また、結果をグラフ化することで、直感的に理解することができることがわかりました。

pandasのquantile関数を使用してパーセンタイルや分位数を取得する方法を解説しました。quantile関数を使うことで、データ解析が簡単になり、正確な情報を取得することができます。また、取得したデータをグラフ化することで、データの分布を直感的に理解することができます。

これらの知識を身につけ、より効率的かつ正確なデータ解析を行うことができるようになりましょう。

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

コメント

コメントする

CAPTCHA


目次