文件说:
http://pandas.pydata.org/pandas-docs/dev/basics.html
"连续值可以使用切割(基于值的箱子)和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]] …Run Code Online (Sandbox Code Playgroud) 有没有办法构建Pandas groupby和qcut命令返回一个具有嵌套切片的列?具体来说,假设我有2组数据,我希望qcut应用于每个组,然后将输出返回到一列.这类似于MS SQL Server的ntile()命令,允许Partition by().
A B C
0 foo 0.1 1
1 foo 0.5 2
2 foo 1.0 3
3 bar 0.1 1
4 bar 0.5 2
5 bar 1.0 3
Run Code Online (Sandbox Code Playgroud)
在上面的数据框中,我想将Qcut函数应用于B,同时在A上进行分区以返回C.
如何在python中使用pd.qut创建新的Bin/Bucket变量?
这对于有经验的用户来说可能看起来很简单,但我对此并不十分清楚,在堆栈溢出/谷歌搜索时出乎意料地不直观.一些彻底的搜索产生了这个(qcut作为新列的分配),但它没有完全回答我的问题,因为它没有采取最后一步并将所有内容放入箱(即1,2,......).