Dokumentasinya mengatakan:
http://pandas.pydata.org/pandas-docs/dev/basics.html
"Nilai kontinu dapat dipisahkan menggunakan fungsi cut (nampan berdasarkan nilai) dan qcut (nampan berdasarkan jumlah sampel)"
Kedengarannya sangat abstrak bagi saya ... Saya dapat melihat perbedaannya pada contoh di bawah ini, tetapi apa sebenarnya arti / arti qcut (sample quantile)? Kapan Anda akan menggunakan qcut versus cut?
Terima kasih.
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]]`
Jawaban:
Untuk memulai, perhatikan bahwa kuantil hanyalah istilah paling umum untuk hal-hal seperti persentil, kuartil, dan median. Anda menentukan lima tempat sampah dalam contoh Anda, jadi Anda bertanya
qcut
kuintil.Jadi, saat Anda meminta kuintil dengan
qcut
, nampan akan dipilih sehingga Anda memiliki jumlah record yang sama di setiap nampan. Anda memiliki 30 record, jadi harus memiliki 6 record di setiap bin (keluaran Anda akan terlihat seperti ini, walaupun breakpoint akan berbeda karena penarikan acak):Sebaliknya, karena
cut
Anda akan melihat sesuatu yang lebih tidak seimbang:Itu karena
cut
akan memilih tempat sampah untuk diberi jarak yang sama sesuai dengan nilai itu sendiri dan bukan frekuensi nilai tersebut. Karenanya, karena Anda menggambar dari normal acak, Anda akan melihat frekuensi yang lebih tinggi di nampan dalam dan lebih sedikit di nampan luar. Ini pada dasarnya akan menjadi bentuk tabel dari histogram (yang Anda harapkan berbentuk lonceng dengan 30 rekaman).sumber
cut
atau Anda mungkin lebih peduli tentang yang tertinggi 5% dan gunakanqcut
sumber
Jadi qcut memastikan distribusi nilai yang lebih merata di setiap bin bahkan jika mereka mengelompok di ruang sampel. Ini berarti Anda cenderung tidak memiliki satu bin penuh data dengan nilai yang sangat dekat dan bin lain dengan nilai 0. Secara umum, ini pengambilan sampel yang lebih baik.
sumber
Pd.qcut mendistribusikan elemen-elemen dari sebuah array untuk membuat pembagian berdasarkan ((jumlah elemen dalam array) / (jumlah bin - 1)), kemudian bagi sebanyak ini tidak. elemen secara berurutan di setiap nampan.
Pd.cut mendistribusikan elemen dari sebuah array untuk membuat pembagian berdasarkan ((elemen pertama + terakhir) / (no. Of bins-1)) dan kemudian mendistribusikan elemen sesuai dengan rentang nilai di mana mereka berada.
sumber