pandas.qcut と pandas.cut の違いは何ですか? 質問する

pandas.qcut と pandas.cut の違いは何ですか? 質問する

ドキュメントには次のように書かれています:

パンダスの基本

「連続値は、cut (値に基づくビン) および qcut (サンプルの分位数に基づくビン) 関数を使用して離散化できます。」

私には非常に抽象的に聞こえます...以下の例で違いがわかりますがqcut (サンプル クォンタイル) は実際には何を実行し、何を意味していますか? qcut と cut はいつ使用すればよいですか?

ありがとう。

factors = np.random.randn(30)

In [11]:
pd.cut(factors, 5)
Out[11]:
[(-0.411, 0.575], (-0.411, 0.575], (-0.411, 0.575], (-0.411, 0.575], (0.575, 1.561], ..., (-0.411, 0.575], (-1.397, -0.411], (0.575, 1.561], (-2.388, -1.397], (-0.411, 0.575]]
Length: 30
Categories (5, object): [(-2.388, -1.397] < (-1.397, -0.411] < (-0.411, 0.575] < (0.575, 1.561] < (1.561, 2.547]]

In [14]:
pd.qcut(factors, 5)
Out[14]:
[(-0.348, 0.0899], (-0.348, 0.0899], (0.0899, 1.19], (0.0899, 1.19], (0.0899, 1.19], ..., (0.0899, 1.19], (-1.137, -0.348], (1.19, 2.547], [-2.383, -1.137], (-0.348, 0.0899]]
Length: 30
Categories (5, object): [[-2.383, -1.137] < (-1.137, -0.348] < (-0.348, 0.0899] < (0.0899, 1.19] < (1.19, 2.547]]`

ベストアンサー1

まず、四分位数は、パーセンタイル、四分位数、中央値などの最も一般的な用語であることに注意してください。例では 5 つのビンを指定しているので、qcut五分位数を求めていることになります。

したがって、 で五分位数を求めるとqcut、各ビンに同じ数のレコードが含まれるようにビンが選択されます。レコードは 30 個あるので、各ビンには 6 個あるはずです (出力は次のようになりますが、ランダムな抽出によりブレークポイントは異なります)。

pd.qcut(factors, 5).value_counts()

[-2.578, -0.829]    6
(-0.829, -0.36]     6
(-0.36, 0.366]      6
(0.366, 0.868]      6
(0.868, 2.617]      6

逆に、cutもっと不均一なものが見えるでしょう。

pd.cut(factors, 5).value_counts()

(-2.583, -1.539]    5
(-1.539, -0.5]      5
(-0.5, 0.539]       9
(0.539, 1.578]      9
(1.578, 2.617]      2

これは、cutビンを値自体に基づいて均等に間隔をあけて選択し、頻度これらの値の。したがって、ランダム正規分布から抽出したため、内側のビンでは頻度が高く、外側のビンでは頻度が低くなります。これは基本的に、ヒストグラムの表形式になります (30 レコードでかなりベル型になることが予想されます)。

おすすめ記事