如何用大熊猫切成相同大小的垃圾箱?

问题描述 投票:-3回答:1

在熊猫自己的cut方法文档中,它说它会产生大小相等的垃圾箱。但是,在他们提供的示例中,显然没有:

>>>pd.cut(np.array([1, 7, 5, 4, 6, 3]), 3)

[(0.994, 3.0], (5.0, 7.0], (3.0, 5.0], (3.0, 5.0], (5.0, 7.0], ...
Categories (3, interval[float64]): [(0.994, 3.0] < (3.0, 5.0] ...

第一个间隔大于所有其他间隔,那是为什么?

编辑:即使数组中的最小数字(1)大于1(例如1.001),它仍然会产生宽度不相等的bin:

In [291]: pd.cut(np.array([1.001, 7, 5, 4, 6, 3]), 3)    
Out[291]: 
[(0.995, 3.001], (5.0, 7.0], (3.001, 5.0], (3.001, 5.0], (5.0, 7.0], (0.995, 3.001]]
Categories (3, interval[float64]): [(0.995, 3.001] < (3.001, 5.0] < (5.0, 7.0]]
python pandas
1个回答
1
投票
For the kind of performance you get,我可以忍受这种程度的不精确度。但是,如果您知道自己的数据并希望尽可能接近均匀分布的仓位,则对仓位规格使用linspace(类似于here):

arr = np.array([1, 7, 5, 4, 6, 3]) pd.cut(arr, np.linspace(arr.min(), arr.max(), 3+1), include_lowest=True) # [(0.999, 3.0], (5.0, 7.0], (3.0, 5.0], (3.0, 5.0], (5.0, 7.0], (0.999, 3.0]] # Categories (3, interval[float64]): [(0.999, 3.0] < (3.0, 5.0] < (5.0, 7.0]]

© www.soinside.com 2019 - 2024. All rights reserved.