[解決済み] pandas.qcutとpandas.cutの違いは何ですか?
2022-10-05 02:59:51
質問
ドキュメントにはこう書かれています。
http://pandas.pydata.org/pandas-docs/dev/basics.html
cut (値に基づくビン) および qcut (サンプル分位数に基づくビン) 関数を使用して連続値を離散化することができます。
とても抽象的に聞こえますが...。下の例のような違いはわかるのですが qcut (sample quantile)は実際に何をするのか、何を意味するのか?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]]`
どのように解決するのですか?
まず始めに、分位数とは、パーセンタイル、四分位数、中央値のようなものの最も一般的な用語であることに注意してください。 あなたの例では 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 個のレコードでかなりベル型になることが予想されます)。
関連
-
[解決済み] for'ループでインデックスにアクセスする?
-
[解決済み] staticmethodとclassmethodの違いについて
-
[解決済み] Pythonのリストメソッドであるappendとextendの違いは何ですか?
-
[解決済み] パラメータに**(ダブルスター/アスタリスク)、*(スター/アスタリスク)がありますが、これはどういう意味ですか?
-
[解決済み】if __name__ == "__main__": は何をするのでしょうか?
-
[解決済み】__str__と__repr__の違いは何ですか?
-
[解決済み】venv, pyvenv, pyenv, virtualenv, virtualenvwrapper, pipenvなどの違いは何ですか?
-
[解決済み】type()とisinstance()の違いは何ですか?)
-
[解決済み] 範囲指定された浮動小数点数のランダムな配列を生成します。
-
[解決済み] あるオブジェクトが数であるかどうかを確認する、最もパイソン的な方法は何でしょうか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] Django のテストデータベースをメモリ上だけで動作させるには?
-
[解決済み] Pythonのargparseを使った隠し引数の作成
-
[解決済み] Django Rest Framework ファイルアップロード
-
[解決済み] Ctrl-CでPythonスクリプトを終了できない
-
[解決済み] Python Logging でログメッセージが2回表示される件
-
[解決済み] CSVデータを処理する際、1行目のデータを無視する方法を教えてください。
-
[解決済み] djangoのQueryDictをPythonのDictに変更するには?
-
[解決済み] Pythonの辞書にあるスレッドセーフについて
-
[解決済み] pipの依存性/必要条件をリストアップする方法はありますか?
-
[解決済み] Pythonでリストが空かどうかをチェックする方法は?重複