Pandas用定制的百分位切割记录

2024-04-20 07:03:19 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个pandas数据帧,其中有一列连续变量。我需要将它们转换成3个bin,这样第一个bin包含值<;20%,第二个在20和80%之间,最后一个是大于80%。在

我试图通过首先得到这些百分位的垃圾箱边界,然后使用pandas-cut函数来实现它。问题是我得到了一个奇怪的结果,只得到中间的bin编码。请参见以下内容:

test = [x for x in range(0,100)]
a = pd.DataFrame(test)

np.percentile(a, [20, 80])
Out[52]: array([ 19.8,  79.2])

pd.cut(a[0], np.percentile(a[0], [20, 80]))

...
15             NaN
16             NaN
17             NaN
18             NaN
19             NaN
20    (19.8, 79.2]
21    (19.8, 79.2]
22    (19.8, 79.2]
...
78    (19.8, 79.2]
79    (19.8, 79.2]
80             NaN

为什么会这样?我认为熊猫切割需要你提供你想要的垃圾箱的边界。提供2个边界,我应该得到3个箱子,但似乎不这样做。在


Tags: 数据函数testltpandas编码forbin
1条回答
网友
1楼 · 发布于 2024-04-20 07:03:19

如果你需要3个箱子,那么你需要4个休息时间。。在

test = [x for x in range(0,100)]
a = pd.DataFrame(test)
np.percentile(a, [0,20, 80,100])
Out[527]: array([ 0. , 19.8, 79.2, 99. ])
pd.cut(a[0], np.percentile(a[0], [0,20, 80,100]))

另外,在熊猫中我们有qcut,这意味着你不需要从numpy那里得到垃圾箱

^{pr2}$

相关问题 更多 >