1. ホーム
  2. python

[解決済み] NumpyでIQRを求めるには?

2023-05-11 12:13:06

質問

Numpy/Scipyで四分位範囲を求める関数はありますか? 自分では結構簡単にできるのですが mean() が存在しますが、これは基本的に sum/len ...

def IQR(dist):
    return np.percentile(dist, 75) - np.percentile(dist, 25)

どのように解決するのですか?

np.percentile は複数のパーセンタイル引数を取るので、少しはマシになります。

q75, q25 = np.percentile(x, [75 ,25])
iqr = q75 - q25

または

iqr = np.subtract(*np.percentile(x, [75, 25]))

を2回呼び出すよりも percentile :

In [8]: x = np.random.rand(1e6)

In [9]: %timeit q75, q25 = np.percentile(x, [75 ,25]); iqr = q75 - q25
10 loops, best of 3: 24.2 ms per loop

In [10]: %timeit iqr = np.subtract(*np.percentile(x, [75, 25]))
10 loops, best of 3: 24.2 ms per loop

In [11]: %timeit iqr = np.percentile(x, 75) - np.percentile(x, 25)
10 loops, best of 3: 33.7 ms per loop